vimでは、行の最初の数件の一致を置き換える機会がある場合がありますが、すべてのユーザーがそうするわけではありませんg
。例えば:
a a a a a
に
b b b a a
私はを使用できることを知っていますが:s/a/b/[enter]:[up][enter]:[up][enter]
、3回の繰り返しでは十分に退屈です。
私はもう試した:
:s/a/b/3g
:vimが末尾の文字について不平を言いました。:s/a/b/3
:この最初の出現と、それに続く2行を変更します。3:s/a/b
:前と同じ。:s/a/b/g3
:これと次の2行のすべての出現箇所を変更します。:3s/a/b
:3行目の最初の出現箇所を変更します。:/a/,3/a/s/a/b
:ファイルにa
含まa
れる次の行と3番目の行の間の各行の最初の出現を変更します(必要に応じて反転するように要求します)。:/a/,/\([^a]*a\)\{3\}/s/a/b/
:これと次の行の間の各行の最初の出現箇所を3a
秒で変更します(これは、複数文字の検索に簡単に拡張できなかったでしょう)。
その他のさまざまなアドレス指定パターンがあり、どれも機能しませんでした。:s
この問題の答えを見つけようとするコマンドについてはかなりのことを学びましたが、まだ解決していません。
誰でもこれを行う方法を知っていますか?
(特定の範囲のボーナスポイント、たとえば2番目から4番目の出現)
n
、.
ここではそれらを使用するつもりはありませんでした。確かに改善に感謝します。
s/a/=something/
トリック(:help sub-replace-=
)を実行する必要があります。私はVimで流暢に書くのに十分な流暢ではありませんsomething
。
:[up][enter]
はで置き換えることができますが&
、これはまだ理想的ではありませんが、少なくとも痛みは少なくなります。