可以说我输入了以下内容
a + 1 =b and a+1=c
我还需要 2 个这样的表达式,但我想将 1 的值增加到 3,所以我将上面的表达式复制粘贴了 2 次并手动增加了 1,所以现在我的文件看起来像这样
a + 1 =b and a+1=c
a + 2 =b and a+2=c
a + 3 =b and a+3=c
有没有办法自动化这个?有点像搜索和替换,除了我必须搜索表达式而不是字符,因为1
写的是我不想更改的其他表达式。我想更改每行 1 的值。每个表达式都在一个新行上。
可以说我输入了以下内容
a + 1 =b and a+1=c
我还需要 2 个这样的表达式,但我想将 1 的值增加到 3,所以我将上面的表达式复制粘贴了 2 次并手动增加了 1,所以现在我的文件看起来像这样
a + 1 =b and a+1=c
a + 2 =b and a+2=c
a + 3 =b and a+3=c
有没有办法自动化这个?有点像搜索和替换,除了我必须搜索表达式而不是字符,因为1
写的是我不想更改的其他表达式。我想更改每行 1 的值。每个表达式都在一个新行上。
Vim 有一种方法可以自动增加一个数字:(
<c-a>
或Ctrla)在正常模式下。所以,使用宏,在 Vim 中构造一个递增的数字序列是相当容易的。从包含
a+ 1 =b and a+1=c
and 的行开始:^A
代表Ctrla按下。然后使用@q
重复宏。所以4@q
会产生:qq
启动宏 (q
) 保存在寄存器中q
。Y
拉出当前行(按行)p
粘贴,您最终会到达下一行(以前的当前行)的开头。<c-a>
您增加行中的第一个数字(并且光标移动到它)w<c-a>
),这次影响第二个数字。除了使用宏,您还可以使用查找和替换
yy2p
拉线并越过它两次:%s
开始搜索和替换\v\d+
搜索所有数字字符\=line('.')
计算线函数作为所有匹配项的替换另一种选择是
很难记住,但你不必猛拉、搜索或宏任何东西。从一个空缓冲区开始,您可以在一个命令中获得整个辣酱玉米饼馅。
许多 vim 发行版都带有内置的 Perl 支持。
如果是您的情况,您可以:
(我可能更改了示例中的空格...)