vim-bundler, vim-rails, vim-rake, vim-ruby プラグインなどで ruby コマンドを実行していて、.ruby-version に jruby が指定されていると、jruby が実行されることになるので遅い。jruby の立ち上がりに3秒ぐらいかかる
該当箇所
vim-bundler
vim-bundler/plugin/bundler.vim
337: let gem_paths = split(system(prefix.'ruby -rubygems -e '.s:shellesc('print Gem.path.join(%(;))')), ';')
340: let abi_version = system('ruby -rrbconfig -e '.s:shellesc('print RbConfig::CONFIG["ruby_version"]'))
vim-rails
vim-rails/autoload/rails.vim
1838: call system("ruby -e 'Process.kill(:TERM,".pid.")'")
1841: call system("ruby -e 'Process.kill(9,".pid.")'")
4043: let json = system('ruby -e '.s:rquote('require %{yaml}; require %{json}; File.open(%q{'.a:file.'}) {|f| puts JSON.generate(YAML::load(f))}'))
vim-rake
vim-rake/plugin/rake.vim
217: let self._ruby_include_path = system('ruby -rrbconfig -e "print RbConfig::CONFIG[\"rubyhdrdir\"] || RbConfig::CONFIG[\"topdir\"]"')
vim-ruby
78: let path_check = prefix.'ruby -e "' . code . '"'
80: let path_check = prefix."ruby -e '" . code . "'"
対応方法
(0) vimrc で let g:ruby_path = ""
のように cruby のパスを指定する
これは、この変数も見てくれないプラグインもあってダメだった。
(1) .ruby-version を変える
rbenv shell で cruby を指定してから vim を開けば良い。
いや、それはそうなんだが、辛い。
(2) vim プラグインの ruby パスを書き換える
(0) で述べたように、変数でパスを変えられなさそうなので、直接プラグインを改変する。
/usr/bin/ruby
とシステム ruby を使うように書き換えてしまえば速くなる。
これは辛い。
(3) vim 起動時に PATH を変える
/usr/bin を優先にして vim を起動すれば、システム ruby が使われるので速くなる。
env PATH=/usr/bin:$PATH vim foo.rb
のように。alias しておくとこう。
alias vim='env PATH=/usr/bin:$PATH \vim'
まとめ
とりあえず (3) でやってるけど、もっと上手い方法あれば welcome