選択範囲に EOL スペースがあるかどうかを確認し、ある場合にのみ削除するにはどうすればよいですか?
他の操作を行うために、選択範囲の EOL スペースを削除する必要があります。
あるか確認したいのですが、やり方がわかりません。
フラグ:substitute
を使用して、コマンドのエラーを抑制することができます。e
したがって、eckesの提案は次のようになります。
:'<,'>s/\ \+$//ge
その後、エラーは無視され、スクリプトは中断されません。詳細については、を参照:help s_flags
してください。
末尾にスペースがあるかどうかを本当に確認したい場合は、次のようなものを使用してみてください。
if matchstr(getline("."),'\s\+$') == ""
" there is no trailing whitespace
else
" there is some trailing whitespace
endif
すべての空白を削除しようとしている場合、最短のコマンドはおそらく
:%s/\s*$//
%バッファ全体に適用
s代わりの
/\s*$行末が後に続く任意の空白に一致
//一致を空に置き換えます
選択範囲がアクティブになっている間 (ビジュアル モード)、次のように入力します。
:s/\ \+$//g
コマンドラインでは、これは次のようになります
'<,'>s/\ \+$//g
ヒットEnter、ミッションコンプリート。
末尾にスペースがない場合、エラー (E486) がスローされますが、問題ありません。
編集 1:
末尾の空白が実際に発生する場合にのみ置換を適用することを確認するには、:s
byの前に付けることができ:g
ます。
:g/\ \+$/s/\ \+$//g
のトリック:g
は、指定されたコマンド ( s/\ \+$//g
) を、指定されたパターンに一致する行にのみ適用することです。
編集2:最近学んだように
、物事はさらに短くなります:
:g/\s\+$/s///g