
たとえば、vi エディターで、today という単語が 8 行含まれたファイルが作成されますが、once コマンドを使用して 4 行を yesterday という単語に変更するにはどうすればよいでしょうか。
答え1
ファイルの内容に作用するほとんどの ex コマンド (つまり、:
(コロン) を押してからコマンド名を押すことで呼び出されるコマンド) では、コマンドの前に範囲を指定できます。この範囲は、コマンドによって影響を受ける行を指定します。範囲の一般的な形式は、コンマで区切られた 2 つの数値であり、コマンドは最初の数値から 2 番目の数値までのすべての行に作用します。たとえば、
1,4s/today/yesterday/g
ファイルの最初の 4 行にtoday
ある のすべての出現を に置き換えます。yesterday
数字の前に符号を付けると、現在の行からの相対値になります。例えば
-1,+1s/today/yesterday/g
前の行、現在の行、次の行で置換を実行します。カンマを含めて数字の1つを省略すると、現在の行を意味します。例:
,+1s/today/yesterday/g
は、現在の行と次の行で置換を実行します。$
ファイルの最後の行を意味する数字の代わりに を使用することもできます。カンマを省略して数字を1つだけ指定した場合、コマンドはこの行のみに作用します。例:
+1s/today/yesterday/g
次の行のみ置換を実行します。
答え2
次のコマンドを使用できます:
:n,m s/today/yesterday/
つまり、n 行目から m 行目まで、「今日」という単語を「昨日」に置き換えます。
答え3
これを試して :
vi エディターのコマンド モードに移動し、以下のコマンドを試してください。
:%s/today/yesterday/g
g - 今日を昨日に全体的に置き換えます。