-
Notifications
You must be signed in to change notification settings - Fork 4.1k
Radu's vim setup
A quick and dirty for how to get started with vim and go.
1. Install pathogen
mkdir -p ~/.vim/autoload ~/.vim/bundle && \ curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim
And add to the top of ~/.vimrc:
execute pathogen#infect() syntax on filetype plugin indent on
2. Install vim-go
git clone https://github.com/fatih/vim-go.git ~/.vim/bundle/vim-goAdd these to ~/.vimrc:
let g:go_highlight_functions = 1 let g:go_highlight_methods = 1 let g:go_highlight_structs = 1 let g:go_highlight_build_constraints = 1 autocmd FileType go set number fo+=croq tw=100 autocmd Filetype go set makeprg=go\ build\ . autocmd Filetype go nmap <C-]> :exec("GoDef")<CR> autocmd Filetype go nmap <F9> :GoReferrers<CR> autocmd Filetype go nmap <C-\> <Plug>(go-def-split) autocmd Filetype go nmap <Space> <Plug>(go-info)
Make sure $GOPATH is set correctly, start vim and run
:GoInstallBinaries
WARNING: Avoid using foldmethod syntax with vim-go: it can make vim very slow when you open a paren or start a string.
Optional: set up tagbar
Install exuberant-ctags on your system, e.g:
sudo apt-get install exuberant-ctags
Install the vim plugin:
cd ~/.vim/bundle git clone git://github.com/majutsushi/tagbar
Add this to ~/.vimrc:
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' \ }
You can now use or map `:TagbarToggle' in vim.
Optional: set up ag
Install ag (a faster, better grep) on your system. On Debian:
sudo apt-get install silversearcher-ag
Then install the vim plugin
cd ~/.vim/bundle && git clone https://github.com/rking/ag.vim:
You can use commands like :Ag in vim now. Here are some useful mappings that you can put in ~/.vimrc:
nmap <F7> :let @/ = "<C-R><C-W>"<CR>:Ag -s -w <C-R><C-W> *<CR> nmap <F8> :let @/ = "<C-R><C-W>"<CR>:!ag -s -w <C-R><C-W> *<CR>
These search the identifier under the cursor, and also put that identifier in the search register so you can keep searching in files with n.
You can see my full config here You can also try copying this file and the entire .vimrc directory instead of the steps above.