vim用に、Rubyのクラス・メソッド名辞書を作成

ソフトウェア Add comments

Vim 7.0で強化された”CTRL-N, CTRL-P”で起動する補完機能が思いのほか便利です。ただ、この機能だと既にファイル中に存在する単語しか補完対象にならないのが残念なところ。vimには他にもあらかじめ用意しておいた辞書ファイルから補完してくれる、”CTRL-X, CTRL-K”で使える辞書補完機能もありますが、その辞書ファイルがあまり公開されておらず今まで活用できていませんでした。

そこで、自分で辞書ファイルの作成に挑戦してみることにしました。今回対象にしたのはRuby。下記のサイトが大変参考になりました。辞書機能の使い方についても解説されています。

>> Vim で PHP 関数の辞書を作成する方法についてのメモ >> 辞書ファイル [ 名無しのVIM使い ]

スクリプトで一括抽出できるようなテキストを探してみたところ、既にMac OS Xにインストールされていたri用のファイルが使えそうなのを発見。以下のRubyスクリプトでクラス名とメソッド名の辞書を作成できました。

#!/usr/bin/ruby -w ary = [] ARGV.each do |arg| File.open(arg) do |io| while text = io.gets do if /^full_name/ =~ text if m = /^full_name:\s”?(\w+)(?:#|::)(\w+[!?]?)/.match(text) ary.concat(m.captures) else STDERR.print “Skipped: #{arg}: #{text}” end end end end end ary.uniq.sort.each do |line| puts line end

このスクリプトを”make_ruby_dict.rb”という名前で保存して、以下のコマンドで”ruby.dict”を作成します。

Mac OS X 10.4 TigerにプリインストールされているRuby 1.8.2のファイルを使用する場合は、こんな感じです。

$ ruby make_ruby_dict.rb /usr/share/ri/1.8/system/*/*.yaml > ruby.dict

Ruby 1.8.2だと939語、Ruby 1.8.4 preview1を対象に実行すると966語の辞書になりました。Rubyの予約語や組み込み定数などは入っていません。

後は、でき上がった辞書ファイルのパスをvimに教えてあげればOKです。”.vimrc”に以下の行を追加します。ruby.dictへのパスは適時変更してください。

autocmd FileType ruby :set dictionary=$HOME/.vim/dict/ruby.dict

これで、とりあえず使えるようになりましたが、もっといい方法があればお知らせください。

Leave a Reply

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS ログイン