7

最後のドットを除く行のすべてのドットを置き換える方法を探しています。

例:

Blah - whatever - foo.bar.baz.aviになる必要があります
Blah - whatever - foo bar bar.avi

ファイルには複数の行があり、ドットの数は行ごとに異なるため、「最初のXの一致を置き換える」のようなものではなく、Xが定数である一般的な解決策を探しています。

4

3 に答える 3

11

これはトリックを行うようです:

%s/\.\(.*\.\)\@=/ /g

\@=先読みです。次の終止符がある場合にのみ、終止符に一致します。

を参照してください:help zero-width

于 2012-06-03T13:05:48.357 に答える
6

最初の回答のバリエーションとして、次の構文を使用することをお勧めします。

%s/\.\ze.*\./ /g

検索演算子の後に次の終止符があるというアサーションを入れましょう。

于 2012-06-03T15:59:27.563 に答える
0

学習するのに役立つ可能性のある別の方法(視覚的な選択の内側を置き換える)は次のようになります。 ここで、、を入力します。
:g/^/normal $F.hv0:s/\%V\./ /g^M
^MCTRL-VEnter

つまり、各行(g/^/)タイプ$F.(最後のドットに移動)について、左の文字から行の先頭()まで視覚的に選択し、視覚的選択( )内でのみhv0ドット()を置き換えます。:s/\./ /g^M\%V

于 2012-06-06T08:16:37.260 に答える