Vimとは

テキストエディタとして有名なviのクローンとして誕生したソフトウェア。
Vimとは、Vi IMproved(改良)の略称である。

 

Vimの導入

Windowsの場合

オリジナルのバイナリ、ソースはこちら

また、日本語を扱う上で便利なスクリプトなどが入ったパッケージはこちらからダウンロードすることが可能。
標準的な設定がなされたvimrc、gvimrcが同梱されており、すぐに使い始められる。

解凍したフォルダ内にgvim.exeとvim.exeの2つの実行ファイルがあるが、
Windows上ではgvim.exeの利用を(個人的に)勧める。

Macの場合

KaoriYa版Vim
こちらからダウンロードすることが可能。
標準的な設定がなされたvimrc、gvimrcが同梱されており、すぐに使い始められる。
ただしVim6.2と、少々バージョンが古い。
パッケージ管理ソフトによる取得
Mac portsやFinkといったMac用パッケージ管理ソフトからも取得可能。

Linuxの場合

最近のディストリビューションでは大抵最初からインストールされている。
アップデートはディストリビューションに付属するパッケージ管理ソフトで。

Vimの操作方法

入力モードとコマンドモード

Vimは用途によって2つのモードがある。

  1. 入力モード

    文字が入力できる。メモ帳と同じ感覚。

  2. コマンドモード

    カーソル移動、ファイル保存などの、直接文字を入力しない処理。いわばショートカット専用モード。

Vimのもとになったviは、キーボードだけで文字入力以外の複雑な編集ができるように作られた*1。文字入力以外の操作をさせるため、入力を全てコマンドとするコマンドモードがある*2
Vimはコマンドモードで起動するので、文字を入力するには「a」(append)か「i」(insert)を打ち込んで入力モードに移る。
コマンドモードに移る場合は「ESC」か「CTRL+[」を入力する。「ESC」はコマンドのキャンセルにも使えるので、おかしな画面になったらとりあえず「ESC」を打ってコマンドモードに戻ろう。

各種コマンド

コマンドはコマンドモードで入力するキー。

Vimは頻繁にコマンドモードと入力モードを行き来するので、現在のモードがわからなくなりやすい。迷ったら「ESC」でコマンドモードに戻ろう。また入力終わったらコマンドモードに戻っておく癖をつけるのもあり。

  • モード変更系
    コマンド説明
    iカーソル位置で入力開始。
    aカーソル位置の次の位置で入力開始。
    I行頭に移動して入力開始。
    A行末に移動して入力開始。
    o現在行の下に行を追加して入力開始
    O現在行の上に行を追加して入力開始
    ESC入力モードからコマンドモードに移る。
    コマンドのキャンセル。
  • カーソル移動系
    コマンド説明
    h左に移動。
    j下に移動。
    k上に移動。
    l右に移動。
    0行頭へ移動。
    $行末へ移動。
    w1単語分右へ移動。
    b1単語分左へ移動。
    %カーソルが括弧にある場合、対応する括弧に移動する。
    f文字カーソル位置から右に指定文字があればそこに移動。
  • 画面スクロール系
    コマンド説明
    CTRL+F1画面スクロール。
    CTRL+B1画面逆にスクロール。
    gg最上行へ移動。
    G最下行へ移動。
    行番号G行番号の行へ移動。
  • 編集系
    コマンド説明
    yy1行コピー。
    dd1行削除。
    pコピーした文字を選択位置の次の位置にペースト
    Pコピーした文字を選択位置にペースト
    u変更の取り消し。
    .前回の処理を繰り返す
    >>インデントを1レベル追加
    <<インデントを1レベル削除
  • ファイル操作系
    コロンがついているコマンドはEnterキーで入力を確定させる必要あり。 ファイルは変更している状態だと閉じれないので、「:q!」で変更を破棄するか、「:wq」で変更を上書きして保存する。
コマンド説明
:qファイルを閉じる。
:q!ファイルの変更を破棄して閉じる。
:wファイルの上書き保存
:wqファイルを上書き保存して閉じる
:wq ファイル名ファイル名を指定して保存


Vim編集のコツ

  1. コマンドの前に数字を入力すると、コマンドがその数字分実行される。
  2. コマンドとコマンドを組み合わせて実行できる。

この特徴から単純なコマンドの組み合わせで非常に便利な編集ができる。

  • 5行削除
    5dd
  • 10文字コピー
    10yl
  • 1単語分削除
    dw
  • 括弧で囲まれた部分を丸ごと削除
    d%
  • 指定文字までコピー
    yf文字
  • 3行分インデントを追加する
    >3>

.」を入力すると前回の操作が繰り返し実行できる。

  1. コマンドモードから行末に abc と入力する
    Aabc[ESC]
  2. 別の行に移動して「.」を入力
    .
  3. その行の行末に abc と入力が!

よく使うコマンドの組み合わせはmapコマンドで別のコマンドから使えるようにできる。先の「行末にabcを入れる」という処理を「#」に割り当てるには以下のコマンドを実行する。
:map # Aabc<ESC>

プラグインによる拡張

参考サイト

Vimマスターへの道
Open Tech Press のVim初心者向け(?)特集。
VimWiki
2ch UNIX板のVimスレッドWiki。Tips集、設定オプション一覧、
ぼくのかんがえたvimrc展示会場など。


*1 当時はまだマウスがなかった。
*2 一方emacsではコマンドモードがない代わりに、CTRL+[キー]やALT+[キー]で各種操作を実行できる。emacsユーザーは頻繁に修飾キーを使うため、しばしば修飾キーを押す小指を痛める。これは「EMACS小指」と呼ばれ、emacsユーザーの中には痛みを緩和するためCAPSキーとCTRLキーの動作を入れ替えている者もいる。