Rsenseとは?
オリジナル開発者の説明によれば、
RSenseはEmacsやVimなどの高機能テキストエディタに特化したRubyのための開発援助ツールです。UNIXの思想に従うことで高い透明性を実現し、ユーザーが簡単に学習・拡張・修正できるように設計されています。また、コピーレフトライセンス(GPLv3+)を採用することで、自由なソフトウェアであり続けることを保証しています。
--- [RSense \- ユーザーマニュアル](https://web.archive.org/web/20150311151946/http://cx4a.org/software/rsense/manual.ja.html)
ようするに、Ruby言語用の賢い補完候補提供ツール になります。
オリジナル開発者版とは別にいくつかバージョンがありますが、現在は、GitHub:rsense/rsense: Rsense Can See Allにてメンテされているようです。
このバージョンとVimのプラグイン管理アプリであるdeinとの組み合わせでどんぴしゃの解説が見当たらず、試行錯誤して出来るようになったので、簡単にまとめます。
なお、私の環境は、Macです。
Vim とどう組み合わせるのか?
下記の構成になります。
- Vim
- dein - プラグインマネージャ
- rsense/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!
autocmd VimEnter * if dein#check_install() | call dein#install() | endif
augroup END
" 各プラグインをインストールするディレクトリ
let s:plugin_dir = expand('~/.vim/')
" dein.vimをインストールするディレクトリをランタイムパスへ追加
let s:dein_dir = s:plugin_dir . 'repos/github.com/Shougo/dein.vim'
execute 'set runtimepath+=' . s:dein_dir
" dein.vimがまだ入ってなければ 最初に git clone
if !isdirectory(s:dein_dir)
call mkdir(s:dein_dir, 'p')
silent execute printf('!git clone %s %s', 'https://github.com/Shougo/dein.vim', s:dein_dir)
endif
"dein plugin settings
if dein#load_state(s:plugin_dir)
call dein#begin(s:plugin_dir)
endif
" ここからインストールするプラグイン
call dein#add('Shougo/dein.vim')
call dein#add('Shougo/neocomplcache.vim')
call dein#add('Shougo/neocomplcache-rsense.vim')
" neocomplcacheの設定
" Disable AutoComplPop.
let g:acp_enableAtStartup = 0
" Use neocomplcache.
let g:neocomplcache_enable_at_startup = 1
" Use smartcase.
let g:neocomplcache_enable_smart_case = 1
" Set minimum syntax keyword length.
let g:neocomplcache_min_syntax_length = 3
let g:neocomplcache_lock_buffer_name_pattern = '\*ku\*'
let g:neocomplcache_enable_camel_case_completion = 1
let g:neocomplcache_enable_underbar_completion = 1
" Rsense用の設定
if !exists('g:neocomplcache_omni_patterns')
let g:neocomplcache_omni_patterns = {}
endif
let g:neocomplcache_omni_patterns.ruby = '[^. *\t]\.\w*\|\h\w*::'
autocmd FileType ruby setlocal omnifunc=rubycomplete#Complete
"rsenseのインストールフォルダがデフォルトと異なるので設定
let g:rsenseHome = expand("*Rsenseのインストールパスをここにペースト*")
let g:rsenseUseOmniFunc = 1