1. 2ステップの置換を使用して動作を達成することは難しくありません。
:,$s/BEFORE/AFTER/gc|1,''-&&
まず、現在の行からファイルの終わりまで、各行に対して置換コマンドが実行されます。
,$s/BEFORE/AFTER/gc
次に、:substitute
次のコマンドを使用して、同じコマンドを同じ検索パターン、置換文字列、フラグで繰り返します:&
(を参照:help :&
)。
1,''-&&
ただし、後者は、ファイルの最初の行から、前のコンテキストマークが設定されている行から1を引いた行までの範囲の行で置換を実行します。最初の:substitute
コマンドは実際の置換を開始する前にカーソル位置を保存するため、によってアドレス指定され ''
た行は、その置換コマンドが実行される前の現在の行でした。(''
アドレスは
'
疑似マークを参照しています。詳細については:help :range
、および:help ''
を参照してください。)
2番目のコマンド(|
コマンドセパレータの後-を参照:help :bar
)は、最初のコマンドで
パターンまたはフラグが変更されている場合、変更を必要としないことに注意してください。
2. 入力を減らすために、コマンドラインで上記の置換コマンドのスケルトンを表示するために、次のようにノーマルモードマッピングを定義できます。
:noremap <leader>cs :,$s///gc\|1,''-&&<c-b><right><right><right><right>
<c-b><right><right><right><right>
カーソルをコマンドラインの先頭(<c-b>
)に移動し、次に4文字を右(<right>
×4)に移動して、最初の2つのスラッシュ記号の間にカーソルを移動し、ユーザーが検索パターンの入力を開始できるようにするために、後続部分が必要です。。目的のパターンと置換の準備ができたら、を押して結果のコマンドを実行できます
Enter。
(上記のマッピングでは//
なく///
、パターンを入力したい場合は、右矢印を使用してカーソルを既存の分離スラッシュの先頭に移動するのではなく、分離スラッシュを入力し、その後に置換文字列を入力することを検討してください。交換部品)
\vpattern
-「非常に魔法の」パターン:英数字以外の文字は特別な正規表現記号として解釈されます(エスケープは不要)