2013-05-13 16 views
2

我試圖執行搜索/與前腳本替換(針對VIM的前執行),像這樣:如何在不等待用戶輸入的情況下處理前腳本中的錯誤?

ex -qc 'g/^[#][[:space:]]*$/d|x' file.txt 

然而,當file.txt已經不包含匹配的內容,腳本掛起;當沒有-q運行,它另外顯示錯誤如下:

E486: Pattern not found: ^[#][[:space:]]*$ 

如何建立這個腳本繼續失敗(或更好,中止並立即退出),而不是等待用戶輸入?

由於可移植性限制(就地編輯支持是sed的GNU擴展,並且在所有平臺上不可用),我使用ex來支持sed -i

+0

您可以嘗試在整行而不是'd'上執行替換。它可以讓你使用'/ e'標誌。 – romainl 2013-05-13 16:05:40

回答

3

發送VIM與-c 'q'一個單獨的退出命令,該命令後,查找/替換它將執行(可在我的vim版本7.3.315):

ex -c 'g/^[#][[:space:]]*$/d|x' -c 'q' file.txt 

還要注意ex出現的順序來執行命令,這它們出現在ARGV中,因此:

ex -c 'q' -c 'g/^[#][[:space:]]*$/d|x' file.txt 

在執行搜索/替換之前退出。

相關問題