我有一个文本文件,其中每一行都是这样的:
abcd123efgh[4]
abcd456efgh[5]
abcd789ijkl[6]
abcd101efgh[7]
abcd123efgh[8]
我想使用vi编辑器为[]里面的所有数字添加一个常量。 例如,如果常量为15,我想将上面的行更改为:
abcd123efgh[19]
abcd456efgh[20]
abcd789ijkl[21]
abcd101efgh[22]
abcd123efgh[23]
我找到了
https://stackoverflow.com/questions/10420797/vim-regex-increment-all-numbers-by-1
更改文件中的所有数字,但无法使解决方案仅适用于某些数字 感谢
答案 0 :(得分:0)
您可以使用ctrl + a(\<C-a>
)序列来增加行中找到的下一个数字。
因此,如果您将光标放在[
上,则可以键入15,然后按ctrl + a,它会在[]
内的数字上加15。
如果你想对你文件的[]中的所有数字的行为使用它,你可以这样做:
:g/\v\[[0-9]+\]/execute "normal f[15\<C-a>"
因此,您使用global来在多行上执行命令。
正则表达式\v\[[0-9]+\]
定义了受影响的行。
其中\v
是一个代表非常神奇的修饰符(使用真正的正则表达式语法)
然后我们正在搜索[]
中的任何数字。
如果我们找到这样的行,将执行以下命令:
execute "normal f[15\<C-a>"
execute
函数主要用于使ctrl + a与序列\<C-a>
成为可能。
normal
代表在vim正常模式下执行命令。
f[
找到该行中的下一个[
符号。
最后,如前所述,我们使用15\<C-a>
增加了15次。