2012-09-04 42 views
5

我需要在所有打开的缓冲区中运行此命令:perldo s/assigned_to(?!_member|_role)/assigned_to_member/g。我使用的是:perldo,因为内建的vim正则表达式(即%s/foo/bar/g)由于某种原因不适合我的负面预测。Vim - 如何在所有缓冲区中运行非正常模式命令?

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

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

回答

8

出了什么问题:

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

这工作! '':''后':bufdo'做什么?这可能是我错过的! – BenHohner

+1

我推荐在Vim中阅读':h bufdo!'。如果你没有时间(khm):如果'perldo'失败(不能取代任何缓冲区中的任何内容)“normal”:bufdo'“退出”。用'!''perldo'命令继续下一个缓冲区。 –

+1

感叹号或者强制某些东西(例如'wq!')或者用作切换开关。但这取决于命令。在这种情况下,对于'bufdo',如果缓冲区不能被放弃,那么该命令将失败。 – kprobst

相关问题