パーソナルツール

辞書ファイルで入力を補完する

作者: 小見 拓 最終変更 2012年01月08日 11時57分

vimエディタの設定ファイルで「辞書ファイル」を指定しておくと、 その辞書ファイルを使用して、入力補完検索することができます。 (Windows, Mac)

概要

vimエディタの設定ファイルで「辞書ファイル」を指定しておくと、 その辞書ファイルを使用して、入力補完検索することができます。

辞書ファイルからの検索の様子

この記事ではこの辞書ファイルの使い方から、 Java用の辞書ファイルの使い方までを扱います。

インストール方法

まず、辞書ファイルを用意します。
辞書ファイルの中身は、 補完に使うキーワードを、改行で区切って入れたものです。

辞書ファイルの中身の例
const
continue
default
do
else
extends
false
final

辞書ファイルを用意したら、Vimの設定ファイル_vimrcに 以下のように設定を書きこんでください。 辞書ファイルが「j2se131.dict」という名前である時の設定例です。

" 設定例
:set dictionary=j2se131.dict

ファイルの種類に応じて、辞書ファイルを変えたいのであれば、 以下のように設定します。

" JavaとPHPで辞書ファイルを切りかえる例
autocmd FileType java :set dictionary=j2se131.dict<CR>
autocmd FileType php :set dictionary=PHP.dict<CR>

PHPの辞書ファイルは、 vim online にあります。

Note

当サイトでは、 Java2SE 1.3.1用Java2SE 1.4.2用 のvim用辞書ファイルを用意しています。 こちらは圧縮ファイルになっているので、ダウンロードしたら解凍ツールで解凍してください。

使用方法

例えば、以下のようなJavaのクラス名の書きかけがあったとして、

Attribu
Ctrl-x Ctrl-k

で、辞書ファイルからの検索を行い、

AttributeContext
Ctrl-n

を入力するたびに辞書ファイルから、次の候補を補完していきます。

AttributeInUseException

AttributeList

辞書ファイルの作り方 (Java)

では、新たにJavaの辞書ファイルを作成しましょう。
RAFというサイト から、perlスクリプトを拾ってきました。 ここで入手したスクリプトを改造してあります。

このperlスクリプトを使用するので、 このファイルを手元にダウンロードしてください。

Java用辞書ファイル作成スクリプト mkjdict.pl

このperlスクリプトはJava Jarファイルより、辞書の元になる情報を取り出すので、
辞書を作成するためにclassファイルの入ったJava Jarファイルが必要です。
また、このperlスクリプトの扱いに関して、 Windowsの場合、Mac OSXの場合、共に注意する点があります。

Windowsの場合の注意事項など

perlがインストールされている必要があります。
私が動作確認したperl環境は、

perl v5.6.1 build for cygwin

ですが、ActivePerlでも動作すると思われます。(未確認です)。
DOS プロンプトから、perlが実行できるようにしておいてください。

Mac OSXの場合の注意事項など

私が用意したperlスクリプトですが、そのままでは動作しません。 Mac OSXの環境に合わせて、perlスクリプトを一部変更します。
perlスクリプトの9から16行目をご覧下さい。

# mkjdict.pl 9 ~ 16行目
# file.separator
# line.separator
# Windows
my $FS = ";";
my $LS = "\r\n";
# OSX
#my $FS = ":";
#my $LS = "\n";

この部分を

# mkjdict.pl 9 ~ 16行目 変更後
# file.separator
# line.separator
# Windows
#my $FS = ";";
#my $LS = "\r\n";
# OSX
my $FS = ":";
my $LS = "\n";

この通り、変更してください。

辞書ファイルの作成

では、実際にJavaの辞書ファイルを作成してみます。
Terminal(Mac OSX)もしくは、MS-DOS プロンプトを(Windows)を立ち上げてください。
辞書ファイルを作成したい対象のJava Jarファイルを引数に指定して、perlスクリプトを実行します。

perl mkjdict.pl JavaJarファイル JavaJarファイル ..... > 作成したいJava辞書ファイル名

次のコマンドは、作成に使用するJava Jarファイルが
「/System/Library/Frameworks/JavaWebObjects.framework/Resources/Java/javawebobjects.jar」で、
「java_dictionary」が生成される辞書ファイルの時の例です。

# 使用例
perl mkjdict.pl /System/Library/Frameworks/JavaWebObjects.framework/Resources/Java/javawebobjects.jar > java_dictionary

同時に複数のJava Jarファイルも指定できます。

perl mkjdict.pl jarfile1 jarfile2 jarfile3 > java_dictionary

注意事項など

perlスクリプトでエラーが出る時は、

  • Jarファイルにクラスが含まれていない。
  • Jarファイルが参照しているクラスがCLASSPATHに無い。

などが原因として考えられます。

このサイトでは Java2SE 1.3.1用のvim用辞書ファイルJava2SE 1.4用のvim用辞書ファイル を用意しています。

また、PHPの辞書ファイルが vim online に用意されています。

ドキュメントアクション
コメント
blog comments powered by Disqus