2019年2月17日日曜日

vim-lsp + asyncomplete.vimを使い始めた

mattnさんおすすめとの事で vim-lsp + asyncomplete.vim を使い始めてみましたが、これは凄く…良い! 超高速に動作します。

vim の補完ライブラリはもともと凄く便利なものがたくさんあるのですが、 実は私、少し前に補完ライブラリを豪快に切ってしまってました。 Python で Numpy などを使ってる人は同じ経験があるかも知れませんが、 候補が多過ぎてフリーズする事がよくありました。 その後この問題は解決されていたかも知れないのですが、 仕事にならなかったので、それ以来、補完をバッサリ切っていました (そして忘れていた)。 補完がなくても意外と生きていけていたのですが、やっぱあると便利ですね。

vim-lsp + asyncomplete.vim が良いなと思った点は3つあります。
  1. Numpy などの巨大ライブラリでも気持ち良く動く
  2. 必須ライブラリのインストールが楽ちん
  3. 設定が楽ちん (マニュアル通りの設定で気持ち良く動く)

(1) 素晴らしいとしか言いようがありません。Numpy をぬるぬる補完してくれて凄い。 (2-3) 私は設定を書くのが面倒というか苦手なので、設定は極力しません。 ライブラリのトップページに書いてある設定だけで思い通りに動いてくれるのは素晴らしい。

実際の設定はほぼマニュアル通りなので書く必要もない気がしますが、以下のように設定しました。 各言語ごとのインストールの前提条件をよく読めばそんなにつまらないはず。 特によく使っていて行数の増えやすい Python/JavaScript だけ設定してみましたが、必須ライブラリと if executable ... の設定だけで済むなら気軽に言語を増やしていけますね。
Plug 'prabirshrestha/vim-lsp'
Plug 'prabirshrestha/asyncomplete.vim'
Plug 'prabirshrestha/asyncomplete-lsp.vim'

Plug 'ryanolsonx/vim-lsp-python', {'for' : 'python'}
if executable('pyls')
  " pip install python-language-server
  au User lsp_setup call lsp#register_server({
        \ 'name': 'pyls',
        \ 'cmd': {server_info->['pyls']},
        \ 'whitelist': ['python'],
        \ })
endif
Plug 'ryanolsonx/vim-lsp-javascript', {'for' : ['javascript', 'javascript.jsx']}
if executable('typescript-language-server')
  " npm install -g typescript typescript-language-server
  au User lsp_setup call lsp#register_server({
        \ 'name': 'javascript support using typescript-language-server',
        \ 'cmd': { server_info->[&shell, &shellcmdflag, 'typescript-language-server --stdio']},
        \ 'root_uri': { server_info->lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_directory(lsp#utils#get_buffer_path(), '.git/..'))},
        \ 'whitelist': ['javascript', 'javascript.jsx']
        \ })
endif
私の確認した限りでは Ruby はまだきちんと動かない感じでしたが、とても期待の持てる感じでもありました。 まだまだ発展途上の感じはありますが、今後に大期待です。


2019-12-25: mattn さんお手製のプラグインとして mattn/vim-lsp-settings が出てきました。 このプラグインを使うと if executable ... の設定も不要になり、上記の設定は以下に短縮できます。 また言語ごとに必要な Language Server のインストールも :LspInstallServer コマンドを打つことで、一発でできるようになりました。
Plug 'prabirshrestha/vim-lsp'
Plug 'prabirshrestha/asyncomplete.vim'
Plug 'prabirshrestha/asyncomplete-lsp.vim'
Plug 'mattn/vim-lsp-settings'
" ここから下も :LspInstallServer に頼れば書かなくていい
" Plug 'ryanolsonx/vim-lsp-python', {'for' : 'python'}
" Plug 'ryanolsonx/vim-lsp-javascript', {'for' : ['javascript', 'javascript.jsx']}
これは楽ちんだ!

0 件のコメント: