1

(ここでの^Mは^V ^ M、ff = unixです)

s/^M*$/\^M/正常に動作します。任意の行で0-多くの^Mを1つの^Mに変換します。

しかし、これを「matchtext is here with more text ^ M ^ M ^ M」のような一致する行でのみ実行しようとするs/^matchtext.*\zs^M*$/\^M/と、機能せず、代わりに1つの^ Mが追加されますか?

.*私が理解していないのはここで の振る舞いであり、s/\zs^M*$/\^M/機能しますが、紹介するだけではs/.*\zs^M*$/\^M/機能しません。

魔法/魔法の問題?s/.\\*\zs^M*$/\^M/動作しているように見えますが、それでもs/matchtext.\\*\zs^M*$/^M/動作しません。

4

1 に答える 1

3

あなたは、あなたが一致するものを何も残さない.*すべての末尾を含むすべてに一致しています。また、一致する0インスタンスが許可されているため、何も一致しません。最初の欲望は2番目の欲望を支配します。^M^M****

これを修正するには、最初*の欲張りでない( )を作成できますが、次のようなコマンドを:help non-greedy使用する必要があると思います。:g

:g/^matchtext/s/^M*$/\^M/
于 2012-07-27T22:44:58.337 に答える