gpt4 book ai didi

vim - 如何:bufdo only on modifiable buffers in vim?

转载 作者:行者123 更新时间:2023-12-04 15:55:26 24 4
gpt4 key购买 nike

有时我需要跨多个缓冲区进行替换。为此,我使用 :bufdo %s/old/new/gec。最近我注意到当缓冲区列表中有不可修改的缓冲区时命令失败(在我的例子中它是打开的文件资源管理器/netrw)。运行命令后,vim 给我留下了 E21: Cannot make changes, 'modifiable' is off 并打开了 Netrw 窗口。

:bufdo 的方法是否只适用于可修改的缓冲区?我已经尝试过 :bufdo!,但行为是一样的(只是没有显示错误)。

更新

我发现 .vimrc 的行造成了这个有问题的行为:

let g:netrw_liststyle=3

我不知道这里有什么魔力,但是当我设置这个选项时,建议的解决方案/命令都不适合我。现在,问题是如何保留这一行并使 :bufdo 行为跳过由 Netrw 创建的缓冲区。

最佳答案

好吧,如果 :bufdo sil! :%s/old/new/gec 对你不起作用(这会默默地忽略错误)。您需要将命令包装到 if 语句中。像这样:

:bufdo if &ma | :%s/old/new/gec | endif

它检查每个缓冲区,如果它是可修改的,然后才尝试用新的替换旧的。

注意:除了 'modifiable' 设置之外,您可能还想检查 'readonly' 选项。

关于vim - 如何:bufdo only on modifiable buffers in vim?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33666191/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com