Go Tools
Make sure that you have Go installed and then get the various Go tools.goimports
Go provides a lot of use packages that can be imported but it doesn't like it when you import a package and not use it. Goimports will automatically insert the right imports for you by looking at your code and will remove unused imports from your source. It's a great time saver!
godefgo get golang.org/x/tools/cmd/goimports
Godef lets you jump to the location where a symbol is defined.
go get -v code.google.com/p/rog-go/exp/cmd/godef
go install -v code.google.com/p/rog-go/exp/cmd/godef
golintGolint will lint your source and warns you of potential issues.
gorenamego get github.com/golang/lint/golint
Gorename helps to refactor Go code.
go get golang.org/x/tools/cmd/gorename
errcheckErrcheck checks your code for actual errors that isn't just lint issues.
go get github.com/kisielk/errcheck
gocodeGocode provides autocomplete of your Go code. When combined with vim-go and YouCompleteMe plugins, it allows autocomplete to appear as you're typing.
go get -u github.com/nsf/gocode (-u flag for "update")
It's a bit different for Windows so follow the instruction from the link for more details.gotags
Gotags generate tags for Go code. Combined with Tagbar, it will provide a pretty display of the tags in your code.
go get -u github.com/jstemmer/gotags
GuruGuru is a tool that integrates with editors to help it understand Go code.
go get golang.org/x/tools/cmd/guru
go build golang.org/x/tools/cmd/guru
go get code.google.com/p/go.tools/cmd/oracle
Vim Plugins
It used to be that you would manually install a vim plugin for each of the various Go tools as well as using the the plugins that comes with Go itself. Now, everything has been consolidated into a single Vim plugin, vim-go, and that's all you really need when it comes to Go-specific plugins. A few other plug-ins such as Tagbar and YouCompleteMe are useful to complement your development environment, though. I highly recommend that you use Vundle to manage your plugins.vim-go
Vim-go brings together all the various plug-ins and feature for Go development in VIM including autocomplete, snippet support, improved syntax highlighting, go toolchain commands, etc. in a single package.
YouCompleteMe
YCM is a fast code completion engine for VIM that works as you type. YCM requires VIM 7.3.584 or above and CMake (you'll need to compile the extension after it's downloaded).
Tagbar
A great way to view the tags in your code. This requires that you have Exuberant Ctags and gotags installed.
Bufexplorer
My favorite plugin for navigating between VIM buffers.
.vimrc
" Go Specific Stuff
au BufRead,BufNewFile *.go set filetype=go
autocmd FileType go setlocal softtabstop=4
autocmd FileType go setlocal shiftwidth=4
autocmd FileType go setlocal tabstop=4
" go-def settings
let g:godef_split=2
let g:godef_same_file_in_same_window=1
" go-vim settings
let g:go_fmt_command = "goimports"
let g:go_highlight_functions = 1
let g:go_highlight_methods = 1
let g:go_highlight_structs = 1
" tagbar settings
let g:tagbar_type_go = {
\ 'ctagstype' : 'go',
\ 'kinds' : [
\ 'p:package',
\ 'i:imports:1',
\ 'c:constants',
\ 'v:variables',
\ 't:types',
\ 'n:interfaces',
\ 'w:fields',
\ 'e:embedded',
\ 'm:methods',
\ 'r:constructor',
\ 'f:functions'
\ ],
\ 'sro' : '.',
\ 'kind2scope' : {
\ 't' : 'ctype',
\ 'n' : 'ntype'
\ },
\ 'scope2kind' : {
\ 'ctype' : 't',
\ 'ntype' : 'n'
\ },
\ 'ctagsbin' : 'gotags',
\ 'ctagsargs' : '-sort -silent'
\ }