2011-07-20 17 views
3
:%s/[ ]*$//g 

squeeze> = 1の正規表現は、行末でスペースが1つではなく0になるのはなぜですか?各行の末尾の空白を削除するためのVim正規表現について

+0

私は、上記のコマンドを実行した後に ':%s/[] // g'を実行して末尾の空白を取り除くたびに実行します。 – haltTm

+0

私はあなたが私のvim(Mac Snow Leopard上で動作する)で提供した正規表現を試してみましたが、後ろにスペースはありませんでした。つまり、「*」を「+」に変更してみることができます( ""を ""と置き換える意味がないので)が、あなたには役立つかどうかは疑問です。 –

答えて

11

あなたのregexが動作します。実行した後、行の最後にスペースが残っていません。


:%s/[ ]\+$//gを使用した場合は、「残余」の増分ハイライトが表示されます。 - *の代わりに\+に注意してください。 *は常にがゼロスペースであっても増分ハイライトが残ります。

強調表示を削除するには、:noh(略語:nohlsearch)と入力します。

FYI::%s/[ ]*$//gは、:%s/ *$//gに相当します。

+1

ありがとうございます。それは本当に「残った」ハイライトです。それらは実際のスペースではありません。 – haltTm

+4

また、スペースを指定する別の方法は[]ではなく\ sで、タブとスペースの両方に一致します。また、1行に1つの置換しか行わないので、gオプションは必要ありません。 %s/\ s \ + $ // // gを追加しても怪我をすることはありません。そして、私はそれを常に習慣から外しています:) –

+0

@Neg 'g'についての良い点。私はいつもそうしていますが、厳密に言うとそれは余計です。 – Tomalak

関連する問題