Vim 搜索和替换每行仅替换一次 (:%s/search/replace)
Vim Search and Replace only replaces one occurrence each line ( :%s/search/replace )
当我搜索和替换一个字符串时,它只会替换每一行的第一个匹配项:
1,4 -> 1,4 : a
1,4 --> 2 : b
1,4 --> 6 : c
:%s/,/_
1_4 -> 1,4 : a
1_4 --> 2 : b
1_4 --> 6 : c
为什么会这样?如何替换所有出现的事件?
为什么这是 vim 中的默认行为?
TL;DR: :%s/search/replace/g
这是搜索和替换工作的预期方式::<range>s/<search>/<replace>[/g]
。您提供一个范围、搜索字符串和替换字符串。最后,您可以选择指定 /g 来替换每行中出现的所有内容。
如果这不是您想要的默认行为,您也可以在 .vimrc 中更改它:set gdefault
。这会将搜索和替换更改为始终存在 /g 标志,或者更好地说,反转 g 标志。这意味着如果您只需要替换一行中出现的一个,请再次添加 /g。
https://www.linux.com/training-tutorials/vim-tips-basics-search-and-replace/
当我搜索和替换一个字符串时,它只会替换每一行的第一个匹配项:
1,4 -> 1,4 : a
1,4 --> 2 : b
1,4 --> 6 : c
:%s/,/_
1_4 -> 1,4 : a
1_4 --> 2 : b
1_4 --> 6 : c
为什么会这样?如何替换所有出现的事件? 为什么这是 vim 中的默认行为?
TL;DR: :%s/search/replace/g
这是搜索和替换工作的预期方式::<range>s/<search>/<replace>[/g]
。您提供一个范围、搜索字符串和替换字符串。最后,您可以选择指定 /g 来替换每行中出现的所有内容。
如果这不是您想要的默认行为,您也可以在 .vimrc 中更改它:set gdefault
。这会将搜索和替换更改为始终存在 /g 标志,或者更好地说,反转 g 标志。这意味着如果您只需要替换一行中出现的一个,请再次添加 /g。
https://www.linux.com/training-tutorials/vim-tips-basics-search-and-replace/