8

我有几个实例想要执行以下操作

在文件中:

1234

将光标放在第一个数字上,我想使用 Ctrl-A 来增加数字,以便我得到

2234

代替

1235

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

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

  1. 带前导和尾随空格的环绕数字
  2. Ctrl-A 递增
  3. 删除前导和尾随空格

像这样,然后映射到一个键?

4

2 回答 2

9

与大多数 vim 命令一样,增量函数采用前导数字。 1000 ctrl+a2234如你所愿返回。如果您的所有号码都是 4 位数字,那么这将起作用。或者您可以使用r2which 将光标下的当前字符替换为 a 2,但这可能过于具体。

如果你需要你的脚本,你可以录制一个宏。

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

分解:

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

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

h- 移回号码

ctrl+a- 添加一个

lx向右移动并删除空间。

您不需要添加前导空格,因为正如您注意到的那样,该ctrl+a函数作用于整个数字,并且总是加 1。

于 2012-07-24T14:10:20.943 回答
4

你可以这样做s<C-r>=<C-r>"+1<Enter>

然后,您可以将其映射到其他东西,例如nnoremap g<C-a> s<C-r>=<C-r>"+1<cr>(您需要使用在此法线贴图Ctrl-vCtrl-r中插入s)。<C-r>

一步步:

s - 删除光标下的字符并开始插入

<C-r>=- 开始表达式评估。

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

有关这些的更多信息,请参见 :help i_CTRL-r。

+1<Enter>- 将值加 1 并完成命令。

于 2012-07-24T14:24:28.737 回答