LoginSignup
46
33

More than 5 years have passed since last update.

Rsense(rsense/rsense)を利用してVimでRubyの補完を実現する

Last updated at Posted at 2016-09-21

Rsenseとは?

オリジナル開発者の説明によれば、

RSenseはEmacsやVimなどの高機能テキストエディタに特化したRubyのための開発援助ツールです。UNIXの思想に従うことで高い透明性を実現し、ユーザーが簡単に学習・拡張・修正できるように設計されています。また、コピーレフトライセンス(GPLv3+)を採用することで、自由なソフトウェアであり続けることを保証しています。

ようするに、Ruby言語用の賢い補完候補提供ツール になります。

オリジナル開発者版とは別にいくつかバージョンがありますが、現在は、GitHub:rsense/rsense: Rsense Can See Allにてメンテされているようです。

このバージョンとVimのプラグイン管理アプリであるdeinとの組み合わせでどんぴしゃの解説が見当たらず、試行錯誤して出来るようになったので、簡単にまとめます。

なお、私の環境は、Macです。

Vim とどう組み合わせるのか?

下記の構成になります。

補完プラグインであるneocomplecacheは、すでに後継のShougo/neocomplete.vimに開発が移行して久しいですが、rsenseと組み合わせて使うプラグインは、neocompleteだと現在無く、neocomplecacheだとあるためです。

また、私自身がneocompleteとneocomplecacheの違いが分からないままneocomplecacheの方を使っていたという事情もあります。

現在、Rubyの補完用Vimプラグインとしては、osyo-manga/vim-monster: Ruby code completion.の方をおすすめされることも多いようで、こちらは公式にneocompleteに対応しています。

手順

  1. Rsenseをインストール
    $ gem install rsense

  2. Rsenseのインストールパスを取得
    $ which rsense

  3. 返ってきたRsenseのインストールパスをコピーする

  4. .vimrcに以下のように記述

(すでにご自身で書いてあるものなどは飛ばしてください。また、設定は好みで変えてください。)

.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


こんな感じ

screencast 2016-09-22 01-14-49.gif

参考リンク

46
33
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
46
33