今回は、Linuxで使用する「vi」の操作方法について解説します。
「vi」は、Linuxで標準的なエディタです。テキストファイルの編集に使いますので、操作ができるようになることが必要です。
「vi」を使ってログファイルを見たり、設定ファイルを編集したりします。
ちなみに、「vim」という「vi」の拡張版がありますが、vimは、viの機能を継承しつつ、多くの機能が追加されています。
基本となる操作については、どちらも共通です。
vi操作の簡易まとめ
解説は後述し、最初にまとめを記載します。
・viでファイルを開く「vi ファイル名」
・viの「挿入モード」と「コマンドモード」
コマンドモード(挿入モードからコマンドモードに切り替わる) 「ESC」
挿入モード(コマンドモードから挿入モードに切り替わる)
「i」 カーソル位置の前に文字を挿入
「a」 カーソル位置の後に文字を挿入
「o」 カーソル下の行に新しい行を作成して挿入
「O」 カーソル上の行に新しい行を作成して挿入
・viの終了、保存方法
コマンドモードで実施
「:q!」 保存せず終了
「:wq!」 保存して終了
・カーソル移動
コマンドモードで実施
1文字ずつ移動
「h」: 左 「j」: 下 「k」: 上 「l」: 右
「0」 行頭に移動
「$」 行末に移動
「Ctrl+f」 画面を1ページ下
「Ctrl+b」 画面を1ページ上
「G」(shift+g) ファイルの最後
「gg」 ファイルの先頭
・テキスト削除
「x」 カーソル下の文字を削除
「dd」 カーソル下の行を削除
「dw」 カーソル下の単語を削除
・検索
「/ 検索文字列」 前方検索
「?検索文字列」 後方検索
・置換
「:%s/検索文字列/置換文字列/g」 全文置換
vi操作 「viでファイルを開く」
viを使うには、コマンドラインから、「vi ファイル名」を入力することで、ファイルをviで開きます。
現在いるディレクトリで上記で指定したファイルがある場合は、そのファイルを開きます。
現在いるディレクトリで上記で指定したファイルがない場合は、新規で作られます。(保存が必要)
vi操作 「モードの変更」
viには、2つのモードがあり、「挿入モード」と「コマンドモード」があります。
最初にファイルを開いた時点では、「コマンドモードです。」
その状態で、下記のキーを打つと「挿入モード」に戻ります。
ほとんどの場合、「i」で切り替えます。Insertのiと覚えるとよいと思います。
i カーソル位置の前に文字を挿入
a カーソル位置の後に文字を挿入
o カーソル下の行に新しい行を作成して挿入
O カーソル上の行に新しい行を作成して挿入
「挿入モード」から「コマンドモード」に戻るには「esc」キーを打ちます。
viでファイルを編集する場合は、「コマンドモード」と「挿入モード」を繰り返します。
キーボードの「i」と「esc」を繰り返し押すことになります。
ファイルの中身を見るだけなら、「コマンドモード」だけで問題ありません。
vi操作 「viの終了、保存」
viでファイルの閲覧を終了する場合は、コマンドモードで、「:q!」を入力します。
仮に現在、コマンドモードでもいったん「ESC」を押して、「:q!」を打てば確実です。
「:q!」で終了した場合は、仮に何か編集した場合も保存されません。
viで編集したファイルを保存して終了する場合は、コマンドモードに戻り、「:wq!」です。
viを開いたまま保存する場合は、「:w」です。
vi操作 カーソル移動
viでファイルを開き、ファイル内を移動するのは下記のキーになります。
現在は、ほとんどの場合、キーボードの矢印でも動きますが、基本のカーソル移動は下記になります。
下記はコマンドモード(「escを押した状態」)で有効です。
h 左へ移動
j 下へ移動
k 上へ移動
l 右へ移動
(補足)
hjklはキーボードで横並びになっており、hから順番に覚えるとよいと思います。
hを始まりに、さかのうえみぎ→さ(左)か(下)のうえ(上)みぎ(右)→坂の上を右
カーソル移動はほかにもたくさんありますが、下記は一例です。
0 行頭に移動
$ 行末に移動
Ctrl+f 画面を1ページ下へスクロールします。つまり、次のページに移動します。
Ctrl+b 画面を1ページ上へスクロールします。つまり、前のページに移動します
G ファイルの最後へ移動します(shiftキーを押してgキーです。)
gg ファイルの先頭へ移動します
私は、よくログファイルを見るので、最新のログが末尾に記載されているので、
「Ctrl+f」と「G」で最終行に行って、下から見返す操作が多いです。
viの操作 「検索や文字削除、置換」
続いては、編集方法です。
文字や行削除方法です。
こちらもいったん、コマンドモードになってから行います。
・テキスト削除
x カーソル下の文字を削除
dd カーソル下の行を削除
dw カーソル下の単語を削除
・検索
/検索文字列 前方検索
?検索文字列 後方検索
置換
:%s/検索文字列/置換文字列/g 全文置換
私がよく使うのは、「x」と「/」です。
まとめ
viはとっつきにくいところがありますが、基本的には、コマンドモードと挿入モードを意識して、
ファイルの中で移動し、入力、削除ができ、最後に保存ができれば基本操作としては問題ありません。
viを覚えると通常のコマンドラインでviモードにできて、入力が楽になります。(set -o vi)