vim 自己没有这个功能,所以肯定是插件干的。因此设置 vim 的选项大约也不能干涉插件的行为。
建议您看看 vim-go 的文档,里面对插件的行为有很详细的描述。github 上能搜到,这里给不了连接。
把下面这个加在 .vimrc 末尾
let g:go_fmt_autosave = 0
能避免插件在保存的时候执行额外的格式调整。此选项的默认的值是 1。
但由于我不用 go,所以也不知道这个格式化除了调整空格还调整什么。如果有插件做的其它调整是你需要的,你可能还要详细研究一下怎么配置调整的行为,而不是简单的关闭这个功能。方法是:
let g:go_fmt_options = {...}
上面 ... 的地方,可以写配置格式调整的参数。
插件默认调用的格式化工具是 gofmt,关于它的用法可以百度到少量结果,有些博客对此工具有介绍。由于官网在墙外,更详细的资料可能不太好找。
另外,由于默认的 gofmt 格式是 Go 语言官方推荐的代码风格。您既然也用 go 语言,如果不是公司有内部的格式约定,应该还是逛逛社区看看国内主流意见是什么,为什么一定要用 tab 缩进而不是空格。