YCM에서 Go 자동완성이 안되는 문제

gocode 문제인지 YCM 문제인지

내 주 개발환경은 vim-goYouCompleteMe이다(그리고 이건 ‘였다’로 바뀌게 된다). YCM을 설치할 때 여러 시행착오를 겪기도 했지만 맥북에 성공적으로 설치한 뒤 계속 사용해오고 있었다. 이번에 만자로 리눅스를 설치하면서 개발 환경을 재구축해야 하는 상황이 되었는데, 맥북에서 잘 쓰고 있는 .vimrc 파일을 그대로 가져와 사용하기로 생각했었다.

Vundle.Vim을 사용해 :PluginInstall를 문제 없이 넘기고 YCM 디렉터리에 들어가 python3 install.py --go-completer를 실행했을 때도 make가 깔려있지 않아 한번 실패했던 것을 제외하면 아무런 문제 없이 빌드되었다. 그리고 행복하게 개발했답니다~라고 끝난다면 이 포스트가 생기지 않았을 것이다.

테스트를 위해 nvim main.go를 실행해보았다. vim-go는 vim으로 go 파일을 생성할 시에 Hello, World!가 출력되는 예제를 만들어준다. fmt.Println("Hello, World!") 아래에 한줄을 만들고 fmt.까지 입력하였다. 정상적으로 작동을 한다면 Println, Sprintlnfmt에 속한 함수들을 보여주어야 할텐데, 아무 것도 보이지 않았다.

아무런 에러 내용이 나타나질 않길래 :YcmToggleLogs로 gocode의 에러 로그를 보았다. 에러가 있긴 있었다. 에러 내용을 그대로 복사&붙여넣기 하여 구글에 검색해봐도 해결되는 방법을 찾을 수 없었다. gocode가 문제인 걸까하고 여러번 재설치해보고 Github Issue에 나와있는대로 go/pkg 디렉터리를 비워보기도 했지만 전혀 해결되지 않았다. 물론 YCM도 여러번 재설치해보았다.

문제가 해결될 기색이 보이지 않았다. 그래도 여러번 검색한 결과 deoplete-go라는 것을 찾았다. 이거라면 해결할 수 있지 않을까?

README.md를 읽어보니 YCM에 붙어 사는건 아니었지만 gocode는 똑같이 필요로 했다.

.vimrc

Plugin 'Shougo/deoplete.nvim'
Plugin 'zchee/deoplete-go', {'do': 'make'}

let g:deoplete#enable_at_startup = 1

완벽히 해결된다. YCM보다도 설치가 더 쉬운듯한 느낌이다.

댓글을 불러올까요?