前回まで,Windowsのメモ帳と同等のことが実現できるようにviの機能を紹介してきました。実際,これまでの解説でメモ帳の機能をほぼ網羅しているはずです。しかし,それでもまだメモ帳の方が使いやすく感じることでしょう。viが使いづらいと感じさせる一番の要因が,“viがマウスに対応していない”ことです。

 これまで解説した範囲では,行番号があらかじめ分かっているなら,「G」と行番号を指定して即座にその番号の行に移動できます。行番号が分からない場合はカーソル・キーを押し続ける以外に方法がありません。また,行の先頭や行の末尾への移動も同様にカーソル・キーを押すしかないでしょう。1~2回のマウス・クリックで同様なことが簡単にできてしまうのと比べるとかなり不便です。

 GUIに対応した「gvim」のような派生した一部のものを除くと,viはマウスに対応していません。ただし,少ないキー操作で所望する位置にカーソルを移動する優れた機能を持っています。そのすべての操作を覚えるには手間がかかりますが,そのいくつかでも覚えるだけ編集効率が改善することはほぼ確実です。今回は,カーソル移動のための便利な操作をいくつか紹介します。

画面の移動

 表示している画面単位で上下に移動する主な操作は表1のようになります。これらの操作は,通常モードで行います。動作こそ違いますが,[Ctrl]+[f](「+」は同時にキーを押すことを表します)や[Ctrl]+[b]のような[Crrl]を使った操作は,Emacsやシェルでなじみのある方も多いのではないでしょうか。

表1●画面の移動
内容 操作*1
1画面下に移動 [Ctrl]+[f]
[PageDown]キー
1画面上に移動 [Ctrl]+[b]
[PageUp]キー
*1 「+」は同時にキーを押すことを表します。

 効率を徹底的に追求するならば,[PageDown]キーや[PageUp]キーの操作だけでなく,キーボードのホーム・ポジションから移動しなくて済む[Ctrl]+[f]や[Ctrl]+[b]のキー操作を覚えておくとよいでしょう。ただ,[PageDown]キーや[PageUp]キーは挿入モードでも使えるというメリットがあります。必ずしもどちらが優れているとはいえません。

行頭や行末への移動

 上下方向の移動が楽になってくると,次に気になるのは左右方向の移動です。ひたすらカーソルの左右を押し続けるのはあまりに効率が悪すぎます。キーを1回押すだけで複数の文字を移動できる手段のいくつかを覚えておくとよいでしょう。

 まずは左右方向で最も多く移動する,つまり行頭と行末への移動を説明します。これを覚えるだけで,カーソル・キーの移動量が半分くらいで済むようになります。かなりの効率アップにつながることでしょう。

 表2が,行頭や行末への移動コマンドです。これも通常モードで使用します。「^」と「$」は正規表現でもほぼ同じ意味を持っているので,覚えやすいでしょう。「0」と「^」は混乱しやすいですが,「0」が行頭,「^」が行の1文字目です。インデントした文章をめったに書かない場合はどちらでも変わりありません。インデントした文章をよく編集することがあっても,「0」か「^」のどちらかを覚えておけば十分役に立ちます。

表2●行頭や行末にカーソルを移動するコマンド
内容 コマンド
行頭に移動 0
行の1文字目に移動 ^
行末に移動 $