首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Golang:使用vim (macvim)和vim-go在保存时运行‘go build`

Golang:使用vim (macvim)和vim-go在保存时运行‘go build`
EN

Stack Overflow用户
提问于 2016-08-05 14:54:28
回答 2查看 1.4K关注 0票数 2

我最近正在从sublime 3迁移到mvim ( mac os上的vim ),并试图让我的Golang开发环境在vim上尽可能类似于我的sublime实现。

在我的卓越设置中,每当我保存Go文件时,它都会运行go build。这为我提供了即时反馈,告诉我是否有未使用的var或go build提供的其他信息。

我正在尝试迁移到vim,我想知道我是否也可以在那里实现这个功能。我正在使用vim-go,但还没有找到实现这一点的设置。

简而言之,我希望在使用vim / vim-go保存Go文件时运行:GoBuild。这是可能的吗?我该怎么做?

EN

回答 2

Stack Overflow用户

发布于 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启动文件的末尾):

代码语言:javascript
复制
: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

票数 2
EN

Stack Overflow用户

发布于 2018-03-15 17:47:01

使用以下命令创建~/.vim/after/ftplugin/go.vim

代码语言:javascript
复制
autocmd BufWritePre *.go :GoBuild
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38782986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档