I am programming go and I want to run gofmt with a shortcut and replace the content of the current source file with the output of gofmt.
I have the following mapping defined in my vimrc:
map <C-r> :r ! gofmt %<CR> but this does simply append the output to the current file. Is there a way to override it?
You're using the wrong command: :read appends lines to the buffer (with ! {cmd}: from an external command). Instead, you want to filter the current buffer contents through an external command. This is done via :help :range!. The gofmt command reads from stdin when no file is passed (some other commands take a special - argument for that. Ergo:
:nnoremap <C-r> :%! gofmt<CR>
:noremap; it makes the mapping immune to remapping and recursion.If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With