vim正则表达式将所有数字增加1

use*_*723 30 regex vim

我在java中有一个准备好的语句,我在前面添加了一个参数.长话短说,我必须采取大量的方法,并将他们的第一个参数增加1.

我想快速搜索并替换匹配所有数字,然后将它们递增1.

use*_*723 46

弄清楚了.

%s/\d\+/\=(submatch(0)+1)/g
Run Code Online (Sandbox Code Playgroud)

http://vim.wikia.com/wiki/Using_an_expression_in_substitute_command

  • 对.但是,不应该围绕整个表达方式的问题.`\ = submatch(0)+ 1`应该可以做到. (8认同)
  • 我还想提及它如何与捕获组一起使用: `%s/int i = \(\d\+\);/\='int i = '.(submatch(1)+1).' ;'/g` (4认同)

gpo*_*ojd 11

你需要知道的唯一正则表达式是\d.

:g/\d/exe "normal! \<C-A>"
Run Code Online (Sandbox Code Playgroud)

  • 你如何使这个全局化(就像`:s` 的`g` 修饰符)。另外,你需要转义你的`+` (3认同)
  • @Hritik上面接受的答案应该这样做:`:%s/\d\+/\=(submatch(0)+1)/g`。如果您只想要单行,请删除“%”,或者如果您想要特定范围的行,请将其更改为您想要的范围。例如,对于第 5-10 行,它将是 `:5,10s/\d\+/\=(submatch(0)+1)/g`。 (2认同)