8

一行で、Vimは検索パターンの最後の出現のみにどのように一致することができますか?欲張りではないようなものですが、最初からです。

例:次の行で、一致させたいTwinkle little star(太字で強調表示):

きらめき何とか何とか何とかきらめきリトルスター

次のようなネガティブ先読みを試しましたが、完全な行と一致しています。

Twinkle.*\(Twinkle\)\@!$
4

2 に答える 2

6

括弧をエスケープし、アンカーの前にワイルドカードの一致を追加します。

Twinkle\(.*Twinkle\)\@!.*$
       ^          ^    ^^
于 2012-11-09T05:25:55.953 に答える
2
/\v.*\zsTwinkle.*
  • 「。*」はすべてに貪欲に一致し、一致しなかった場合(場合によっては何も一致しなかった場合)にバックトラックします
  • 「\zs」は「一致の開始」を設定し、置換とカーソル配置に役立ちます
  • 残りはあなたが一致させたいものです

「:setincsearch」を使用して、テキストをバッファにロードし、パターンの入力を開始して、パターンがどのように適用されるかを確認します。

たとえば、バッファ:

Twinkle brightly little star
Twinkle brightly, Twinkle brightly little star

そして置換:

:%s/\v.*\zsTwinkle /&extra /

与える:

Twinkle extra brightly little star
Twinkle brightly, Twinkle extra brightly little star
于 2013-11-19T01:33:47.153 に答える