VimでRailsの補完設定
仕事でRailsプロジェクトを触ることがあるんですけど、Vimでの補完候補にRails本体のメソッドなんかが出てこないのでなんとかしたいなとずっと思っていました。
わたしの環境
neovimのv0.10.1でcoc.nvimを使っています。
Rubyの補完
素のRubyの場合は、あまりハマらずすんなり補完できます。gemでsolargraphを入れておいて、coc.nvim側ではcoc-solargraphを有効にするだけです。
今回の例では、bundlerを使わずにgem install
でsolargraphを入れています。
$ gem install solargraph
こんな感じになります。
うまくいかない場合
思った通りいかないときは:CocInfo
でログを見てみましょう。たいていクラッシュしてたりと、なんだかんだ原因が出力されています。
Rubyのバージョンアップ後はわりと動かなくなります。この場合はsolargraph, nokogiri, rbsあたりを再インストールしてだいたい解決します。
mason
ちなみに常用してないんであっさり紹介にとどめますが、mason.nvimでも同様にsolargraphを使うと同じように補完できます。わたしの設定は以下。
require('mason').setup()
require("mason-lspconfig").setup {
ensure_installed = { "solargraph" },
}
require'lspconfig'.solargraph.setup{}
Railsの補完
Vim上の設定はsolargraphを使えるようにするだけなのですが、Railsでいい感じにするためにはVimの外側で頑張らないといけないようです。Rails用のプラグインがあるので、それを入れます。
$ gem install solargraph-rails
solargraphの設定ファイルを用意します。
$ solargraph config
Configuration file initialized.
プラグインの項目にさっきのsolargraph-railsを追加します。
$ diff -ur .solargraph*
--- .solargraph-old.yml 2024-09-14 16:30:13
+++ .solargraph.yml 2024-09-14 16:30:21
@@ -18,5 +18,6 @@ plugins: []
only: []
extra_args: []
require_paths: []
-plugins: []
+plugins:
+- solargraph-rails
max_files: 5000
solargraphをgem install
で入れているので、Railsも同様に入れておく必要があります。全部終わったらyard gems
でドキュメントの生成もしておきます。
$ gem install rails
$ yard gems
以上の設定で、Rails由来のメソッドの補完も効くようになりました。ドキュメントもすぐに参照できるので便利です!
bundle add solargraphしたい
Gemfileの中でsolargraphを使えるように追加しておくケースもあると思います。これができるなら、おそらくこっちのほうがいいんですよね(Rubyのプロジェクトにあんま詳しくないのでよくわかってないけど)。
Gemfileに入れた場合は、solargraphもbundle exec
経由で実行できるようにVim側の設定が必要です。coc.nvimの場合は:CocConfig
で設定ファイルを開き、solargraph.useBundler
をtrueにします。
{
"solargraph.useBundler": true
}
特定のプロジェクトだけで有効にしたい場合などは、:CocLocalConfig
でプロジェクトローカルの設定ができるので、使い分けも可能です。
まとめ
終わってみれば設定内容はシンプルでした。solargraphとRailsを同じ環境に突っ込んでyard gems
が必要!というのがどうやらポイントみたいですね。なんかが欠けてるとうまく動かないようだし、そもそもRailsようわからんというもあり、ここにくるまで正直めんどかったですが、理屈が結構わかったので良かったです。
しばらく触らないでいたら絶対動かなくなって「どうやるんだっけ?」ってなるだろうから、そのときのために記事に残しておくことにしました。皆さんも気づいたことは記録しておくといいんじゃないかと思います。では。
Discussion