使用 :bufdo 命令时如何防止更改缓冲区?

Hub*_*bro 5 vim

此命令替换我所有缓冲区中的一些文本:

:bufdo %s/some_text/other_text/ge | update
Run Code Online (Sandbox Code Playgroud)

运行此命令时,当前窗口的缓冲区将更改为受 影响的最后一个缓冲区:bufdo,如下所示:help :bufdo

最后一个缓冲区(或发生错误的地方)变成
当前缓冲区。

我知道可以防止缓冲区被更改,但我不记得如何做到。

Ben*_*Ben 8

您可以在运行命令之前保存当前缓冲区,然后在以下命令后跳转到它:

:let buf=bufnr('%') | exec 'bufdo some_command' | exec 'b' buf
Run Code Online (Sandbox Code Playgroud)


Ing*_*kat 2

我的ArgsAndMore 插件有一个:Bufdo替代方案:bufdo,可以返回原始缓冲区(以及类似的变体:argdo等)