VimでUnityのコードを編集する(2)
ゴールデンウィーク満喫中です。
私以外に何人この記事で得する人がいるのかは少々疑問ですが、今日は前回に引き続き、UnityのコードをVimで編集する際のTipsを書いてみたいと思います。
VimでUnityのコードを補完する
Vimでは専用の辞書ファイルを登録することで、利用環境に合わせた入力キーワードの補完ができるようになります。
しかし、残念ながらUnityのクラスやメソッドに対応した辞書ファイルは存在しないので、公式サイトのAPIリファレンスをスクレイピングして辞書ファイルを作成することにします。
Unity用辞書ファイルを作成する
UnityのAPIリファレンスから各種キーワードを抜き出すRubyスクリプトです。
require 'set' require 'open-uri' BASE_URL = 'http://docs.unity3d.com/ScriptReference/' FILENAME = 'unity.dict' def make_dict dict = Set.new parse_index(dict) open(FILENAME, 'w') do |f| dict.sort.each { |name| f.puts(name) } end end def parse_index(dict) file = download_file(File.join(BASE_URL, 'docdata/toc.js')) classes = file.scan(/"link":"(.*?)","title":"(.*?)"/m) classes.each do |item| link, name = item[0], item[1] if link != 'null' && link != 'toc' dict.add(name) parse_class(dict, "#{BASE_URL}#{link}.html") end end end def parse_class(dict, url) file = download_file(url) methods = file.scan(/class="lbl"><a href=.*?>(.*?)<\/a>/m) methods.flatten.each do |name| dict.add(name) unless name.start_with?('operator') end end def download_file(url) puts "download: #{url}" open(url) { |data| data.read } end make_dict
スクリプトで実際に作成した辞書ファイルがこちらです。
GitHubのリポジトリにもソースコードと辞書ファイルを登録しておきましたので、必要に応じてご利用ください。
Vimに辞書ファイルを登録する
後は以下のリンクなどを参考に、Vimの補完設定に合わせて辞書ファイルを登録すれば完了です。
無事補完できました。