为符合某些条件的数字添加常量

时间:2017-05-19 05:14:51

标签: regex vim

我有一个非常大的文本文件,我在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

1 个答案:

答案 0 :(得分:3)

你真的需要通过搜索和替换来做到这一点吗?因为有内置的加法和减法功能。

:h CTRL-A
  

CTRL-A:将[count]添加到光标处或之后的数字或字母字符。

     

{Visual} CTRL-A:将[count]添加到突出显示文本中的数字或字母字符。 {不在Vi}

所以你基本上可以在你的数字列上使用VISUAL-BLOCK选择,然后按CTRL-A,它会为所有数字加1

如果它更复杂,你可以使用宏