VimPlugin: vim-go
From wikinotes
A standalone LSP setup for golang and vim.
includes several refactoring tools as well.
NOTE:
this plugin is huge, I'm not sure I like it. It might be better to look at some implementations, and write only the features I want
Documentation
:h vim-go
https://github.com/fatih/vim-go/blob/master/doc/vim-go.txt
Install
Plug 'https://github.com/fatih/vim-go', { 'do': ':GoUpdateBinaries' }Executables Wanted (installed automatically, but useful if provisioning temp env)
go install github.com/klauspost/asmfmt/cmd/asmfmt@latest go install github.com/go-delve/delve/cmd/dlv@latest go install github.com/kisielk/errcheck@latest go install github.com/davidrjenni/reftools/cmd/fillstruct@master go install github.com/rogpeppe/godef@latest go install golang.org/x/tools/cmd/goimports@master go install github.com/mgechev/revive@latest go install golang.org/x/tools/gopls@latest go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest go install honnef.co/go/tools/cmd/staticcheck@latest go install github.com/fatih/gomodifytags@latest go install golang.org/x/tools/cmd/gorename@master go install github.com/jstemmer/gotags@master go install golang.org/x/tools/cmd/guru@master go install github.com/josharian/impl@main go install honnef.co/go/tools/cmd/keyify@master go install github.com/fatih/motion@latest go install github.com/koron/iferr@master
Configuration
coc-go
coc-go and vim-go share a lot of functionality.
Generally, I prefer coc-go, so this disables a lot of vim-go's functionality.let g:go_code_completion_enabled = 0 let g:go_code_completion_icase =0 let g:go_play_browser_command = $BROWSER.' %URL% &'
Usage
coc-go
Leaving out the parts I like from coc-go, vim-test.
:GoCoverage " report test coverage, annotate your file :GocoverageBrowser :GoErrCheck! " find unchecked errors in your package :GoRename foo " rename an identifier :GoDebugStart " open debug ui :GoDebugStop " close debug ui :GoDebugBreakpoint " toggle breakpoint on line :GoDebugHalt " stop debugging