Go 개발을 위한 Vim 설정 방법
예를 들어 IntelliJ 또는 Eclipse와 고도로 결합된 Java와 달리 Go는 더 가볍고 사용자가 사용하는 도구는 편집기와 통합할 수 있습니다.
이 설명서에서 Vim을 설치할 플러그인을 포함하여 검증된 Go IDE로 설정하고 매일 사용하는 중요한 옵션과 매핑을 설정하는 데 도움을 드리겠습니다.
선결 조건
$GOPATH와 관련된 하위 디렉터리-/bin/pkg/src Go installed 와 Go 환경 설정이 필요합니다.
vim 대신 nvim을 사용하거나 8+버전으로 업데이트해야 합니다.
Go의 기본 Vim 플러그인
Go에는 플러그 인vim-go만 필요합니다.Go 개발을 시작하는 데 필요한 모든 도구를 모았습니다.
pathogen를 통해 설치:
git clone https://github.com/tpope/vim-pathogen ~/.vim/bundle
Other installation options .설치 후 다음과 같은 옵션을 사용하여 사용자 정의를 수행할 수 있습니다. 이 옵션은 매우 자기 의견을 고집하지만 저에게 가장 적합합니다.
" disable all linters as that is taken care of by coc.nvim
let g:go_diagnostics_enabled = 0
let g:go_metalinter_enabled = []
" don't jump to errors after metalinter is invoked
let g:go_jump_to_error = 0
" run go imports on file save
let g:go_fmt_command = "goimports"
" automatically highlight variable your cursor is on
let g:go_auto_sameids = 0
구문을 강조 표시하려면 다음 옵션을 사용합니다.let g:go_highlight_types = 1
let g:go_highlight_fields = 1
let g:go_highlight_functions = 1
let g:go_highlight_function_calls = 1
let g:go_highlight_operators = 1
let g:go_highlight_extra_types = 1
let g:go_highlight_build_constraints = 1
let g:go_highlight_generate_tags = 1
마지막으로vim을 열고 실행하며 필요한 go 도구를 설치합니다::GoInstallBinaries
초코야.nvim-자동 완성 및 제모
과거에 저는 YouCompleteMe에 의존하여 자동 완성을 하거나 vim-govim의 본기 통합에 의존하여 자동 완성을 하거나 의존ALE하여linting/정적 코드 분석을 했습니다.
현재, 나는 이 모든 작업을 완성하기 위해 coc.nvim와 플러그인을 사용하는 것을 더욱 좋아한다. 왜냐하면 나는 그것이 모든 도구보다 더 믿을 만하다는 것을 발견했기 때문이다.
설치 지침은 Quick Start 가이드를 따르십시오.
설치 후 다음 명령을 실행하여 Go에 필요한 coc 확장을 설치합니다.
vim -c 'CocInstall -sync coc-go coc-html coc-css coc-json|q'
html/css/json 확장은 선택할 수 있지만, 지금은 누가 이런 것들을 처리하지 않겠습니까?언젠가 필요할 수도 있어.그리고vim을 열고:coconfig를 입력하여coc의 프로필을 엽니다.다음은 바둑과 무관한 설정에서 벗어난 나의 독선적인 설정이다.
{
"suggest.noselect": false,
"diagnostic.errorSign": "✘",
"diagnostic.warningSign": "!",
"diagnostic.infoSign": "?",
"diagnostic.checkCurrentLine": true,
"coc.preferences.formatOnSaveFiletypes": [
"javascript",
"html",
"json",
"css",
"scss",
"go"
],
"coc.preferences.hoverTarget": "float",
"languageserver": {
"golang": {
"command": "gopls",
"rootPatterns": ["go.mod"],
"filetypes": ["go"]
}
},
"go.goplsOptions": {
"staticcheck": true
}
}
모든 보조coc 설정에 these settings를 추가합니다.vimrc.명령에 가장 유용한 매핑
좋은 공구를 가지고 있는 것은 부족하다.너는 그것들을 어떻게 사용하는지 알아야 한다.따라서 고 코드를 처리할 때 더욱 효과적일 수 있도록vim go와coc가 제공하는 맵을 사용자 정의하는 것이 좋습니다.
다음은 내가 가장 자주 사용하는 맵과 내가 그것을 설정하는 방법입니다.
현재 파일의 단위 테스트 관리
현재 파일에서 실행 중인 모든 테스트를
autocmd BufEnter *.go nmap <leader>t <Plug>(go-test)
또한\+tt는 모든 테스트 함수가 아닌 현재 테스트 함수만 실행하도록 매핑합니다.autocmd BufEnter *.go nmap <leader>tt <Plug>(go-test-func)
마지막으로 현재 파일의 덮어쓰기 프로파일을\+c로 전환합니다.autocmd BufEnter *.go nmap <leader>c <Plug>(go-coverage-toggle)
Go 코드 라이브러리 확인
주어진 루틴에 대한 함수 서명을\+i 로 표시하려면:
autocmd BufEnter *.go nmap <leader>i <Plug>(go-info)
유형과\+ii 인터페이스를 표시하려면:autocmd BufEnter *.go nmap <leader>ii <Plug>(go-implements)
주어진 유형의 정의를\+ci로 설명합니다.autocmd BufEnter *.go nmap <leader>ci <Plug>(go-describe)
\+cc를 사용하여 지정된 함수의 호출자를 보려면 다음과 같이 하십시오.autocmd BufEnter *.go nmap <leader>cc <Plug>(go-callers)
\+cr를 사용하여 코드 라이브러리에서 특정 유형/함수에 대한 모든 참조를 찾습니다.nmap <leader>cr <Plug>(coc-references)
이동 정의/Ctrl+d 및 Ctrl+a를 사용하여 돌아가기nmap <C-a> <C-o>
nmap <C-d> <Plug>(coc-definition)
Go 코드 재구성
이 옵션은 많지 않지만 커서가 들어 있는 기호의 이름을\+r로 바꿀 수 있습니다.
nmap <leader>r <Plug>(coc-rename)
도구의 간혹 유지 보수
모든 Go 도구를 업데이트하려면vim에서 다음 명령을 실행합니다.
:GoUpdateBinaries
모든 coc 플러그인 업데이트::CocUpdate
vim go 또는 coc를 업그레이드합니다.폴더를 ~/에서 삭제합니다.vim/bundle와git가 다시 복제repos입니다.쿨gruvbox 테마 설정하기 (선택 가능)
다음 도구를 사용하여 설치gruvbox:
git clone https://github.com/morhetz/gruvbox ~/.vim/bundle
응용 프로그램에서 활성화합니다.vimrc에는 독선적인 추가 옵션이 있습니다.colorscheme gruvbox
autocmd ColorScheme * highlight CocErrorFloat guifg=#ffffff
autocmd ColorScheme * highlight CocInfoFloat guifg=#ffffff
autocmd ColorScheme * highlight CocWarningFloat guifg=#ffffff
autocmd ColorScheme * highlight SignColumn guibg=#adadad
얘 모양 보고 싶어요?터미널 다중 복용을 위한 tmux 설정 (선택 가능)
같은 창에서 여러 터미널 탭을 관리하려면 tmux(내 how to guide 참조):
이것은 내가 설정한 가장 유용한 도구 중 하나입니다.vim에서 코드를 편집하고 같은 창의 단독 옵션 카드에서 터미널과 관련된 모든 작업을 관리할 수 있기 때문입니다.
결론
이것이 바로 내가 일상적으로 바둑 프로그래밍에 사용하는 모든 것이다.
이 설정은 저에게 아주 좋습니다. 저도 처리하고 있습니다Uber's huge Go Monorepo. 여기서 저는vim환경을 틈새 없이 통합할 수 있습니다(당신이 필요로 하지 않을 수도 있는 추가 설정들).
내vim 개발 환경 전체를 보려면 내 모든dotfiles과default-setupsREPO를 보십시오. 외부 프로그램, 터미널,vim,tmux, 배색 방안 등을 포함합니다.
고분 즐거움!
나의 다른 바둑 시리즈를 봐라: Integrating your Go Service with ELKgRPC With Go Crash Course
Reference
이 문제에 관하여(Go 개발을 위한 Vim 설정 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/pmihaylov/how-to-setup-vim-for-go-development-14e7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)