Rsenseとは?
オリジナル開発者の説明によれば、
RSenseはEmacsやVimなどの高機能テキストエディタに特化したRubyのための開発援助ツールです。UNIXの思想に従うことで高い透明性を実現し、ユーザーが簡単に学習・拡張・修正できるように設計されています。また、コピーレフトライセンス(GPLv3+)を採用することで、自由なソフトウェアであり続けることを保証しています。
ようするに、Ruby言語用の賢い補完候補提供ツールになります。
オリジナル開発者版とは別にいくつかバージョンがありますが、現在は、GitHub:rsense/rsense: Rsense Can See Allにてメンテされているようです。
このバージョンとVimのプラグイン管理アプリであるdeinとの組み合わせでどんぴしゃの解説が見当たらず、試行錯誤して出来るようになったので、簡単にまとめます。
なお、私の環境は、Macです。
Vim とどう組み合わせるのか?
下記の構成になります。
- Vim
- dein - プラグインマネージャ
- Rsense - Gemで導入
- Shougo/neocomplcache.vim - Vimの補完プラグイン。deinを利用して導入
- Shougo/neocomplcache-rsense.vim - neocomplecacheとRsenseを組み合わせるためのプラグイン
補完プラグインであるneocomplecacheは、すでに後継のShougo/neocomplete.vimに開発が移行して久しいですが、rsenseと組み合わせて使うプラグインは、neocompleteだと現在無く、neocomplecacheだとあるためです。
また、私自身がneocompleteとneocomplecacheの違いが分からないままneocomplecacheの方を使っていたという事情もあります。
現在、Rubyの補完用Vimプラグインとしては、osyo-manga/vim-monster: Ruby code completion.の方をおすすめされることも多いようで、こちらは公式にneocompleteに対応しています。
手順
Rsenseをインストール
$ gem install rsense
Rsenseのインストールパスを取得
$ which rsense
返ってきたRsenseのインストールパスをコピーする
.vimrc
に以下のように記述
(すでにご自身で書いてあるものなどは飛ばしてください。また、設定は好みで変えてください。)
" dein" Vim起動完了時にインストール
augroup PluginInstall
autocmd!autocmdVimEnter * if dein#check_install()|call dein#install()|endif
augroup END
" 各プラグインをインストールするディレクトリlets:plugin_dir = expand('~/.vim/')" dein.vimをインストールするディレクトリをランタイムパスへ追加lets:dein_dir =s:plugin_dir . 'repos/github.com/Shougo/dein.vim'
execute 'set runtimepath+=' . s:dein_dir
" dein.vimがまだ入ってなければ 最初に git cloneif!isdirectory(s:dein_dir)callmkdir(s:dein_dir,'p')silent execute printf('!git clone %s %s','https://github.com/Shougo/dein.vim',s:dein_dir)endif"dein plugin settingsif dein#load_state(s:plugin_dir)call dein#begin(s:plugin_dir)" ここからインストールするプラグインcall dein#add('Shougo/dein.vim')call dein#add('Shougo/neocomplcache.vim')", {'if' : has('lua') })call dein#add('Shougo/neocomplcache-rsense.vim')", {'autoload' : { 'insert' : 1, 'filetypes' : 'ruby' }})" neocomplcacheの設定" Disable AutoComplPop.letg:acp_enableAtStartup =0" Use neocomplcache.letg:neocomplcache_enable_at_startup =1" Use smartcase.letg:neocomplcache_enable_smart_case =1" Set minimum syntax keyword length.letg:neocomplcache_min_syntax_length =3letg:neocomplcache_lock_buffer_name_pattern ='\*ku\*'letg:neocomplcache_enable_camel_case_completion =1letg:neocomplcache_enable_underbar_completion =1" Rsense用の設定if!exists('g:neocomplcache_omni_patterns')letg:neocomplcache_omni_patterns = {}
endifletg:neocomplcache_omni_patterns.ruby='[^. *\t]\.\w*\|\h\w*::'autocmdFileTyperubysetlocalomnifunc=rubycomplete#Complete
"rsenseのインストールフォルダがデフォルトと異なるので設定letg:rsenseHome = expand("*Rsenseのインストールパスをここにペースト*")letg:rsenseUseOmniFunc =1