Linuxの定番テキストエディタ「vi」をマスターしよう(3)編集と置き換え/チュートリアル編“応用力”をつけるためのLinux再入門(20)(2/3 ページ)

» 2017年12月20日 05時00分 公開
[西村めぐみ@IT]

削除、カット、コピー、ペーストをマスターしよう

●削除

 「x」コマンドでカーソル位置の文字を削除、「X」コマンドでカーソルの前の文字を削除、「dd」コマンドでカーソル行を削除します。それぞれ回数を指定することが可能で、例えば「5x」でカーソル位置から5文字分を削除、という動作になります。

 「d」コマンドは、「c」と同様、「d」に続けて移動のキー操作をすると、その分の文字を削除します。例えば、「d$」でカーソル位置から行末まで、「d^」でカーソル位置から行の先頭まで、「d0」で行頭までを削除します。

●削除
xまたは[Del] カーソル位置の文字を削除する
X カーソル位置の前の文字を削除する
dd カーソル位置の行を削除する
d 移動キー操作に従って削除する(d$で行末まで削除)

 削除してすぐ入力したい、つまり挿入モードに入りたい場合は、前述の「s」「S」「c」「C」を使用します。

●カット、コピー、ペースト

 「x」と「dd」は、いわゆるカット&ペーストの「カット」に相当する操作で、単なる削除として使用できる他、「p」コマンドまたは「P」コマンドで削除した内容をペーストすることができます。

 コピー&ペーストの「コピー」は「yank」といい、「y」コマンドを使用します。コピーする範囲は、移動に使ったキー操作で指定します。例えば、カーソル位置の文字は「yl」、カーソル位置から5文字分は「y5l」、カーソル位置から単語末尾までは「ye」または「yw」です。「w」コマンドは次の単語の頭へ移動するという操作なので、単語の後に空白があった場合はその空白もコピーされます。

 カーソル行全体をコピーしたい場合は「yy」コマンドまたは「Y」コマンドを使用します。

●カット、コピー(yank)、ペースト
x カーソル位置の文字をカットする
X カーソル位置の前の文字をカットする
dd カーソル位置の行をカットする
y yに続けて入力した移動キーの操作分の内容をコピーする
Yまたはyy カーソル行全体をコピーする
p カーソル位置にペーストする(行単位の場合はカーソル行の下)
P カーソル位置の前にペーストする(行単位の場合はカーソル行の上)

置き換えをマスターしよう

●置き換えの基本

 文字列の置き換えは「:s」コマンドで行います。「:」を入力すると最下行に「:」が表示されるので、「s/文字列1/文字列2/」のように指定します。

 検索対象は、カーソル行にある1つ目の文字列になります。行内にある全ての該当箇所を置換する場合は、末尾に「g」を付けて「s/文字列1/文字列2/g」のように指定します。

 内容を確認しながら置き換えたい場合は、末尾に「c」を付けます。

 また、範囲を指定したい場合は「:1,5s/〜」のように置換する開始行と終了行を指定し、ファイル全体を対象としたい場合は「:%s/〜」のように指定します。

 なお、置換文字列の区切りにしている「/」は、「:s#文字列1#文字列2#」のように別の記号を使用することができます(画面2)。

●置き換え
:s/文字列1/文字列2/オプション カーソル行を対象に、オプションに従って文字列1を文字列2へ置き換える
:1,5s/文字列1/文字列2/オプション 1行目から5行目までを対象に、オプションに従って文字列1を文字列2へ置き換える
:%s/文字列1/文字列2/オプション ファイル全体を対象に、オプションに従って文字列1を文字列2へ置き換える

●「s」コマンドの主なオプション
オプション 内容
g 全てを対象にする(指定しない場合は1つ目だけを置換する)
c 確認しながら置き換える
I 大小文字を区別する(デフォルト)
i 大小文字を区別しない
n 該当する箇所の個数だけを表示する

画面2 画面2 置換コマンドの対象範囲とオプションによる違い

●置換パターン

 置換対象のパターン指定には、「/」による検索パターンと同じ文字列が使用できます(本連載第19回参照)。置換結果のパターンには、以下の文字列を使用できます。

●置換パターンで指定できる文字列
&または\0 マッチしたパターン全体に置き換わる
\0 マッチしたパターン全体に置き換わる
\1 1番目の()内のマッチしたパターンに置き換わる
\2〜\9 2〜9番目のマッチしたパターンに置き換わる
~ 前回の置き換え文字に置き換わる
\~ ~という文字に置き換わる
\u 次の文字が大文字になる
\U 後に続く文字が大文字になる
\l 次の文字が小文字になる
\L 後に続く文字が小文字になる
\eまたは\E \u、\U、\l、\L指定の終わり
\r 改行
\t タブ
\\ \という文字に置き換わる

 例えば、単語の頭を大文字にする場合は「:%s/\w\+/\u\0/g」のように指定します(画面3)。これは、「語構成文字(\w)の1回以上の繰り返し(\t)」を「すぐ後の文字を大文字に(\u)、マッチしたパターン全体(\0)」に置き換えるという意味です。

画面3 画面3 「s」コマンドで各単語の先頭を大文字に置換した

 なお、大文字と小文字は「~」コマンドでも変換できます。これはカーソル位置の文字が大文字なら小文字に、小文字なら大文字に置き換えるというコマンドです。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。