vim – 保存时自动格式化golang源代码
发布时间:2020-12-15 19:52:38 所属栏目:安全 来源:网络整理
导读:我正在使用vim与 vim-golang插件。该插件随附 a function called :Fmt,使用 gofmt(一个命令行可执行文件)“重新格式化”源代码。 我想要调用:Fmt函数每次保存文件,所以它是不断重新格式化。我认为这应该使用autocmd指令。但我有两个疑问: 我找不到执行该
我正在使用vim与
vim-golang插件。该插件随附
a function called :Fmt,使用
gofmt(一个命令行可执行文件)“重新格式化”源代码。
我想要调用:Fmt函数每次保存文件,所以它是不断重新格式化。我认为这应该使用autocmd指令。但我有两个疑问: >我找不到执行该功能的方法。我尝试写入Fmt和:Fmt在autocmd行的末尾,但似乎不起作用。我想我想念一些东西,比如“打电话”。 所以这是我到目前为止 " 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
FileType事件在缓冲区写入时不触发; BufWritePre是正确的,但您需要提供一个文件模式,例如*。走:
autocmd BufWritePre *.go Fmt 唯一的缺点是这会复制对go文件类型的检测。您可以通过挂入FileType事件来委托,然后使用特殊的< buffer>定义每个Go缓冲区的格式化autocmd。模式: autocmd FileType go autocmd BufWritePre <buffer> Fmt 这是有缺陷的,如果文件类型被多次设置,你也会运行格式化多次。这可以通过自定义来解决:augroup,但现在变得非常复杂。或者,如果您真的确定这是Go缓冲区中唯一的BufWritePre autocmd,您可以使用:autocmd! BufWritePre …(带有!)。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |