vi(vim)の最低限の使い方

Unix系のOS(Linux, FreeBSD, Mac OSなど)の設定はテキストファイルで記述されている. よって, 設定ファイルを編集するにはテキストファイルを扱えるエディタなら何を使ってもよい. が, viはUnixならどのシステムにもインストールされているので, 基本的にはviを使う. 特にサーバを扱うなら, 簡単な編集はviでできるようになっておこう.

ここでは設定ファイルを編集するのに必要最低限な知識を説明する.

目次

  1. モード
  2. 何か困ったことが起きたら
  3. カーソル移動と文字の削除
  4. 文字の入力
  5. 検索
  6. 保存と終了

モード

viにはモードという概念があり, モードによって出来ることが違い, キーを押したときの動作も違う. とりあえず, コマンドモードと入力モードの2つを覚えておくとよい.

  • コマンドモード = カーソル移動, コピー, ペースト, 削除やundo, redoなどの編集操作
  • 入力モード = 文字の入力

コマンドモード -> 入力モードにはi, 入力モード -> コマンドモードにはescで, それぞれ切り替えることができる.

コマンドモードと入力モードの切り替え

なお, ファイルを開いた状態ではコマンドモードになっている.


何か困ったことが起きたら

とりあえず escを押して(連打も可)コマンドモードに戻る. 次に 落ち着いて :q!と入力する. 後でも説明するがこれは保存せずに強制終了するコマンドなので, 何も変更せずにターミナルに戻ることができる. 深呼吸して 落ち着いたら, もう一度viでファイルを開き, 最初からやり直せばよい.


カーソル移動と文字の削除

カーソルを移動するには, コマンドモードでh, j, k, lを入力する. それぞれ, , , , に対応している.

hjklと上下左右の対応

また, 文字を削除するにはコマンドモードでx, Xを入力する. それぞれ, カーソル位置の文字を削除(delete), カーソルの前の文字を削除(backspace)する.

※ 現在なら, 大抵のviで入力モードでカーソルキーやdelete, backspaceキーを押せば期待通りに動く. しかしviに慣れるほど, コマンドモードに一度戻って移動した方が早くなるだろう.


文字の入力

コマンドモードでiを入力して入力モードに入る(どうしようもなく不安なら:とりあえずescしてi). その後は普通に入力すればよい. 入力が終わったらescでコマンドモードに戻っておくのもよいかもしれない.


検索

コマンドモードで/を入力すると, 左下に/の記号が表示される. この状態で検索したい文字を入力してEnterすると, 最初にヒットした行に移動する. 次のヒットに移動するのはn, 前のヒットにはNで戻ることができる.

例えば下の2行目のコメントを外したいときは,

## FooBar is a sample variable.
#FooBar 12345

まずコマンドモードで/を入力し, FooBarと入力してEnterを押す. すると1行目の”F”にカーソルが移動するので, nを入力して2行目の”F”に移動する. hで1文字戻ってxでコメントを削除する(もちろんXでもよい).


保存と終了

まず, 下の例を見てほしい. すべてコマンドモードから行なっている.

  • :wq -> 保存してファイルを閉じる
  • :wq! -> 強制保存して強制的にファイルを閉じる
  • :q! -> 強制的にファイルを閉じる

実際に使うのは, ほとんど1つ目と3つ目だろう. 最初の:(コロン)は誤って操作しないように必要だ, ぐらいにとりあえずは考えておけばよい. wは保存(write), qは終了(quit)を表している. さらに!がつけば, それらの処理を強制的に(例えば, ファイルの変更を”無視して”終了)行う. もちろん:w!:qも使うことができる.


viはなかなか癖のあるエディタだが, すべての操作をキーボードのみで高速に行えるため, 現在でもよく使われている. 今回説明した以外にも多くのコマンドがあるので, 慣れてきたら調べてみるとよいだろう.