使うことができます
:5,12s/foo/bar/g
5行目と12行目の間で検索しfoo
て置き換えるbar
にはどうすればよいですか?5行目と12行目だけで(その間の行ではなく)それを行うにはどうすればよいですか?
回答:
5行目で置換を実行し、12行目で最小限の労力でそれを繰り返すことができます。
:5s/foo/bar
:12&
インゴが指摘したように、:&
あなたの旗を忘れています。を使用している/g
ので、正しいコマンドは次のようになります:&&
。
:5s/foo/bar/g
:12&&
:help :&
と友達を参照してください。
:&
を使用するための+1 。フラグ(s/../../g
)がある場合は、使用する必要:&&
がありますが...
\(\%5l\|\%12l\)
はより曖昧だと思います:&
いつでもc
最後にを追加できます。これにより、すべての試合の確認が求められます。
:5,12s/foo/bar/gc
g
フラグが使用されていることに注意してください)
n
、5〜6回押すこと\(\%5l\|\%12l\)
は、代替ステートメントに追加するよりも面倒です。
興味深い質問です。範囲の選択のみがあり、複数行の選択はないようです。
http://vim.wikia.com/wiki/Ranges
ただし、5行目と12行目に何か特別なものがある場合は、:g
演算子を使用できます。ファイルが次のようになっている場合(参照用の番号のみ):
1 line one
2 line one
3 line one
4 line one
5 enil one
6 line one
7 line one
8 line one
9 line one
10 line one
11 line one
12 enil one
そして、あなたが交換したいone
でeno
ありますラインのenil
代わりにline
:
:g/enil/s/one/eno/
ed
viやvimと同様のコマンドを備えた行指向のテキストエディタを使用できます。それはおそらくviとvimよりも前のものです。
スクリプト(EndCommandマーカーまで入力を処理するヒアドキュメントを使用)では、次のようになります。
ed file <<EndCommands
5
s/foo/bar/g
7
s/foo/bar/g
wq
EndCommands
もちろん、edコマンドはコマンドラインでも使用できます。
vim
代替案に勝る利点は見当たりません。
:s
、それでも:s
コマンドの重複があります(romainlのソリューションはこれを回避します)。
sed
しかし、私の好みは...