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