Language Serverというものを知った
Language Server
少し前からTwitterあたりでLanguage Serverなるものについてのtweetを見かけるようになりました。 調べようと思ってそのまま放置していたのですが、近所に図書館があることが発覚したので、図書館開拓のついでに調べたことを書きます。
調べ始める前の認識
Language Server(またはLanguage Server Protocol)を観測するようになったのはVimの補完周りについてのtweetだったので、「neocompleteとかdeopleteと同じ補完関連の用語なのかなぁ」という認識でした。
ざっと調べて
Language Serverとは、色々な高機能エディタが(標準で、あるいはプラグインの形式で)もっている自動補完や変数やメソッドの検索/ジャンプといった、プログラミングする上で便利な機能をサーバ機能として提供するものです。 クライアント(エディタ)はLanguage Server Protocol(LSP)に従ってこの言語サーバを利用することで、エディタ/言語毎にプラグインを作成/導入することなく、言語サポートの恩恵を受けることができます。
VimのLSPプラグインはvim-lspがあるようなので、ちょっと使ってみました。
使ってみる
PythonでLSPを利用するためにはpython-language-server
が必要になるのでインストールします。
sudo pip install python-language-server
Vim側にいくつか必要なプラグインを導入します。
私はdein.vimを使っているので、dein.toml
に以下を記載しました。
[[plugins]] repo = 'prabirshrestha/asyncomplete.vim' [[plugins]] repo = 'prabirshrestha/async.vim' [[plugins]] repo = 'prabirshrestha/vim-lsp' hook_add = ''' 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 ''' [[plugins]] repo = 'prabirshrestha/asyncomplete-lsp.vim'
これだけで使えるようになります。
<TAB>
や<C-p>
、<C-n>
で補完候補を選択できますが、よく間違ってEnter押して改行されてしまうので、慣れか弄るかする必要がありそうです。
使ってみて
表面の表面しか触ってませんし、使い込んでみるとどうなるかはわかりませんが、とてもいい感じ。 使っていきながら困ったところが出てきたら調整していこうと思います。