NeoVim에서 LSP (Language Server Protocol)를 사용하면 정의 점프 등이 극적으로 빨라졌습니다.

6434 단어 5neovimvim-goLSP
안녕하세요

vim8을 사용하여 go를 코딩했지만,
머신 파워 부족&왠지 vim이 무겁고, 정의 점프등이 느린 것이 꽤 스트레스였으므로,
어떻게든 개선할 수 없을까 시행착오한 결과, 꽤 빨라졌으므로 같은 상황에 고민하고 있는 분이 있으면 꼭 시험해 보세요.

아젠다


  • vim-go와 LSP의 속도 차이
  • 환경
  • 소개
  • LSP의 단점
  • 마지막으로

  • vim-go와 LSP의 속도 차이


  • vim-go
  • LSP(Language Server Protocol)

  • vim-go의 점프가 푹신한 반면,
    LSP는 바삭하게 점프하고 있는 것은 일목요연이네요.

    제대로 조사하고 있지 않습니다만, vim-go의 무거운 원인은 아마 guru 의 범위 설정일까.

    환경


  • 기체
    MacBook Early 2015
    CPU 1.2GHz Intel Core M
    메모리 8GB 1600MHz DDR3
  • OS
    MacOS Mojave
  • Editor
    Neovim 0.3.1
    ※ vim8에서도 LSP가 움직였습니다
  • Plugin
    dein
    vim-lsp
    vim-async

  • 소개



    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의 기능과 조합하면 나름대로 코딩 스피드가 오르는 것은 아닐까라고.:LspNextError 등이 있는 것 같습니다만, 지금 이치 사용법을 모르기 때문에 알고 있는 분이 있으면 가르쳐 주시면 기뻐합니다.

    마지막으로



    LSP가 앞으로 더 많은 일을 할 수 있게 되어 가면 좋다고 생각하면서, 기장에 기다리려고 생각합니다.
    덧붙여서 vim으로 go를 쓰고 있는 분으로, 이렇게 하면 좀더 소코딩 완성한다고 하는 것이 있으면 가르쳐 주실 수 있으면 기뻐합니다.
    뭐야...

    좋은 웹페이지 즐겨찾기