7. Quickfix

C 言語でコーディングしている場合、編集 - コンパイル - 編集という サイクルがよくあります。(この文書を読んでいる)読者なら、これまでに 説明したコマンドなどを使って、C 言語のファイルを編集し、ファイルを 保存し、そのコードをコンパイルし、そしてエラーの箇所に行き、また編集 を始めるのが普通でしょう。こんなときに、Quickfixというモードを使えば、 VIMはこのサイクル時間を若干節約するのを助けてくれます。基本的には、コ ンパイラのエラーをファイルに保存しておいて、次のコマンドを使ってVIMで このファイルをオープンする必要があります。

      
	 $ vim -q コンパイラのエラーを保存したファイル
      

VIMは自動的にエラーの情報が入っているこのファイルをオープンして、 カーソルを最初のエラーの位置にもっていきます。

このやり方には近道があります。 "make" というコマンドを使えば、 自動的にコードをコンパイルして、最初に発生したエラーの位置に 行ってくれます。 make コマンドを起動するには次のようにタイプ します。

	 :make
      

実は、このコマンドはシェルで make をコールして、最初のエラー 箇所に行くんです。でもコンパイルに make ではなく cc のようなコマンド を使っている場合は、この make コマンドを使う時に実行したいコマンド を makeprg という変数に設定しなければなりません。 例えば次のようにです。 :set makeprg=cc\ foo.c

makeprg を設定しておけば、実際に make コマンドを呼び出せるし、 Quickfixモードが動き出すことでしょう。

最初のエラーを修正したら、次にやることはその次のエラーの箇所に 行ってそれを修正することでしょう。次のエラーの箇所に行くには 以下のコマンドを使います。 :cn

そこから戻るには、次のコマンドを使います。 :cN

例を使って実際にやってみることにしましょう。以下のコードを考えて ください。

Figure 11. 即効ファイルプログラムのリスト

見ればわかりますが、5行目にエラーがあります。このファイルは test.c という名前で保存されていて、makeprg は以下のコマンドを 使って設定してあります。

	 :set makeprg=gcc\ test.c
      

次に、 make コマンドは :make というコマンドを 使って起動します。すると gcc がエラーを出し、 make コマンドの 出力が以下のようなものになります。

Figure 12. :make コマンドで出たエラー

RETURN を押すと、カーソルは6行目に移動します。

今度は :cn コマンドがカーソルを4行目にもって いきます。

直前のエラー箇所に戻るには、 :cN コマンドが 使えます。これでカーソルは6行目に戻ることでしょう。

5行目のエラーを修正して "return 1;" を追加したら、 もう一度 :make を実行します。するとその出力は 次のようになります。

Figure 13. エラー無し

これはほんのわずかな一例です。でもこのQuickfixを使ってコンパイル 時間に関する問題が解決できるし、うまくいけば編集 - コンパイル - 編集の サイクルも削減できるのです。