Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

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

$
0
0

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に対応しています。

手順

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

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

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

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

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

.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

こんな感じ

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

参考リンク


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>