Linuxの定番テキストエディタ「vi」をマスターしよう(2)検索/オプション活用編“応用力”をつけるためのLinux再入門(19)(1/3 ページ)

「vi(vim)」は、ターミナルで使用する「テキストエディタ」です。前回は起動と終了、カーソル移動を中心とした基本操作を紹介しました。今回は、ファイルの編集時にはもちろん、閲覧のみの場合でも便利な「検索」と「オプション」の使用方法について簡単な例で紹介します。

» 2017年12月13日 05時00分 公開
[西村めぐみ@IT]
「“応用力”をつけるためのLinux再入門」のインデックス

“応用力”をつけるためのLinux再入門

検索の基本をマスターしよう

●下方検索と上方検索

 「vi」での検索は「/」で行います。「/」を入力すると画面の最下段に「/」が表示されるので、検索文字列を入力して[Enter]キーを押します。

 以下の画面1では「vi /etc/bashrc」コマンドで「/etc/bashrc」()を表示し、ファイルの先頭にカーソルがある状態(1Gまたはggで移動、本連載第18回参照)で「bash」という文字列を検索した結果です。

【※】Ubuntu環境では「/etc/bash.bashrc」



画面1 画面1 「/bash」でbashという文字列を検索した結果

 ハイライト表示が有効になっている環境では、検索文字列に該当する全ての文字がハイライト表示され、該当する1つ目の箇所にカーソルが移動します。ハイライト表示の有効/無効は、後述する「オプション」で設定します。

 なお、検索時もカーソルの移動時と同様に「回数」を指定することができます。例えば、「2/検索文字列[Enter]」で検索した場合は、検索文字列の“2つ目の該当箇所”へカーソルが移動します。

 また、「n」で次の検索位置へ移動、「N」で前の検索位置へ移動します。これも「2n」で“2つ先”、といったように回数を指定できます。

 「/」ではカーソル位置から下方向に検索を行います。上方向に検索したい場合は、「/」の代わりに「?」を使用します。「?」を入力すると「/」と同様、画面最下段に「?」が表示されるので、検索文字列を入力して[Enter]キーを押します。

 なお、「/」または「?」で何も検索文字列を入力せずに[Enter]キーを押した場合は、最後に使用した検索文字列が使用されます。つまり、「/[Enter]」で直前の検索を下方向に、「?[Enter]」で直前の検索を上方向に実行する、という意味になります。

●上下方向への検索
/ 検索文字列、[Enter]で下方向に検索。検索文字列を指定しない場合は、直前の検索を下方向に繰り返す
? 検索文字列、[Enter]で上方向に検索。検索文字列を指定しない場合は、直前の検索を上方向に繰り返す
n 直前の検索を再実行
N 直前の検索を逆方向に実行

●検索パターン

 検索文字列には「^」(行頭)や「\<」(単語の先頭)などのパターンを使用することができます。

 検索パターンとして使用できる文字列は、以下の通りです。なお、検索および検索パターンに使用する文字自体(「*」や「/」など)を検索したい場合は、「\*」や「\/」のように「\」を付けます。

●検索パターンで指定できる主な文字列
. 任意の1文字(※)
^ 行頭
$ 行末
\< 単語の先頭
\> 単語の末尾
[a-z] 指定範囲の1文字に一致([a-d]ならばabcdのいずれか)(※)
[^a-z] 指定の範囲にない1文字に一致([^a-d]ならばabcd以外)(※)
\s 空白文字に一致
\S 空白文字以外に一致
\a アルファベット([a-zA-Z])
\A アルファベット以外([^a-zA-Z])
\d 数字([0-9])
\D 数字以外([^0-9])
\w 単語を構成する文字([0-9A-Za-z_])
\W 単語を構成する文字以外([^0-9A-Za-z_])
\e Esc(0x1b)に一致
\t Tab(0x09)に一致
\r CR(0x0d)に一致
\b BS(-x08)に一致
\(〜\) パターンをグループ化する
* 直前の指定(グループ)と0回以上一致(※)
\+ 直前の指定(グループ)と1回以上一致
\= 直前の指定(グループ)と0回または1回一致
\{1,5} 直前に指定(グループ)と1〜5回一致
\| または(「パターン\|パターン」のように使用)

【※】オプション「magic」が有効な場合の指定方法(デフォルト)。magicが無効の場合は「\.」や「\*」のように指定する。



●単語検索

 「*」でカーソル位置の下方向の単語を検索し、「#」でカーソル位置の上方向の単語を検索します。どちらも「g」を付けて、「g*」「g#」で部分一致の検索となります。

●単語検索
* カーソル位置の下方向の単語を検索
g* カーソル位置の下方向の単語を部分一致で検索
# カーソル位置の上方向の単語を検索
g# カーソル位置の上方向の単語を部分一致で検索

●最終検索パターン

 検索したパターンは、ホームディレクトリの「.viminfo」(~/.viminfo)ファイルに保存されています。この検索パターンは、次回のvi(vim)起動時にも有効です。

 例えば、ハイライト表示が有効になっているviを起動すると、最後に検索したパターンが最初からハイライト表示されます。また、「n」や「N」の繰り返し検索にも使用できます。

 最終検索パターンを消去するには、「let」コマンドを使用します(画面2)。「:」と入力すると画面最下行に「:」が表示されるので、続けて「let @/=""」と入力します。これは、「@/」という最終検索パターンが保存されている特別な変数を空にするという意味です。

:let @/=""

(最終検索パターンを消去する)


画面2 画面2 「:let @/=""」コマンドで最終検索パターン(文字列)を消去できる

 GUI環境の端末アプリケーションでviを実行し、本稿をWebブラウザ上で表示しているのであれば、以下のように操作してもよいでしょう。

(1)「:let @/=""」をコピーします。

(2)viを実行している端末で[Esc]キーを押します。

(3)右クリック→「貼り付け」などで貼り付けます。

(4)[Enter]キーを押して実行します。


 なお、[Esc]キーは確実に「ノーマルモード」(コマンド入力ができるモード、本連載第18回参照)にするための操作です。viを実行してからカーソルの移動や検索しかしていない、つまり、ノーマルモードしか使用していない場合は省略可能です。

 この方法は、後述するオプションの設定などで、サンプルに従って長いコマンドを入力する際にも便利に使えます。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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