NeoVimでLSP(Language Server Protocol)を使ったら、定義ジャンプなどが劇的に早くなった
こんにちわ
vim8を使ってgoのコーディングをしていたのですが、
マシンパワー不足&なぜかvimが重たくて、定義ジャンプなどが遅いのがかなりストレスだったので、
なんとか改善できないかと試行錯誤した結果、かなり早くになったので同じ状況に悩んでいる方がいたらぜひ試してみてください。
アジェンダ
vim-goとLSPのスピード差異
vim-goによるジャンプがもっさりしているのに対して、
LSPはサクッとジャンプしているのは一目瞭然ですね。
ちゃんと調べていないのですが、vim-goの重たい原因はおそらくguru
の範囲設定かと。
環境
機体
MacBook Early 2015
CPU 1.2 GHz Intel Core M
メモリ 8 GB 1600 MHz DDR3
OS
MacOS Mojave
Editor
Neovim 0.3.1
※vim8でもLSP動きました
導入
機体
MacBook Early 2015
CPU 1.2 GHz Intel Core M
メモリ 8 GB 1600 MHz DDR3
OS
MacOS Mojave
Editor
Neovim 0.3.1
※vim8でもLSP動きました
LSPを導入するには以下の様に設定するだけです。
設定ファイルはこちらにあります。
- dein.toml
[[plugins]]
repo = 'prabirshrestha/async.vim'
[[plugins]]
repo = 'prabirshrestha/vim-lsp'
- init.vim
let mapleader = "\<Space>"
" 中略...
if executable('go-langserver')
au User lsp_setup call lsp#register_server({
\ 'name': 'go-langserver',
\ 'cmd': {server_info->['go-langserver', '-mode', 'stdio']},
\ 'whitelist': ['go'],
\ })
endif
nmap <silent> <Leader>d :LspDefinition<CR>
nmap <silent> <Leader>p :LspHover<CR>
nmap <silent> <Leader>r :LspReferences<CR>
nmap <silent> <Leader>i :LspImplementation<CR>
nmap <silent> <Leader>s :split \| :LspDefinition <CR>
nmap <silent> <Leader>v :vsplit \| :LspDefinition <CR>
LSPのメリットとデメリット
メリット
見ての通り、マシンのパワーがなくてもそれなりに早く動くところが最大のメリットだと思っています。
デメリット
vim-goはgo run
、go vet
、go lint
など機能が豊富ですが、LSPは現時点で以下の事しかできないようです。
メリット
見ての通り、マシンのパワーがなくてもそれなりに早く動くところが最大のメリットだと思っています。
デメリット
vim-goはgo run
、go vet
、go lint
など機能が豊富ですが、LSPは現時点で以下の事しかできないようです。
主にコーディング時に使用する
- 定義ジャンプ(画面分割も含め)
- インターフェイス実装検索
- 定義箇所検索
くらいかと思うので、vim-goの機能と組み合わせればそれなりにコーディングスピードが上がるのではないかなと。
:LspNextError
などがあるようですが、いまいち使い方が分かっていないので知っている方いましたら教えて頂けると喜びます。
最後に
LSPが今後もっといろんな事ができるようになって行くと良いなと思いながら、気長に待とうと思います。
ちなみにvimでgoを書いている方で、こうすればもっと小コーディング捗るというのがあれば教えて頂けると喜びます。
なにどぞ…
Author And Source
この問題について(NeoVimでLSP(Language Server Protocol)を使ったら、定義ジャンプなどが劇的に早くなった), 我々は、より多くの情報をここで見つけました https://qiita.com/gorilla0513/items/783836797ff84a3a4753著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .