Vimを習得するには、とにかく練習すること

Linuxにおけるデフォルトエディタといってもよい状況になっているVim。Vimを使いこなすには時間が必要だが、いったん身につけてしまえば強力なツールになってくる。前回は、基本となる3つのモードの存在について、どのように操作することでモードの間を行ったり来たりすることができるかを説明した。

Vimをマスターするには、とにかく練習するに限る。ある程度の操作を覚えてしまえば高速に操作できるようになる。最初に練習しておきたいのは、ノーマルモードでのカーソルの移動だ。カーソルを自分の意図する場所に一発で移動できるようになると、Vimの操作速度はかなり高速になる。カーソルの移動は意外と時間を食っているからだ。

例えば、マウスも使うタイプのエディタでは、カーソルを目的とする場所に移動させるためにマウスで移動先をクリックすることがある。これは、エディタの操作中にキーボードからマウスに手を移動させ、マウスを操作し、クリックし、もう一度キーボードに手を戻すというアクションが発生することを意味しているが、効率はよくない。操作が遅くなってしまう。

もう1つは、カーソルキーで対象の場所まで移動させるというものだ。これもそれなりに時間がかかる。移動する先が遠ければ、それだけカーソルキーを叩く、または押しっぱなしにして移動させることになり、やっぱり時間がかかる。できれば、そこまで数回のキータイプでサクッと移動できるようになりたい。

PacVimでカーソル移動を鍛える

そこで、今回はVimのカーソル起動を訓練する方法としてPacVimを紹介する。これはVimのカーソル操作と同じキーで行うソフトウェアで、Vimのカーソルキー移動を練習するのに便利だ。

惜しいことに、PacVimは多くのLinuxディストリビューションでデフォルトのパッケージには含まれていない。つまり、利用するには自力でビルドする必要がある。

例えば、Ubuntu 18.04 LTSの場合であれば、次のように作業することでPacVimをビルドすることができる。ビルド作業を行ったディレクトリにpacvimというバイナリファイルが生成されるので、このファイルを実行してみてほしい。

PacVimのインストール方法

sudo apt install g++ make libncurses5-dev libncursesw5-dev
git clone https://github.com/jmoon018/PacVim.git
cd PacVim
sudo make install

PacVimでは迷路のようなマップの中をカーソルを移動させるという操作を行う。カーソルを移動させながらすべての文字を踏んでいけば課題完了という仕組みだ。カーソルは次のようなキーで移動させることができる。Vimにおけるカーソルを移動させるキーと同じである。

キー 内容
q ゲーム終了
h カーソルを左へ移動
j カーソルを下へ移動
k カーソルを上へ移動
l カーソルを右へ移動
w カーソルを次の単語の先頭に移動
W カーソルを次の単語の先頭に移動
e カーソルを次の単語の末尾に移動
E カーソルを次の単語の末尾に移動
b カーソルを前の単語の先頭に移動
B カーソルを前の単語の先頭に移動
$ カーソルを行末へ移動
0 カーソルを行頭へ移動
gg カーソルを1行目の行頭へ移動
1G カーソルを1行目の行頭へ移動
数字G カーソルを指定した行の行頭へ移動
G カーソルを最後の行の行頭へ移動
^ カーソルを現在の行の最初の単語の先頭に移動

ただし、ただカーソルを移動させればよいというものではなく、~は踏んではいけなというルールになっている。~を踏むと最初からやり直しだ。また、赤文字のGが自律的に動いており、カーソルキーをこのGに当ててはいけないというルールになっている。移動するGを避けつつ、~に誤って触れないようにカーソルを移動させ、すべての文字を踏めばよい。

迷路のようなマップですべての文字を踏むと、次のマップに進むようになる。徐々に難易度が上がる仕組みになっているほか、最初は単純なカーソルの移動でもクリアできていたものが、終盤になってくると単語単位での移動や、行を指定しての移動なども組み合わせないと課題を完了できなくなっていく。こうした中でVimのカーソル移動スキルを上げていくという仕組みだ。

PacVimを実行してみよう

引数に何も指定しないでPacVimを実行すると、次のような画面が表示される。これが最初の課題だ。移動する2つのGを避けつつ、~を踏むのを回避しながら課題をこなしていく。このマップはhjklだけを使った移動でも課題はこなせるようになると思う。

  • PacVim 最初の課題マップ

    PacVim 最初の課題マップ

最初の課題をクリアすると、次のように新しいマップが表示される。やることはまったく同じだ。挑戦していく中で新しいカーソル移動の方法を試しながら、徐々に操作のスキルを上げていってほしい。

  • PacVim 次の課題マップ

    PacVim 次の課題マップ

カーソルを移動させて踏んだ文字は次のように緑色に変わるので、残っている白い文字を探して踏んでいく。

  • PacVim 踏んだ文字は緑色になる。踏んでいない文字は白で表示されている

    PacVim 踏んだ文字は緑色になる。踏んでいない文字は白で表示されている

課題をクリアしていくと、例えば、次のようなマップが表示されるようになる。

  • より難しくなった課題マップ"

    より難しくなった課題マップ

極めていけば、hjklだけで課題をこなしていくことも可能だが、慣れてきたら単語ごとに移動するキーや、特定の行に移動するキー、先頭や末尾に移動するキーを使うようにしていってほしい。特に普段日本語を使うことが多い方にとって、単語ごとに移動するキーを覚えるのは難しく、こうした練習用のプログラムを通じて体に覚え込ませてしまいたいところだ。

日本語は英語などの言語と異なり、単語と単語の間にスペースを入れるといった書き方をしない。このため、Vimに用意されている単語ごとに移動するという操作方法を身につけるのが難しい。しかし、プログラミング言語の編集とかHTMLファイルの編集といった作業になってくると、この単語ごとにカーソルを移動させるという方法が効いてくるようになる。PacVimのようなプログラムを使って単語ごとにカーソルを移動させる方法を身につけてもらえればと思う。

とにかく練習あるのみ

Vimの操作を身につけるには練習が一番だ。実際に入力する必要があるデータを入力しながら、どうやって作業を短時間のうちに終わらせるかを考えたり調べたりしながら作業するのがよいが、ある程度は練習して手を慣れさせないことには始まらない。

PacVimはVimを使い始めた段階でノーマルモードにおけるカーソルの移動方法に慣れる点で、役に立つソフトウェアだ。最初はhjklでカーソルを移動させるという方法そのものに慣れる必要があるので、この方法を活用していただきたい。