そろそろがっつり ruby 書こうと思ったのだがその前に vim の設定をする。
vim の ruby オプションを有効にする
まずはデフォルトでは無効になっている vim の ruby オプションを有効にする。
# デフォルトの vim は -ruby
$ vim --version | grep ruby
-python3 +quickfix +reltime +rightleft -ruby +scrollbind +signs +smartindent
ubuntu 標準の vim を使うのであれば再インストールの必要はなく、vim-nox を入れればそれで ruby が有効になる。
vim-nox は別に ruby のためのものではなく、以前 vim-full として提供されていたもので、いろいろなものがセットになっている。nox は no-x,つまり GUI が無い版ということらしい。とにかく他にもいろいろ有効になる。
$ sudo apt-get install vim-nox
# 再度確認
$ vim --version | grep ruby
-python3 +quickfix +reltime +rightleft +ruby +scrollbind +signs +smartindent
これでおk。補完が効いたりします。
Ruby で使えるプラグイン達をいれる
neobundle
プラグインの管理には neobundle を使用してます。
vim plugin を neobundle.vim で管理するように変更した。neocomplcache,neocomplcache-rsense
Shougo/neocomplcache.vim - GitHub
Shougo/neocomplcache-rsense.vim - GitHub
コード補完してくれるアレです。rsense というのは EmacsやVimに特化したRubyのための優れた開発援助ツール
ということで ruby に特化したものっぽい。
rsense は別途入れないといけないっぽいのでインストールします。それから vimproc も必要ですが省略。
$ sudo apt-get install openjdk-7-jdk
$ wget http://cx4a.org/pub/rsense/rsense-0.3.zip
$ unzip rsense-0.3.zip
$ sudo cp -R rsense-0.3 /opt/.
$ sudo chmod +x rsense-0.3 /opt/bin/rsense
$ /opt/rsense-0.3/bin/rsense version
RSense 0.3
$ ruby /opt/rsense-0.3/etc/config.rb > ~/.rsense
$ export RSENSE_HOME="/opt/rsense-0.3"
いれたら .vimrc に以下の一行を追加して rsense を読み込めるようにしましょう。
let g:neocomplcache#sources#rsense#home_directory = '/opt/rsense-0.3'
他の neocomplcache 関連の設定は以下のようにしてます。どこからかコピペしたままなんですけど。
" neocomplcache
let g:neocomplcache_enable_at_startup = 1
let g:neocomplcache_max_list = 20
let g:neocomplcache_manual_completion_start_length = 3
let g:neocomplcache_enable_ignore_case = 1
let g:neocomplcache_enable_smart_case = 1
" demiliter for function compl
if !exists('g:neocomplcache_delimiter_patterns')
let g:neocomplcache_delimiter_patterns = {}
endif
これで補完がかなり使えますね。
unite
Shougo/unite.vim - GitHubこれも ruby 関係ないけど便利なので。
" unite settings
let g:unite_enable_start_insert=1
noremap <C-U><C-B> :Unite buffer<CR>
"noremap <C-U><C-F> :Unite file -buffer-name=file<CR>
noremap <C-U><C-F> :<C-u>UniteWithBufferDir -buffer-name=files file<CR>
noremap <C-U><C-M> :Unite file_mru<CR>
au FileType unite nnoremap <silent> <buffer> <expr> <C-J> unite#do_action('split')
au FileType unite inoremap <silent> <buffer> <expr> <C-J> unite#do_action('split')
au FileType unite nnoremap <silent> <buffer> <expr> <C-K> unite#do_action('vsplit')
au FileType unite inoremap <silent> <buffer> <expr> <C-K> unite#do_action('vsplit')
au FileType unite nnoremap <silent> <buffer> <ESC><ESC> :q<CR>
au FileType unite inoremap <silent> <buffer> <ESC><ESC> <ESC>:q<CR>
au FileType unite call s:unite_my_settings()
taglist
これも ruby に限定したものじゃないけど便利なので。
taglist.vim を使ってみた。vim-rails
tpope/vim-rails - GitHubRails プロジェクト内のファイル間の移動とか簡単にできるアレです。
:R(model|controller|view) で今開いてるファイルに対応するモデルとかコントローラとかビューに飛べます。
この3つ以外にもいろいろジャンプできます。javascript とか helper とか。
:R(T|S|V|D) とかやると開き方を指定できます。左から順番に 新規タブ,水平分割,垂直分割,カレントバッファに読み込む となります。
Rails はファイルやディレクトリが多くて移動が面倒なので助かります。
vim-ref
thinca/vim-ref - GitHubruby のドキュメントを vim で読めるようにします。
まずは refe をいれる。gem で入る refe はどうやらうまく動いてくれないようなのでダウンロードしましょう。残念ながらまだ2.0は無いようです。
ドキュメント
$ wget http://doc.ruby-lang.org/archives/201208/ruby-refm-1.9.3-dynamic-20120829.tar.gz
$ tar zxvf ruby-refm-1.9.3-dynamic-20120829.tar.gz
$ mv ruby-refm-1.9.3-dynamic-20120829 ~/.vim/ruby-refm
$ vim ~/bin/refe
#!/bin/sh
exec ruby -Ke -I $HOME/.vim/ruby-refm/bitclust/lib $HOME/.vim/ruby-refm/bitclust/bin/refe --encoding=euc -d $HOME/.v im/ruby-refm/db-1_9_3 "$@"
$ refe Array
# 配列のドキュメントがでるはず。
ref.vimを使ってruby-1.9.3のマニュアルを閲覧する - ぼくのまわりはゆうわくだらけ うれしいね
vim-ref で ruby のドキュメントを参照するには上記のようにして refe コマンドが使える状態にしないといけないらしいんですけど、これをやっても vim 上では ref: refe:
としか表示されず謎。
システムコール呼び出せばいいので当面は !refe Array とかして使います。
ちなみにメソッド名とかの上で K 押すとどこのものかわからない英語のドキュメントが見れます。これはこれで便利。
ruby-matchit
vim-scripts/ruby-matchit - GitHubvim では () や {} などのカッコで % を押すと対応するもう片方のカッコにジャンプする機能があるんだけど、ruby では if - end みたいにカッコではなく end を多様するのでこれも % で移動できるようにします。
インストールしたら ruby-matchit.vim を ~/.vim/ftplugin/ruby/ に置きましょう。これで動くはずです。
他にもいろいろあるけど
他にも vim-rspec とか unite-rails とかいろいろあるっぽいけど、少しずつ使いながら付け足していこうかなーという感じですねはい。