我正在使用vim-golang插件的vim。该插件带有一个名为:Fmt的函数,使用命令行可执行文件gofmt对源代码进行“重新格式化”。
我想每次保存文件时调用:Fmt函数,以便持续重新格式化。我认为应该使用autocmd指令来完成此操作。但是我有两个疑问:
我想每次保存文件时调用:Fmt函数,以便持续重新格式化。我认为应该使用autocmd指令来完成此操作。但是我有两个疑问:
- 我找不到执行该函数的方法。我尝试在autocmd行的末尾编写Fmt和:Fmt,但似乎没有起作用。我认为我漏掉了某些东西,比如“call”。
- 我希望只在保存filetype为'go'的文件时才会发生这种情况。我不知道如何结合这两个条件 - 我可以根据文件类型激活变量,并且可以在保存文件时执行小操作,例如删除尾随空格,但分开执行。
所以这是我目前为止的成果:
" I can set variables for go like this
autocmd FileType go setlocal noexpandtab shiftwidth=4 tabstop=4 softtabstop=4 nolist
" I can clean trailing spaces(conserving cursor position) on save like this
autocmd BufWritePre * kz|:%s/\s\+$//e|'z
" None of these worked:
autocmd BufWritePre,FileType go Fmt
autocmd BufWritePre,FileType go :Fmt
Fmt
命令中获得正常输出(我一直看到X 行已过滤
),则可能需要添加silent
:autocmd FileType go autocmd BufWritePre silent Fmt
- djdvim-gocode
插件中了 https://github.com/Blackrush/vim-gocode/blob/master/ftplugin/go/fmt.vim#L20 - Anton Egorov