pockestrap

Programmer's memo

neocomplete用にRubyの辞書を作った(るりま編)

vim用にrubyの辞書が欲しかったので用意した | blog: takahiro okumura などを読んでRubyの辞書を作りたくなりました。 しかし、先ほどのコードはrbenv前提であり私はrbenvを使っていないため、るりまから辞書を作成しました。

「辞書」とは

単語を改行区切りで羅列したファイルです。

辞書ファイルに書かれた単語が対象のファイルタイプで補完されます。

作り方

Rubyリファレンスのダウンロード

まずは、bitclust gem をインストールします。 そして、bitclustからRubyのリファレンスをダウンロードします。

ちなみに、bitclustに依存しているrefe2 gemをインストールすると、Ref.vimで便利に使えます。

$ gem install bitclust
$ bitclust setup --versions=2.1.0

versionの部分は使用したいバージョンで。

辞書の作成

bitclust --list methodで、メソッド一覧が吐き出されるのでこれを利用します。

以下のRubyコードに上記のコマンドの出力を食わせて、辞書ファイルを作成します。

STDIN.map do |line|
  line =~ /^.+[#.]([a-zA-Z0-9_?!]+)$/
  $1
end.select do |name|
  name and name.size > 2
end.sort.uniq.each do |name|
  puts name
end

メソッド一覧から演算子でないメソッドを取り出し、かつ3文字以上のメソッドを出力しています。 これをruby.rbなどと保存して、

$ bitclust --list method | ruby ruby.rb > ruby.dict

などとしてやると、ruby用の辞書が作成されます。

vimrcの編集

let s:neco_dicts_dir = $HOME . '/dicts'
if isdirectory(s:neco_dicts_dir)
  let g:neocomplete#sources#dictionary#dictionaries = {
  \   'ruby': s:neco_dicts_dir . '/ruby.dict'
  \ }
endif

vimrcにこのように書きます。 ~/dicts/下にruby.dictをおいてください。

Demo

これでRubyファイルを編集していると、このように補完できます。楽しいヽ( >ヮ<)ノ

f:id:Pocke:20140810104415p:plain


今回使用したソースコードなどはGithubにおいてあります。

pocke/dicts · GitHub