환경 설정

gvm

[[/go/gvm]]을 사용하면 Go 버전별로 설치해 관리하는 것이 가능하다.

gopls

gopls는 Go language server 이다.

go install golang.org/x/tools/gopls@latest

vim-go 설치

vim-go는 Vim에서 Go 언어를 사용해 코딩하기 위한 통합적 환경을 제공해 준다.

Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' }

coc.nvim 설정

coc-go를 설치해 준다.

:CocInstall coc-go

문제 해결

vim-go가 개인 Ultisnips snippet을 override하는 문제

vim-go의 snippet이 개인 [[/vim/ultisnips]] snippet을 override하는 문제가 있다.

나는 다음과 같이 설정해서 사용하고 있는데…

let g:UltiSnipsSnippetDirectories = ['~/dotfiles/UltiSnips']

vim-go를 사용하게 되면 이 설정을 다음과 같이 바꿔놓는다.

let g:UltiSnipsSnippetDirectories = ['~/dotfiles/UltiSnips', "gosnippets/UltiSnips"]

보기에는 두 개의 디렉토리를 설정해서 쓰는 것 같아서 별다른 문제가 없다. 그런데 실제로 사용해보면 내 개인 설정은 작동하지 않고 vim-go의 snippet만 작동한다. 뭔가 내가 잘못한 게 있겠지만 이걸 일일이 추적해서 고치기는 귀찮다.

따라서 다음과 같이 설정해서 vim-go의 snippet 기능이 작동하지 않게 했다. 이렇게 하면 ultisnips가 내 snippet을 토대로 잘 작동한다.

let g:go_loaded_gosnippets = 1

여기에서 1로 설정한 g:go_loaded_gosnippets는 vim-go의 help 문서에는 없는 값이다. 하지만 vim-go/plugin/gosnippet.vim 파일을 읽어보면 이 값을 1로 설정해서 이미 gosnippet.vim 파일이 로딩된 것처럼 꾸밀 수 있다는 것을 알 수 있다.

함께 읽기

  • [[/clojure/vim-setting]]
  • [[/vim/ultisnips]]