Vim:在所有可写缓冲区中搜索替换

7
所以
1GvG:s/..../g

可以替换整个缓冲区

然而,假设我加载了多个vim缓冲区,并且我想在所有可写的缓冲区上执行:s命令,有没有一种方法在vim中实现这个功能?


2
顺便说一下,你可以直接对整个缓冲区执行“%s”。 - Brian Rasmussen
谢谢你的提问!这一直是我心中的疑问(但并不是太令人困扰,否则我也会在这里问)。 - Adriano Varoli Piazza
3个回答

15

由于我无法留下评论,我将重申Brian所说的话并添加我的意见。

我相信你正在寻找的命令是:

:bufdo :%s/..../g | :w

注意:这将在更改后写入每个文件,因此请确保您已准备就绪。

如果启用了自动写入(autowrite),则应该能够删除命令末尾的“| :w”。


至少在我的vim(7.2,Ubuntu)中,如果您不想在更改时进行写操作,则可以将“|:w”从图像中删除。 - Adriano Varoli Piazza
1
有一个专门介绍此事的vim维基页面:http://vim.wikia.com/wiki/Search_and_replace_in_multiple_buffers,其中提供了更多关于尾随“| :w”选项的信息。 - R. Martinho Fernandes
1
@AdrianoVaroliPiazza 在 vim 中不需要 | :w,但在 vi 中则需要。 - Mark Booth

4

看一下bufdo。还有windotabdo。请记住,默认情况下Vim不会自动写入,因此在跨缓冲区进行搜索/替换命令时,您需要打开autowrite。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接