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/