3.1.3. vim#

vim あるいは vi は、テキストエディタと呼ばれるソフトウェアの一種です。テキストエディタは主にプログラムのコードや設定ファイルなど、文字情報のみを扱うために使われます。vim のほかにも、emacs、nano など、さまざまなテキストエディタが存在します。これらのエディタは、その名の通り文字の編集に特化しており、画像の埋め込みや文字サイズの自由な変更といった機能は備えていません。そのため、Word などのワープロソフトと比べると機能は少なく見えます。しかし、プログラムを書くうえでは余計な装飾機能がない分、非常に効率よく作業できます。

手元のコンピュータで作業する場合は GUI ベースのエディタが便利ですが、スパコンやリモートの Linux サーバー上でプログラムを編集したり、設定ファイルを少しだけ修正したりする場合には、CUI ベースのエディタが必要になります。そのような場面で、vim は事実上の標準ツールとして使われています。vim では、文字の入力、コピー、貼り付け、保存など、すべての操作をキーボードで行います。そのため、多くの操作用キーが用意されていますが、最初からすべてを覚える必要はありません。実際に使いながら、少しずつ身につけていくのが現実的です。

3.1.3.1. vim のモード#

vim では、編集内容に応じて モード を切り替えながら操作します。主なモードには、normalinsertcmdlinevisual などがあります。たとえば、文字を入力するときは insert モード、検索や保存といった操作を行うときは cmdline モードに切り替えます。初めのうちは、normal、insert、cmdline の 3 モードを使えれば十分です。

モード

機能

normal

vim 起動直後の状態です。カーソル移動は可能ですが、文字の入力や削除はできません。他のモードへの切り替えはこのモードから行います。どのモードにいても Esc キーを押すと normal モードに戻れます。

insert

文字の入力や削除が行えるモードです。normal モードで i キーを押すと切り替わります。

cmdline

保存や検索などの命令を入力するモードです。normal モードで : キーを押すと切り替わります。命令実行後は normal モードに戻ります。

visual

文字列を選択するためのモードです。normal モードで v キーを押すと切り替わり、コピーやカットが行えます。

3.1.3.2. vim の起動と終了#

vim は、編集したいファイルのパスを指定して起動します。たとえば、samples ディレクトリにある murphys_law.txt を編集する場合、次のように実行します。

vi samples/murphys_law.txt

vi の代わりに vim コマンドを使っても問題ありません。現在の多くの環境では、vi でも実体は vim が起動します。

起動直後は normal モードです。この状態では文字入力はできず、カーソル移動のみ可能です。j(下)、k(上)、h(左)、l(右)キーを押して、カーソルが動くことを確認してください。これは、矢印キーが存在しなかった時代の名残です。最近の vim では矢印キーも使えますが、古い環境では使えないことがあるため、基本的には jkhl を使うことをおすすめします。

誤って別のモードに入ってしまった場合は、Esc キーを押せば normal モードに戻れる、という点を覚えておいてください。

vim を終了するには、まず Esc キーで normal モードに戻し、: を押して cmdline モードに切り替えます。その後、以下の命令を入力します。

命令

機能

:q

vim を終了(quit)させます。

:wq

編集内容を保存(write)してから vim を終了(quit)させます。

:q!

編集内容を保存せず(!)に vim を終了(quit)させます。

起動と終了は、vim 操作の中でも特に重要です。何度か繰り返して練習しておきましょう。

新しいファイルを作成する場合も、vim の起動方法は同じです。存在しないファイル名を指定すると、新規ファイルとして開かれます。

vi new_world.txt

3.1.3.3. テキストの入力#

vim を使って、donguri.txt というファイルを作成して文字データを書き込む例を見ていきます。

vi donguri.txt

起動直後は normal モードなので、i キーを押して insert モードに切り替えます。その後、文字を入力してください。

hi donguri !!
I have many donguries!

入力が終わったら Esc キーで normal モードに戻し、:w で保存します。編集を再開したい場合は、再び i を押して insert モードに戻ります。

vim では、normal モードを起点に insert モードと cmdline モードを行き来するのが基本的な操作方法です。最初は戸惑いますが、慣れるしかありません。まずは「起動・入力・保存・終了」がスムーズにできることを目標にしてください。

3.1.3.4. コピー、カット、ペースト#

コピーやカットは normal モードで行います。

行のコピー、カット、およびペーストについて説明する。これらの操作を行うには、vim を normal mode に切り替える必要がある。normal mode で、順に y キー、1 キー、y キーを入力すると、カーソルのある行の内容が、バッファにコピーされる。コピーした行を貼り付けるには、normal mode で、p キーを入力する。コピーの代わりに、その行をカット(切り出し)したい場合は、normal mode で d キー、1 キー、d キーを入力する。

複数行の内容をコピーすることもできる。カーソルのある行から数えて下 3 行までの内容をコピーしたい場合は、y3y の順でキーを入力する。このように、2 つの y キーに挟まれた数字が、実際のコピー対象の行数となる。同様に、行をカットしたい場合は、d3d のように使う。

行ではなく、特定の文字列や単語をコピーしたりカットしたりすることもできる。まず、normal モードで、カーソルをコピーしたい単語の先頭に移動する。続けて、v キーを入力する。その後、右矢印(あるいは l キー)を何回か入力して、カーソルを移動させながら、コピーしたい単語を選択する。コピーしたい単語がすべて選択されてから、次に y キーまたは d キーを入力する。すると、選択された単語は、コピーあるいはカットされる。コピーまたはカットされた単語はバッファーに保存され、normal モードで p キーを入力すると、カーソルの位置にペーストされる。

3.1.3.5. 検索#

ファイルの内容に対して検索を行うとき、normal mode で操作する。normal mode で、/ キーを入力すると、検索可能な状態になる。このとき、/ キーに続けて検索したいキーワードを入力して、Enter/Return キーを押す。検索キーワードには正規表現も使える。検索対象のキーワードが、ファイルにあれば、カーソルがその場所に移動される。キーワードが見つからなかった場合は、”no hit” のメッセージが表示される。

検索で複数箇所が見つかった場合、n キーを入力すると次の箇所に移動することができる。前の箇所に戻る場合は、N キーを入力する。検索を終えたいときは、Esc キーを入力して、normal mode に切り替える。

3.1.3.6. 置換#

置換を行うときも、normal mode で操作し始める。たとえば、ファイルの中にある orrange をすべて orange に置換したい場合は、まず normal mode で : キーを入力して、cmdline mode に切り替える。続けて、置換命令を使って orrange を orange に置換する。この命令は、次のように s/ を組み合わせて書く。これを実行すると、最初に見つかった orrange が orange に置換される。

:s/orrange/orange/

ファイル中のすべての orrange を orange に置換したい場合は、次のように g を付け加える。

:s/orrange/orange/g

ここでは説明しないが、置換元パターンを正規表現で書けば、置換後では後方参照することができる。

:s/ID=(AT[0-9]G[0-9]\+);/gene_id="(\1)"/g