如何将 Vim 中每行开头的空格数量减半?

2023-12-04

有人可以告诉我如何在 Vim 中执行与此映射相反的操作:

nnoremap <leader>iw :let _s=@/<Bar>:let _s2=line(".")<Bar>:%s/^\s*/&&/ge<Bar>:let @/=_s<Bar>:nohl<Bar>exe ':'._s2<CR>

作为澄清:此映射加倍(&&部分)每行开头的空白字符数。 仅第一个常规字符之前的空格受到影响。 当前搜索字符串保持不变(通过_s多变的)。 在此转换后,光标位置将恢复(通过_s2多变的)。

所以,基本上,我正在寻找一种映射,如果它们相继执行,该映射将撤消此映射。

我无法弄清楚如何限制这个新操作仅适用于第一个常规字符之前的空白。


以下替代命令反转其效果 使前导空白加倍的对应项。

:%s/^\(\s*\)\1/\1/

为此命令构建的映射需要遵循相同的 模式与问题中使用的模式相同(替换除外) 当然要执行)。为了减少定义中的重复,一 可以将状态保存代码分成一个小函数:

nnoremap <silent> <leader>>    :call PinnedCursorDo('%s/^\s*/&&/')<cr>
nnoremap <silent> <leader><lt> :call PinnedCursorDo('%s/^\(\s*\)\1/\1/')<cr>

function! PinnedCursorDo(cmd)
    let [s, c] = [@/, getpos('.')]
    exe a:cmd
    let @/ = s
    call setpos('.', c)
endfunction
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 Vim 中每行开头的空格数量减半? 的相关文章

  • 在Vim中,如何删除单词的后缀?

    在vim中 在正常模式下 如果光标位于单词中 而不是最后一个字母 de从光标位置删除单词的后缀 如果光标位于最后一个字母上 x也这样做 同时de会跳到下一个单词的末尾 您将使用什么命令在这两种情况下都有效 无论最后一个字母与否 目的是将命令
  • 如何在会话自动加载的同时在 vim 中打开文件?

    我在 vimrc 中有以下代码 可以在 vim 启动时自动保存 加载会话 Session saving Automatically save rewrite the session when leaving Vim augroup leav
  • Vim langmap 中断插件 (bépo)

    我正在使用 b po 键盘映射 http bepo fr http bepo fr 并寻求完美的 vim 映射 So far I used a long list of noremap http bepo fr wiki Vim B C3
  • 有没有办法在 Vim 中映射 Ctrl 句点和 Ctrl 逗号?

    我似乎找不到绘制地图的方法
  • 插件 (vim-latex) 在启动时导致 gVim 崩溃

    我正在尝试使用在 Windows XP 上使用 gVim 但是一旦我打开 tex 文件 或者一旦我set ft tex gVim 崩溃且没有可见的错误消息 控制台 vim 中不会发生崩溃 我已经按照设置说明进行了操作 据我所知 并且我尝试禁
  • 在 VIM 中缩进文件夹中的所有文件

    我有一个包含数百个 TTL TeraTermLanguage 文件的文件夹 现在我想缩进所有这些文件 我已经创建了用于缩进的 teraterm vim 并使用 VIM 打开一个文件并执行 gg G 整个文件得到了正确的缩进 但是有什么方法可
  • 如何在 Vim 中从命令行模式复制文本?

    比如说 我刚刚在 Vim 中运行了这个命令 nmap
  • Vim 中的空格作为制表符和退格键行为

    在我的 vimrc 中我有 set shiftwidth 4 set tabstop 4 set expandtab 当我点击 Tab 按钮时 设置为使用 4 个空格而不是 Tab 但是当我在 Tab 之后按退格键时 我需要退格所有 4 个
  • 带有 Viper 和 Vimpulse 的 Emacs 缺少哪些 Vim 功能?

    Emacs 的一些重要功能在 Vim 中是缺失的 例如 comint 模式 并且没有脚本 插件可以替代它们 与 Emacs 相比 Vim 也有一些优点 例如模式编辑和通常更好的默认快捷键 然而 Viper 模式让我两者兼而有之 Vimpul
  • 运行 tmux 时映射箭头键

    这些键映射在 tmux 中停止工作 在我的 vimrc 我有 nmap
  • 使用 vim 重构目录中的类/方法/字符串的有效方法

    到目前为止 我一直在使用查找和替换操作手动重构代码 s stringiwanttoreplace newstring g in vim 但这是一个缓慢而费力的过程 如果我有的话字符串我想更换在特定目录内的许多文件中 我当前 典型的缓慢而费力
  • 在键盘快捷键上插入预定义文本

    我经常插入binding pry当我调试我的 ruby 文件时 当我使用 Vim 时 我希望将其自动化 以避免每次都重新输入 我怎样才能做到呢 我想要映射的确切顺序是 插入新行 Insert binding pry到新创建的行 返回正常模式
  • 禁用 VIM 中的警告?

    有没有办法禁用 VIM 中的警告 特别是 当文件从只读变为可写时 我想禁用警告 12 我有一个脚本可以打开文件进行编辑 但 vim 认为文件已更改并发出警告 Thanks 我的 vimrc 中有以下内容 你应该只需要第二个 它将消息回显到状
  • 使用 vim pythoncomplete 的 Python 文档字符串不显示我自己的类函数的换行符

    我在尝试使用时得到了一些意想不到的结果Python 全方位补全 http www vim org scripts script php script id 1542在我自己的类函数上 函数的文档字符串未正确设置换行符格式 如下图所示 当我从
  • Vim 脚本中的“reduce”函数

    Vim 脚本有一些非常基本的函数式编程工具 It has map and filter 但据我所知它缺乏reduce 功能 Reduce https en wikipedia org wiki Fold 28higher order fun
  • VIM 始终使用选项卡式页面

    我想要一个可以放入 vimrc 文件中的命令 该命令将使 vim 始终以选项卡式页面模式打开 而无需传递 p在命令行上 有这样的命令吗 如果没有 是否有更好的方法来做到这一点 目前 我正在使用 alias vi vim p 在我的 bash
  • 尝试安装已安装 vimballPlugin 的 vimball

    我想安装这个plugin http www vim org scripts download script php src id 16854 所以首先我提取 zip 的内容 然后执行以下操作 vim camelcasemotion vba
  • 如何在 Vim 中创建行号和文本之间的边框

    我希望在行号右侧和文本左侧有一条细边框线 您可以使用不同的颜色来突出显示LineNr 例如 hi LineNr cterm bold ctermbg gray ctermfg black gui bold guibg gray guifg
  • MacVim:跨窗口共享命名寄存器?

    我想跨 MacVim 窗口共享命名寄存器缓冲区 就像我在单个实例中跨缓冲区一样 换句话说 假设我标记了一个位置 m 然后去其他地方 我将一些文本拉入寄存器 a 从当前点到 m a m 然后我转到另一个窗口 不 我不是指同一窗口中的另一个分割
  • 如何在 vim 中覆盖 ~/.vim 和 ~/.vimrc 路径(但不能覆盖其他路径)?

    假设我有一个所有 vim 配置的 tarball 通常在 vim 中的所有内容 插件 自动加载 颜色 所有这些东西 和一个 vimrc 文件 我将其提取到某个目录中 所以在我所在的目录 PWD 中 有一个 vim 文件夹和一个 vimrc

随机推荐

  • 从下拉菜单中选择选项时的事件处理

    我有一个表单 其中我必须从下拉菜单中选择一个项目并在表单上显示所选值 下拉菜单中的值来自数据库 这是我的选择代码
  • 将列表中的所有字符串转换为整数[重复]

    这个问题在这里已经有答案了 如何将列表中的所有字符串转换为整数 1 2 3 1 2 3 Given xs 1 2 3 Use map then list获取整数列表 list map int xs 在Python 2中 list是不必要的
  • 如何在 Hibernate 中使用 Oracle XMLTYPE

    在 Oracle 数据库中 其中一列的类型为 XMLTYPE 在我的应用程序中 我想保留数据并使用 Hibernate 我在 hibernate 中映射 XMLTYPE 做了以下操作 定义实现 UserType 的自定义用户类型 自定义用户
  • QT的QList在容器修改后是否保存迭代器?

    在对 QList 执行任何删除操作后 指向 QList 元素的迭代器是否仍然有效 我需要从 QList 中删除一些元素 因此我将这些元素的迭代器存储到另一个容器中 然后使用此保存的迭代器从 QList 中删除必要的元素 它看起来像这样 in
  • 创建所有可能组合的算法

    我正在编写一个备用网格代码 需要将 N 个一维网格点 以向量形式编写 组合成所有可能点的数组 例如 可以将两个向量 a b 与 c d e 混合 给出以下点 a c a d a e b c b d b e Matlab有一个函数叫做comb
  • 使用 git 版本控制系统锁定二进制文件

    一年半以来 我一直关注 git 社区 希望能够摆脱 SVN 阻碍我的一个特殊问题是无法锁定二进制文件 在过去的一年里 我还没有看到这个问题的进展 我知道锁定文件违反了分布式源代码控制的基本原则 但我不知道 Web 开发公司如何在可能存在二进
  • 在 Inno Setup 中终止 32 位 Windows 上的安装

    我正在使用 Inno Setup 如果 Windows 版本是 32 位 有人可以告诉我如何终止安装吗 或者更具体地说 当安装开始时 代码会检查 Windows 版本是否为 32 位并显示警告 然后取消安装 完全终止安装的命令是什么 我正在
  • Swift,对于某些 UIView,单击时会连接到其整体控制器

    我有一个DotBoss UIViewController 场景中有十几个UIView Dot UIView 有些是直接子视图 有些则位于更下方 甚至还有容器视图在最高控制器和点项目之间的链中 十几个点项目知道它们是否被点击 class Do
  • 隐藏和显示 Django HTML 模板中的元素

    我有 2 个按钮orders and suppliers 并希望在单击相应按钮时在 Django Web 应用程序中显示数据 去做这个my home html好像
  • opencv cmake警告含义:CMakeLists.txt:1066(包含)

    我现在正在从源头构建opencv4 1 0 with cmake3 13 cmake 配置给出了一条警告消息 CMake Warning at cmake OpenCVGenSetupVars cmake 54 message CONFIG
  • 如何将 Column.isin 与列表一起使用?

    val items List a b c sqlContext sql select c1 from table filter c1 isin items collect foreach println 上面的代码抛出以下异常 Except
  • 表是“只读”的

    当我想执行一个update在我的桌子上查询时出现错误 1036 桌子data是只读的 我该如何解决这个问题 表属性在 var db mysql被设置为777 修复表 功能似乎没有帮助 我能做点什么吗 就我而言 mysql配置文件有innod
  • 如何将子类的向量传递给需要父类向量的函数?

    我可以将 Child 传递给需要 Parent 的成员函数 但是在使用向量时 我收到编译错误 提示没有匹配的声明 请参阅底部的 CorrelationEngineManager cpp 对 getUniqueLabels 的调用 服务器事件
  • MKPinAnnotationView:是否有超过三种颜色可用?

    根据 Apple 文档 MKPinAnnotationView 引脚颜色有红色 绿色和紫色可供选择 还有什么办法可以得到其他颜色吗 我在文档中没有找到任何内容 多一点 和原来的 和代码 MKAnnotationView mapView MK
  • 平均库存历史表

    我有一个表格 用于跟踪某些商店和产品的库存随时间的变化 该值是绝对库存 但我们仅在库存发生变化时插入新行 这种设计是为了保持表较小 因为预计它会快速增长 这是一个示例架构和一些测试数据 CREATE TABLE stocks id seri
  • DbAcl::check() - 权限检查中 ARO/ACO 节点查找失败。

    我正在使用 cakephp 并使用 acl 但我面临这个错误 DbAcl check Failed ARO ACO node lookup in permissions check 感谢帮助 您可能已向控制器添加了操作 但未更新aco桌子
  • CSS 属性中“auto”值的含义是什么?

    是什么意思autoCSS 属性的值 当 CSS 属性的值设置为时会发生什么auto 上述财产的价值已调整自动地根据元素的内容或上下文 例如 一个块级元素height auto随着包含更多文本 它会变得更高 再举一个例子 一个块元素margi
  • 安装后运行 kubectl 命令 Helm

    我想运行一些kubectl用于验证 Helm 图表的集群安装后的命令 我找不到与此相关的任何文档 在 Helm 中 存在将注释显示为一部分的概念NOTES txt但看起来您不能在该阶段运行任何命令 目前 Helm 无法做到这一点吗 您可以定
  • 将 morgan 与 logger 一起使用时,stream.write 不是一个函数

    基本上我正在尝试使用摩根和温斯顿为nodejs实现记录器 当我尝试使用 morgan 时 抛出stream write 错误不是一个函数 因为我想获取文件名 所以我传递模块 从模块对象有一个名为文件名的属性 下面是我的代码 温斯顿 js c
  • 如何将 Vim 中每行开头的空格数量减半?

    有人可以告诉我如何在 Vim 中执行与此映射相反的操作 nnoremap