Vim - 如何在所有缓冲区中运行非正常模式命令?

5

我需要在所有打开的缓冲区中运行这个命令 :perldo s/assigned_to(?!_member|_role)/assigned_to_member/g。我使用:perldo,因为内置的vim正则表达式(即%s/foo/bar/g)由于某种原因与我的负向预查不起作用。

通过我的研究,我发现了:bufdo:execute "normal <foo>"命令,但我还没有找出如何将它们组合使用。

有人知道我该如何在所有打开的缓冲区上运行perldo命令吗?谢谢!

1个回答

8

以下情况有哪些问题:

:bufdo! perldo s/assigned_to(?!_member|_role)/assigned_to_member/g

成功了!在 :bufdo 后面的 ! 是什么意思?这可能就是我所缺少的! - BenHohner
1
我建议在Vim中阅读:h bufdo!。如果你没有时间(咳咳):如果perldo失败了(无法替换任何缓冲区中的内容),则“正常”的:bufdo将“退出”。使用perldo命令会继续执行下一个缓冲区。 - Zsolt Botykai
1
感叹号可以强制执行某些操作(例如wq!),也可以作为切换开关。但这取决于命令。在这种情况下,对于bufdo命令,如果缓冲区无法被放弃,则该命令将失败。 - kprobst

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