「vi(vim)」は、ターミナルで使用する「テキストエディタ」です。前回は起動と終了、カーソル移動を中心とした基本操作を紹介しました。今回は、ファイルの編集時にはもちろん、閲覧のみの場合でも便利な「検索」と「オプション」の使用方法について簡単な例で紹介します。
「vi」での検索は「/」で行います。「/」を入力すると画面の最下段に「/」が表示されるので、検索文字列を入力して[Enter]キーを押します。
以下の画面1では「vi /etc/bashrc」コマンドで「/etc/bashrc」(※)を表示し、ファイルの先頭にカーソルがある状態(1Gまたはggで移動、本連載第18回参照)で「bash」という文字列を検索した結果です。
【※】Ubuntu環境では「/etc/bash.bashrc」
ハイライト表示が有効になっている環境では、検索文字列に該当する全ての文字がハイライト表示され、該当する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 @/=""
(最終検索パターンを消去する)
GUI環境の端末アプリケーションでviを実行し、本稿をWebブラウザ上で表示しているのであれば、以下のように操作してもよいでしょう。
(1)「:let @/=""」をコピーします。
(2)viを実行している端末で[Esc]キーを押します。
(3)右クリック→「貼り付け」などで貼り付けます。
(4)[Enter]キーを押して実行します。
なお、[Esc]キーは確実に「ノーマルモード」(コマンド入力ができるモード、本連載第18回参照)にするための操作です。viを実行してからカーソルの移動や検索しかしていない、つまり、ノーマルモードしか使用していない場合は省略可能です。
この方法は、後述するオプションの設定などで、サンプルに従って長いコマンドを入力する際にも便利に使えます。
Copyright © ITmedia, Inc. All Rights Reserved.