如果我使用 :vimgrep,它会搜索当前目录下的所有文件。但我的要求是在所有打开的文件中搜索/替换。
例如我正在使用 vim 同时打开 3 个文件
vim 1.cpp 2.cpp 3.cpp
我希望:
在所有 3 个文件中搜索所有名为“main”的函数并显示在 QuickFix 窗口中。
将所有 3 个文件中的所有“hello”替换为“world”。
使用命令:
bufdo %s/字符串/替换/g
bufdo:对所有缓冲区执行操作。
s : 替换
g : 全球.
如果您的 Vim 足够新,您可以使用
:cdo
命令:
:vimgrep main {1,2,3}.cpp
:cwindow
:cdo s/foo/bar/g
根据您在 vim 中处理多个文件的方式(选项卡、窗口等),您可以使用不同的命令在多个文件中搜索和替换:
:tabdo
(所有选项卡):windo
(当前选项卡中的所有窗口):bufdo
(所有缓冲区,即使用 :ls
命令列出的所有缓冲区):argdo
(参数列表中的所有文件):cdo
(快速修复列表中列出的所有文件)首先用vim标签页打开多个文件:
$ vim -p file1.txt file2.txt
然后在vim中,您可以使用以下命令在多个文件中搜索和替换:
:tabdo %s/pattern/replace/gc
我使用了以下对我有用的命令。顺序使用此命令。
:set autowriteall
:bufdo! %s/pattern/replace/g
您可以使用命令模式。 %s/(查找字符串)/(替换字符串)