我正在编程,我希望使用快捷方式运行gofmt
并使用gofmt
的输出替换当前源文件的内容。
我的vimrc中定义了以下映射:
map <C-r> :r ! gofmt %<CR>
但这只是将输出附加到当前文件。有没有办法覆盖它?
答案 0 :(得分:4)
gofmt flag -w
将覆盖正在修复的文件的内容
答案 1 :(得分:3)
您使用了错误的命令::read
将行添加到缓冲区(使用! {cmd}
:来自外部命令)。相反,您希望通过外部命令过滤当前缓冲区内容。这是通过:help :range!
完成的。没有文件传递时,gofmt
命令从stdin读取(其他一些命令为此引用了一个特殊的-
参数.Ergo:
:nnoremap <C-r> :%! gofmt<CR>
:noremap
;它使映射不受重映射和递归的影响。