Formatting Go code with Vim
There are no formatting rules when writing Go code, but there is an official
style. If you pipe your code through gofmt
, its output is the
official style. So while writing you need to occasionally execute:
%!~/bin/gofmt
(which I’ve wrapped in a command, so I only need
to type :Fmt
).
But the trouble is that executing this code resets the cursor to the first line and you then have to jump back to whatever line number you were on.
Surely vim
should do better… and it does. The scripting in vim
is
wonderful, this small function is all you need:
function Goformat()
let regel=line(".")
%!~/bin/gofmt
call cursor(regel, 1)
endfunction
And then together with this:
autocmd Filetype go command! Fmt call Goformat()
Put both in your .vimrc
and you are set. Nice formatting with
:Fmt
and you’ll stay on the current line. The actual line
may be slightly different due to the reformatting, but this is
a far cry from being put on the first one.