ファイルの中を動きまわるにはw, e そして b といったキーが使えます。VIMでは C 言語 のプログラムにある様々なトークンが識別できます。
以下のような C のコードを考えてみます。
Figure 1. C プログラムの一部
カーソルが if 文の先頭の位置にあるとします。 w を一回押すとカーソルが最初の (にジャンプ します。もう一度 w をタイプすると、そのカーソルは NULL に移ります。その次はカーソルが == トークンに移動するでしょう。それ以降の キーストロークでは、次のように移動します。 x... )... &&... y... >... z... そして最後に )... です。
e は w と似ていますが、現在 カーソルがある場所の言葉の最後に移るのであって、その次の言葉の最初 には移らない点だけが違います。
b はwとは正反対で、 カーソルは逆方向に動きます。だから b のキーストロークを使えば後ろ向きに移動できます。
{ と } は段落から段落へと 移動するのに使います。 C 言語を編集している時には、これらの キーは意味が若干違ってきます。 C 言語では段落というのを 空行で分けられた行の塊だと見なすのです。
例
Figure 2. もう一つの C プログラムの一部
上の例では段落が二つ現れています。ある段落から別の段落へは 簡単に移動できます。{ と } というキーを使えばいいのです。{ はカーソルが 段落を追って上の方に移動していき、}はカーソル が段落を追って下の方に移動していきます。
人にはそれぞれコーディングスタイルがあり、ステートメントの 論理的な集まりを、一つ以上の空行で分けて分類しています。
例
Figure 3. 別の C プログラムの一部
{ と } キーはこういった状況 では非常に役立つものです。ある「段落」から別の段落へととても 簡単に移動できるのです。
役に立つもう一つ別のキーの組が[[ と ]] のキーです。これらのキーを使うと 最初の桁にある直前の { やあるいは次の { にジャンプできます。
例
Figure 4. C のコードの次の一部
foo() を編集していたとして、今度は bar() を編集したいとしましょう。 ここで単に ]] とタイプしてください。すると カーソルは bar() 関数の左括弧 "{" に移るはずです。逆方向は 若干違ってきます。bar() の中ほどにいたとして、[[ とタイプすると、カーソルは最初の "{" 、つまり bar() 自身の最初、 に移動するのです。 foo() の最初に移るにはもう一度 [[ とタイプしなければなりません。でも何回もキーを打つ代わりに、 2[[ とタイプすれば、最少のキーストロークで カーソルを直前の関数の最初にもっていけるのです。
同じようなキーストロークの、もう一つ別の組が ][ と [] です。][ だとカーソルは 最初の桁にある、次の } に移ります。 foo() を編集していたとして foo() の最後に行きたいとします。その場合は ][ でそこに行けます。同様に、bar() の編集中に foo() の最後に行きたい 場合は、[] がカーソルをそこにもっていきます。
キーストロークの覚え方ですが、分けて考えればいいのです。最初の キーストロークは上がるか下がるかを示しています。 [が上がりで、 ] が下がりです。 次のキーストロークは一致する括弧のタイプを示しています。直前の キーストロークと同じならカーソルは { に移動するはずでしょうし、 キーストロークが違えば、カーソルは } に移動するでしょう。
]], ][, [[ および [] のキーストロークで注意することは、 これらが最初の桁にある括弧と一致すると いうことです。もし最初の桁にあるかどうかに関係なく、上方向や 下方向にある括弧すべてを見つけたいとしても、それはできません。 でもVIMのドキュメントには回避策が書かれています。全ての括弧を 見つけるにはキーストロークをマップしなければなりません。 マッピングの時間を節約する、お奨めのマッピングは次のとおりです。
:map [[ ?{<CTRL-VCTRL-M>w99[{
:map ][ /}<CTRL-VCTRL-M>b99]}
:map ]] j0[[%/{<CTRL-VCTRL-M>
:map [] k$][%?}<CTRL-VCTRL-M>
% はカーソルのところにあるものに一致するものを 見つけるのに使います。カーソルのところにあるものは、小括弧でも、 中括弧、大括弧でもかまいません。% キーを押せば、カーソルは対応 する一致した括弧へジャンプするでしょう。
数ある中でも、% キーストロークは #if, #ifdef, #else #elif および #endif と一致するものを見つける のに使えます。
このキーストロークは他人が書いたコードを確認する際に非常に 役立つものです。
Figure 5. 次の C のコードの一部
上記のコードをチェックする場合には括弧が正しいこともチェック します。% はある括弧から(対応する括弧まで) ジャンプするのに使えます。その逆も同じです。このように、どの 左括弧がどの右括弧に対応するのかを見つけたり、その情報を使って コードを確認するのに使うのです。
同じように、% はある { から対応する } にジャンプ するのにも使えます。