Vimマニュアル(入門編)

プログラミングにはテキストエディタが必須ですが、私は、数あるエディタの中でも、特にVimを気に入って使っています。
今回は、Vimの使い方について簡単にまとめてみたいと思います。

Vimのインストール

よく知らないのでさらっと流します。

*nix 系や Mac では、Vimは標準でインストールされていると思います。が、例えば Ubuntu のデフォルトのVimは、機能が制限されたvim-tinyというもので、便利な機能が使えないことが多いです。そのため、高機能なVimを別途インストールすることをお勧めします。

例. Ubuntu で apt-get を使ってのインストール

sudo apt-get install vim

GVim (GUIVim) が必要な場合は、これも別途インストールする必要があります。

Mac では MacVim というのを入れるといいらしいです。

環境によって差はあると思いますが、apt-get 等のパッケージマネージャを使えば、ラクにインストールできると思います。

Vim を自分でビルドするという方法もありますが、これは下記のページを参考にしてください。

vim-jp » Linuxでのビルド方法

香り屋と言うサイトで、Windows用にビルド済みで、なおかつ、いろいろなパッチやプラグインが同梱されたVimを、zipにまとめたものが配布されています。

Vim — KaoriYa

使用している環境に合わせて、32bit版か64bit版かを選択してください。ダウンロードされたzipを適当なフォルダに解凍するだけで、すぐにVimが使えるようになります。

Vimの起動

アイコンやショートカットがある場合は、ダブルクリックするなどして起動できます。ファイルのアイコンをVimのアイコンに重ねて起動することもできます。

コマンドラインからは、vimGUI版はgvim)と打てば起動できます*1。開くファイルを指定すれば、そのファイルを開きます。存在しないファイル名を指定することもできます。

vim ファイル名

モードについて

Vimにはモードと言う概念があります。ここでは、代表的なモードについて解説します。

とりあえずVimを起動して、文字を入力しようとキーを叩いても、わけのわからない動作をすると思います。それもそのはずで、起動した直後のVimノーマルモードになっています。これは、すでに入力されている文章を編集したり、カーソルを動かして目的のテキストに移動したりするためのモードで、Vimの最も基本となるモードです。このモードでは、各キーにはさまざまなコマンドが割り当てられておりテキストの直接入力はできません

文章を入力できなければ話にならないので、そのためのモードに移行しましょう。iを押すと、挿入モードになります。カーソルのある位置の直前から、入力したテキストを挿入することができます。ノーマルモードに戻るには、Escキーを押します。Escが押しにくい場合は、Ctrl-[でも代用可能です。だいたいどのモードにいても、Esc(またはCtrl-[)キーを何回か押せばノーマルモードに戻ることができるので、覚えておくと良いと思います。

もうひとつ、代表的なモードにビジュアルモードがあります*2。これは、他のエディタでいう選択モードのようなものです*3vを押すとビジュアルモードに移行し、カーソルを移動するコマンドで文章を選択できます。ノーマルモードに戻るには、もう一度vを押すか、Escを押します。

他にも細かいモードがあるのですが、今回は説明を省きます。

基本操作

以下は、一部を除いてノーマルモードにおけるキー操作です。複数のキーからなるコマンドは、同時に押すのではなく、順番に打鍵します(Ctrlキーによる修飾を除く)。英字の大文字小文字の違いにも注意してください(今回紹介するコマンドは、すべて小文字です)。大文字と小文字には、別のコマンドが割り当てられています。

 

1文字移動
  k  
h カーソル位置 l
  j  

上下左右への一文字分の移動です。このキー配置は、ホームポジションに手を置いた時に、右手のみで打鍵できます。この配置に慣れると、ホームポジションから手を離すことなくカーソルの移動ができるようになり、作業効率が向上します。

 

モード切り替え
i 挿入モードへ移行(カーソルの直前から挿入)
a 挿入モードへ移行(カーソルの直後から挿入)
v ビジュアルモードへ移行/ノーマルモードに戻る
EscまたはCtrl-[ 挿入モードやビジュアルモードからノーマルモードに戻る

各モードへの移行と、ノーマルモードに戻る操作です。aコマンドは、行末にテキストを挿入したい場合に便利です。挿入モードに入ってからテキストを入力し、ノーマルモードに戻るまでの一連の操作は1回のコマンド操作とみなされ、後述の取り消し操作や繰り返し操作の1単位となります。

 

編集操作
x 一文字削除*4
dd 一行全体を削除
dw 一単語削除
yy 一行全体をヤンク*5
yw 一単語ヤンク
(ビジュアルモードで)d または x 選択された範囲を削除
(ビジュアルモードで)y 選択された範囲をヤンク
p 直前の削除/ヤンクしたテキストを貼り付け*6

いわゆるコピペと、それに関連した操作です。とりあえずこれだけ覚えときゃいいだろ、と思うコマンドを集めました。削除は他のエディタで言う切り取り、ヤンクはコピーと読み替えるとわかりやすいと思います。

dwywは、カーソル位置から単語の終わり(+空白)までを削除/ヤンクします。ddやyyは、行内のどこにカーソルがあっても、行全体を削除/ヤンクします。

このような編集操作の詳細については、別の記事で取り上げる予定です。

 

編集のやり直し/繰り返し
u 直前の操作の取り消し(いわゆるUndo)
Ctrl-R 取り消しの取り消し(いわゆるRedo)
.*7 直前のコマンドの繰り返し

WindowsでいうCtrl-ZとCtrl-Y、それからとても便利な繰り返しコマンドです。削除やヤンクなどの操作を、1回ずつやり直したり繰り返したりできます。テキスト入力は上述の通り、挿入モードに入ってからノーマルモードに戻るまでが1回になります。どれくらいの単位でやり直しや繰り返しができるかは、実際に試した方がわかりやすいと思います

 

ファイルを開く/保存
:e ファイル名 指定したファイルを開く/指定した名前のファイルを新規作成*8
:w 現在のファイルを上書き保存
:w ファイル名 別名で保存

ファイルを開いたり保存したりするコマンドです。コロンで始まるコマンドは、最後にEnterキーを押します。例えば、上書き保存の場合は、コロン、w、Enter、と順番に押します。これらのコマンドは、コロンを伴わないコマンドとは別の種類のものですが、今回はこのあたりの詳細については割愛します。

 

Vimの終了
:q Vimを終了する
:wq 上書き保存して終了する
:q! 変更を破棄して終了する

Vimを終了するコマンドです。:q:q!の違いは、最後の変更が保存されていない場合に、前者はエラーになり終了せず、後者は変更を破棄して強制的に終了します。

 GVimには、デフォルトでメニューが表示されるので、保存や終了などのコマンドは覚えなくても使うことができるかもしれません。しかし、GUIのメニューは使わずに、コマンドで操作した方が効率よく作業できます。

まとめ

とりあえず、これだけ覚えておけば、それなりに便利に使えるのではないかと思うコマンドを表にしてみました。コマンドを実際に実行し、どのような動作をするのかを確認する。この繰り返しが、理解への早道だと思います。

また、*nix系では(Vimの起動中にではなく)端末でvimtutor、香り屋版ではVim内で:Tutorialというコマンドを実行すると、チュートリアルが起動します。説明を読みながら実際に編集を行うことで、自然とVimの操作が身に付く内容になっています。私は、このチュートリアルを繰り返し行うことで、Vimの基本を覚えました。チュートリアルをやれば、この記事の意味がなくなってしまうほどよくできています。興味があれば、ぜひ試してみてください。

上に挙げたコマンドは、膨大なVimのコマンドのほんの一部に過ぎません*9。さらに踏み込んだ内容については、別の機会に取り上げていきたいと考えています。

 

*1:当然ですが、ちゃんとパスを通す必要があります

*2:厳密には、ビジュアルモードには3種類あります。説明は割愛

*3:Vimにもビジュアルモードとは別に選択モードがあります。説明は(ry

*4:厳密には、完全には削除されずに、レジスタと言うクリップボードのようなものに保存される(つまり切り取りと同意)。dから始まるコマンドも同じ

*5:コピーのこと。テキストを削除せずに上記のレジスタに書き込む。Emacsでのヤンクとは意味が違うので注意

*6:pは、pasteではなくてputらしい

*7:ドット。終止符。日本語で言う句点

*8:実際にファイルが作成されるのは、保存コマンドを実行したとき

*9:すべてのコマンドを覚えている人は非常に稀でしょう。おそらく私が知っているコマンドも、すべてのコマンドの半分にも満たないと思います