4. 単語の自動補完

次のコードを考えます。

Figure 9. 自動補完の例

A_Very_Long_Function_Name() という関数は、何度も何度もタイプ するので、まったく癪の種になることがあります。でもまだ挿入モードに いる間でも、その前後にある単語を探して、単語を自動補完 できるのです。Another_Function() という関数の中で A_Very... とタイプ し、CTRL-P と打ってもいいでしょう。最初に一致した 単語が最初に表示されます。この場合は A_Very_Long_Variable_Name かも しれません。正しく補完するためにもう一度 CTRL-P と打ち、次に一致する単語まで検索が続きます。その単語が A_Very_Long_Function_Name です。正しい単語が見つかったら、ただちに タイプを続けられます。この過程の間はずっとVIMが挿入モードのままで います。

CTRL-P と似たものに CTRL-N と いうキーストロークがあります。これは後方検索の代わりに前方検索 を行なうものです。これらのキーストロークは両方とも、ファイルの先頭 かファイルの最後に行き当たるまで検索を続けます。

CTRL-PCTRL-N は CTRL-X モードというモードの一部になっています。 CTRL-X モードは挿入 モードのサブモードです。だから挿入モードにいるときは、この モードに入れるわけです。 CTRL-X モードを抜けるには CTRL-X, CTRL-P および CTRL-N 以外のキーストロークを何か打てば いいです。いったんCRTL-X モードを抜けたら、挿入モードに戻ります。

CRTL-X モードを使えば、さまざまな方法で自動補完ができるように なります。ファイル名を自動補完することさえできます。ヘッダー ファイルをインクルードしなければならない時に、これは特に役立ちます。 CTRL-X モードを使えば、次のようなやり方で foo.h という ファイルがインクルードできます。

	 #include "f CTRL-X CTRL-F"
      

そう、CTRL-X CTRL-Fです。わかってる、わかってるって。emacsみたい だっていうんでしょ ;-) CTRL-Xモードではできることが他にもあります。 そんなものの一つが辞書補完です。これを使うと単語の一覧が入った ファイルを指定して、それを使って補完するようにできるんです。 ディフォルトだとこの辞書オプションは設定されていません。 設定するには :set dictionary=file という コマンドを使います。大抵は C 言語のキーワードや typedef そして #define なんかをこの辞書ファイルに置いておけます。 同じように、 C++ や Java のプログラマなら、クラス名を加えるのに惹かれるかも しれません。

辞書ファイルのフォーマットは単純です。 1 行に一つ補完したい単語 を書いておくだけです。だから、 C 言語の辞書ファイルというのは たぶんこんなようなものになるんでしょう。

Figure 10. 辞書ファイルのサンプル

辞書補完を使うには、 CTRL-X CTRL-K と打つ 必要があります。補完は CTRL-PCTRL-N のキーストロークに似ています。 だから、えーっと、 "typedef" とタイプするなら、 CTRL-X CTRL-K と打つだけでよくて、すると、パッと出てきて、 名前の補完が完了です。