我最近正在从sublime 3迁移到mvim ( mac os上的vim ),并试图让我的Golang开发环境在vim上尽可能类似于我的sublime实现。
在我的卓越设置中,每当我保存Go文件时,它都会运行go build。这为我提供了即时反馈,告诉我是否有未使用的var或go build提供的其他信息。
我正在尝试迁移到vim,我想知道我是否也可以在那里实现这个功能。我正在使用vim-go,但还没有找到实现这一点的设置。
简而言之,我希望在使用vim / vim-go保存Go文件时运行:GoBuild。这是可能的吗?我该怎么做?
发布于 2016-08-05 15:12:53
是,使用vim autocommand运行:GoBuild:
您可以指定在读取或写入文件、进入或离开缓冲区或窗口以及退出Vim时自动执行的命令。通常放置自动命令的位置是在.vimrc或.exrc文件中。
运行以下命令:
:autocmd BufWritePre *.go :GoBuild
现在,每次你用:w保存Go文件时,它也会运行:GoBuild。
事件类型为BufWritePre,这意味着在您编写*.go文件之前将检查该事件。
BufWritePre开始将整个缓冲区写入文件
将整个缓冲区写入文件后的BufWritePost
和:
当您的.vimrc文件被获取两次时,自动命令将出现两次。要避免这种情况,请在定义自动命令之前将此命令放入.vimrc文件中:
:autocmd!“删除当前组的所有自动命令。
如果不想删除所有的自动命令,可以使用一个变量来确保Vim只包含一次自动命令:
:if !exists(" autocommands_loaded "):设autocommands_loaded=1:au... :endif
如下所示(将此代码放在vim启动文件的末尾):
:if !exists("autocommands_loaded")
: let autocommands_loaded = 1
: autocmd BufWritePost *.go :GoBuild
:endif参考:
http://vimdoc.sourceforge.net/htmldoc/autocmd.html
http://learnvimscriptthehardway.stevelosh.com/chapters/12.html
发布于 2018-03-15 17:47:01
使用以下命令创建~/.vim/after/ftplugin/go.vim:
autocmd BufWritePre *.go :GoBuildhttps://stackoverflow.com/questions/38782986
复制相似问题