[vim]CentOS6.5にvim7.4をインストールしてrubyの補完ができるようにする(neocomplcache)
最初はvim7.2で試していたのですが、プラグインのアップデートをした際に一部プラグインが7.2では動かなくなったのでvim7.4にアップデートしました。
ついでにrubyの補完を使いたかったのでneocomplcacheを使った設定をしてみました。
1. vim7.4のインストールとrubyオプションの有効化
まずはvim7.4のインストールから。
以下の記事が参考になりました。
CentOSにVimをインストール - Qiitaが、configure時にrubyオプションを有効にしているにもかかわらずハマりました。
vim --version|grep ruby -ruby # +rubyにならない
ruby-develをインストールする必要があるようです。
sudo yum install ruby-devel
再度configure
sudo ./configure --enable-multibyte --with-features=huge --enable-cscope --enable-gui=gtk2
--disable-selinux --prefix=/usr/local
--enable-xim --enable-fontset
--enable-gpm
--enable-rubyinterp
--with-python-config-dir=/usr/lib/python2.6/config
--enable-luainterp=yes --with-lua-prefix=/usr
インストール
sudo make
sudo make install
再確認
vim --version|grep ruby +ruby
rubyオプションが有効になりました!
2. neocomplcache周りの設定
色々な記事を参考にさせていただいて設定してみました。
# ~/.vimrc
NeoBundle 'Shougo/neocomplcache'
"----------------------------------------
" neocomplcache
"----------------------------------------
let g:acp_enableAtStartup = 0
" 起動時に有効
let g:neocomplcache_enable_at_startup = 1
" 自動補完を行う入力数を設定。初期値は2
let g:neocomplcache_auto_completion_start_length = 2
" 手動補完時に補完を行う入力数を制御。値を小さくすると文字の削除時に重くなる
let g:neocomplcache_manual_completion_start_length = 3
" 補完候補検索時に大文字・小文字を無視する
let g:neocomplcache_enable_ignore_case = 1
" 大文字小文字を区切りとしたあいまい検索を行うかどうか。
let g:neocomplcache_enable_camel_case_completion = 1
" 入力に大文字が入力されている場合、大文字小文字の区別をする
let g:neocomplcache_enable_smart_case = 1
" アンダーバーを区切りとしたあいまい検索を行うかどうか。
let g:neocomplcache_enable_underbar_completion = 1
" シンタックスファイル中で、補完の対象となるキーワードの最小長さ。初期値は4。
let g:neocomplcache_min_syntax_length = 3
" バッファや辞書ファイル中で、補完の対象となるキーワードの最小長さ。初期値は4。
let g:neocomplcache_min_keyword_length = 2
let g:neocomplcache_enable_quick_match = 1
" ポップアップメニューで表示される候補の数。初期値は100
let g:neocomplcache_max_list = 20
let g:neocomplcache_dictionary_filetype_lists = {
\ 'default' : ''
\ }
if !exists('g:neocomplcache_keyword_patterns')
let g:neocomplcache_keyword_patterns = {}
endif
let g:neocomplcache_keyword_patterns._ = '\h\w*'
if !exists('g:neocomplcache_omni_patterns')
let g:neocomplcache_omni_patterns = {}
endif
let g:neocomplcache_omni_patterns.ruby = '[^. *\t]\.\h\w*\|\h\w*::'
inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>"
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<S-TAB>"
inoremap <expr><C-y> neocomplcache#close_popup()
- 確認
適当なrubyファイルを作成して、"Hello".to_を打つと候補が表示されます。
to_jsonが候補にないのはruby-develで入れたバージョンが1.8だからでしょうか。
ruby最新バージョンでうまく補完ができるようにしたいところですが、一旦はこれでやってみようと思います。
すぐ忘れるので補完周りのコマンドもメモしておきます。(上記設定の場合)
コマンド | 説明 | 備考 |
---|---|---|
Ctrl-x Ctrl-o | インサートモードで実行すると補完候補を表示 | |
tab | 補完候補表示時に次の候補へ移動 | Ctrl-n でも可能 |
Shift-tab | 補完候補表示時に前の候補へ移動 | Ctrl-p でも可能 |
Ctrl-y | 補完表示を閉じる | |
Enter | 補完候補表示時に補完を確定 |
これでまたvimが快適になりました。