vim:如何在所有打开的文件中搜索/替换?

Hin*_*sum 2 vim search buffer replace list

如果我使用 :vimgrep,它会搜索当前目录下的所有文件。但我的要求是在所有打开的文件中搜索/替换。

例如,我使用 vim 同时打开 3 个文件

vim 1.cpp 2.cpp 3.cpp
Run Code Online (Sandbox Code Playgroud)

我希望:

  1. 在所有 3 个文件中搜索所有名为“main”的函数并显示在 quickfix 窗口中。

  2. 将所有 3 个文件中的所有“hello”替换为“world”。

小智 15

使用命令:

bufdo s/字符串/替换/g

bufdo:对所有缓冲区执行的操作。
s:
全局替换g:。

  • 在我这边行不通。您必须在“s”之前使用“%”符号(例如`bufdo %s/baseString/updatedString/g`)来搜索所有缓冲区/文件的所有行中的出现情况。 (3认同)

rom*_*inl 6

如果您的 Vim 足够新,您可以使用以下:cdo命令:

:vimgrep main {1,2,3}.cpp
:cwindow
:cdo s/foo/bar/g
Run Code Online (Sandbox Code Playgroud)