LoginSignup
23
15

More than 5 years have passed since last update.

[Vim] Vim に Language Server Protocol クライアント機能を導入して Rubyの補完機能を復活させた

Posted at

YouCompleteMe をしばらく前から使っていました。最近、MacOSXな環境で、Rubyの補完がうまく動かなくて、 . を入力した瞬間、 vim が死亡するようになってしまいました。原因は良くわかりません。とりあえず、死ぬのは困るので、 --disable-rubyinterp で、Vimをビルドしてました。

YouCompleteMe で、Ruby の補完ができなくなってしまったので、何か他に良い方法ないかとあちこちのサイトを眺めていて、 deoplete.nvimLanguageClient-neovimsolargraph を組み合わせたら、行けるんじゃないかと思い、試してみました。

deoplete.nvim

deoplete.nvim をインストールします。

.vimrc
if has('nvim')
  Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' }
else
  Plug 'Shougo/deoplete.nvim'
  Plug 'roxma/nvim-yarp'
  Plug 'roxma/vim-hug-neovim-rpc'
endif
let g:deoplete#enable_at_startup = 1

LanguageClient-neovim

LanguageClient-neovim は、Neovimやvim を language server protocol(LSP) に対応させるためのスクリプトです。

.vimrc
Plug 'autozimu/LanguageClient-neovim', {
    \ 'branch': 'next',
    \ 'do': 'bash install.sh',
    \ }

" (Optional) Multi-entry selection UI.
Plug 'junegunn/fzf'

設定の追加

起動時に deoplete を有効にして、Rubyスクリプトを編集するときは、 solargraph が LSPサーバーとして動作するように設定します。

.vimrc
let g:deoplete#enable_at_startup = 1
let g:LanguageClient_serverCommands = {
    \ 'ruby': ['solargraph', 'stdio'],
\}
call deoplete#custom#var('omni', 'input_patterns', {
    \ 'ruby': ['[^. *\t]\.\w*', '[a-zA-Z_]\w*::'],
\})

Python3 interface のインストール

Python3 interface をインストールします。

$ pip3 install neovim

solargraph のインストール

$ gem install solargraph
$ yard gems
$ yard config --gem-install-yri 

動作確認

.rbファイルを開いて、 cl と入力すると以下のような候補が表示されます。

2018-07-14-140807_536x203_scrot.png

おわりに

もっと、色々いじると便利になるのかも知れませんが、今のところ、こんな感じで様子を見たいと思います。

他の言語でも LSPなサーバーをインストールすれば、同じように使えると思いますが、そこは様子を見ながら切り替えたいと思います。

23
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
15