如何檢查選擇是否具有EOL空格,並且只有在存在EOL空格的情況下才刪除它們?只有在有選擇的情況下,才能刪除選擇的EOL空格
我需要刪除選擇的EOL空間以執行其他操作。
我想檢查是否有,但不知道如何做到這一點。
如何檢查選擇是否具有EOL空格,並且只有在存在EOL空格的情況下才刪除它們?只有在有選擇的情況下,才能刪除選擇的EOL空格
我需要刪除選擇的EOL空間以執行其他操作。
我想檢查是否有,但不知道如何做到這一點。
您可以使用e
國旗在:substitute
命令抑制錯誤。 所以eckes的建議,將成爲:
:'<,'>s/\ \+$//ge
然後任何錯誤都將被忽略,且腳本不會中斷。有關更多信息,請參見:help s_flags
。
如果你真的想檢查是否有尾隨空格,你可以嘗試使用像
if matchstr(getline("."),'\s\+$') == ""
" there is no trailing whitespace
else
" there is some trailing whitespace
endif
雖然選擇是活動的(可視化模式),簡單地鍵入
:s/\ \+$//g
在命令行上,這將成爲
'<,'>s/\ \+$//g
命中輸入,任務完成。
如果存在否尾隨空格,將會拋出錯誤(E486),但這沒有問題。
編輯1:
要確保你只適用於那裏真的是尾隨空白的出現替代,你可以前綴:s
通過:g
:
:g/\ \+$/s/\ \+$//g
訣竅:g
的一個缺點是它僅在與給定模式匹配的那些行上應用給定命令(s/\ \+$//g
)。
編輯2:
事情變得更短,as I recently learned:
:g/\s\+$/s///g
的東西,如果你正在尋找刪除所有空格,最短的命令很可能是
:%s/\s*$//
%適用於整個緩衝
小號替代
/\ S * $匹配任何空白,然後結束行
//空
王子燉牛肉,我添加了'e'標誌,但它仍然中止下一個操作(我刪除EOL空間後調用腳本)。 matchstr代碼只檢查當前行而不檢查整個選擇。 – Reman 2012-03-21 11:55:52
我犯了一個錯誤。我再次檢查。它使用'e'標誌正常工作。謝謝。 – Reman 2012-03-21 12:52:13