Vim命令只在数字字符串中的光标位置增加数字位数?

时间:2012-07-24 14:07:07

标签: vim

我有几个实例,我想做以下

在档案中:

1234

当光标位于第1位时,我想使用Ctrl-A增加数字以便我得到

2234

而不是

1235

是否有内在的vim命令来执行此操作?

否则,我应该设置一个快速脚本:

  1. 带有前导和尾随空格的环绕数字
  2. Ctrl-A增量
  3. 删除前导和尾随空格
  4. 像这样,然后映射到一个键?

2 个答案:

答案 0 :(得分:8)

增量函数采用大多数vim命令的前导数字。 1000 ctrl+a会像您想要的那样返回2234。如果您的所有数字都是4位数字,那么这将有效。或者您可以使用r22替换光标下的当前字符,但这可能过于具体。

如果您需要脚本,可以录制宏。

qaa[space][esc]h[ctrl+a]lx

细分:

qa - 开始录制q宏并保存到注册a

a[space][esc] - 在数字后面添加一个空格

h - 返回号码

ctrl+a - 添加一个

lx向右移动并删除空格。

您不需要添加前导空格,因为您注意到ctrl+a函数作为整体对数字起作用,并且总是会加1。

答案 1 :(得分:4)

您可以s<C-r>=<C-r>"+1<Enter>执行此操作。

然后您可以将其映射到其他内容,例如nnoremap g<C-a> s<C-r>=<C-r>"+1<cr>(您需要使用 Ctrl-v Ctrl-r 来插入{{ 1}}在这个法线贴图中。)

一步一步:

<C-r> - 删除光标下的字符并开始插入

s - 开始表达评估。

<C-r>= - 将未命名寄存器的内容放入

  

请参阅:帮助i_CTRL-r获取更多相关信息。

<C-r>" - 将值加1并完成命令。