2012-09-04 43 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

相關問題