我有一个非常大的文本文件,我在VIM中打开它,我需要将1添加到符合某些条件的数字。例如:
Comment 1
Comment 2
[p2,0,0,115]Live! ConcertGrand
[p2,2,104,5]Live! PopGrand
[p2,3,104,4]Live! RockPiano
[p2,4,104,3]Live! AmbientPiano
End of file.
我想转换它(通过在列表的第二个元素中添加1)来
Comment 1
Comment 2
[p2,1,0,115]Live! ConcertGrand
[p2,3,104,5]Live! PopGrand
[p2,4,104,4]Live! RockPiano
[p2,5,104,3]Live! AmbientPiano
End of file.
我怎样才能在vim中这样做?
我试过了:
%s/\[p\zs\d\+\(,\d\+\)\=/\=(1+str2nr(submatch(1)))/
但它不起作用。任何帮助将不胜感激。 CS
答案 0 :(得分:3)
你真的需要通过搜索和替换来做到这一点吗?因为有内置的加法和减法功能。
:h CTRL-A
CTRL-A:将[count]添加到光标处或之后的数字或字母字符。
{Visual} CTRL-A:将[count]添加到突出显示文本中的数字或字母字符。 {不在Vi}
所以你基本上可以在你的数字列上使用VISUAL-BLOCK选择,然后按CTRL-A
,它会为所有数字加1
如果它更复杂,你可以使用宏