ファイル全体FOOを置き換えたい状況がありました。BARただし、68 ~ 104 行、500 ~ 537 行、1044 ~ 1195 行の間など、特定の場所でのみ実行したいと考えています。ma実際には、関心のある行に ( 、mb、mcなどを介して) マーカーをドロップし、次のコマンドを実行しました。
:'a,'b s/FOO/BAR/g | 'c,'d s/FOO/BAR/g | 'e,'f s/FOO/BAR/g
これを検索語や置換語などを変えて何十回も繰り返さなければならずs/CAT/DOG、そのたびにコマンドラインを書き直すのが面倒でした。検索を限定する必要がある場所が 3 つしかなかったという点で、私は幸運でした (30 または 40 がある場合、コマンド ラインがどれほど混乱するか想像してみてください)。
関数を書く以外に、これを行うためのより良い方法はありますか?
関連メモで。 (検索)レジスタにコピーFOOし、 (置換)にコピーして実行してみましたsBARr
:'a,'b s/\=@s/\=@r/ | 'c,'d s/\=@s/\=@r/ | 'e,'f s/\=@s/\=@r/
これにより、毎回コマンド ラインを書き直す必要がなくなりましたが、残念ながら、うまくいきませんでした。置換ビット \=@rは問題あり \=@sませんでしたが、検索パターンのビットでエラーが発生しました。
ヒントをいただければ幸いです。