I’ve been using Vim exclusively for all of my Go development work for the past year or so and over that time I’ve slowly been customizing my setup.
There are a number of essential plugins, including Vim-go and YouCompleteMe, but after recently working on a Rails project I encountered Vim-rails which includes some useful commands to jump around the project such as:
:Econtroller users
:Emodel thing
:Eview blah
Along with setting up alternates
for jumping between source files and test files etc…
I wanted the same for my Go projects and luckily Tim Pope split out the functionality into a standalone Vim plugin called Vim-projectionist that lets you do just that.
After some fudging around with the project specific option I managed to get a global config that you can drop into your .vimrc
:
let g:projectionist_heuristics = {
\ '*.go': {
\ '*.go': {
\ 'alternate': '{}_test.go',
\ 'type': 'source'
\ },
\ '*_test.go': {
\ 'alternate': '{}.go',
\ 'type': 'test'
\ },
\ }}
It’s fairly minimal with support only for the :A
command to jump between the source and test file, but it can work in conjunction with a .projections.json
file to add project specific configs as well.