Golang:使用vim(macvim)和vim-go在save上运行`go build`

时间:2016-08-05 06:54:28

标签: vim go macvim

我最近从sublime 3转到mvim(在mac os上的vim)并且我试图让我的Golang开发环境在vim上与我的sublime实现尽可能相似。

在我的sublime设置中,它会在我保存Go文件的任何时候运行go build。这为我提供了即时反馈,如果我有未使用的变量或go build提供的其他信息。

我正在尝试迁移到vim,并且想知道我是否可以在那里实现此功能。我正在使用vim-go但尚未找到实现此设置的设置。

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

2 个答案:

答案 0 :(得分:2)

是的,使用vim autocommand运行:GoBuild

  

您可以指定在阅读时自动执行的命令   在进入或离开缓冲区或窗口时,以及何时写入文件   退出Vim。放置自动命令的通常位置在.vimrc或   .exrc文件。

运行以下命令:

:autocmd BufWritePre *.go :GoBuild

现在每次使用:w保存Go文件时,它也会运行:GoBuild 事件类型为BufWritePre,这意味着在您编写*.go文件之前将检查事件。

  

BufWritePre开始将整个缓冲区写入文件
  将整个缓冲区写入文件后BufWritePost

  

当您的.vimrc文件来源两次时,将出现自动命令   两次。为避免这种情况,请将此命令放在.vimrc文件中   定义自动命令:

:autocmd! " Remove ALL autocommands for the current group.
     

如果您不想删除所有自动命令,则可以改为使用   变量以确保Vim仅包含一次自动命令:

:if !exists("autocommands_loaded")    
:  let autocommands_loaded = 1    
: au ...  
:endif
像这样(把它放在你的vim启动文件的末尾):

:if !exists("autocommands_loaded")
:  let autocommands_loaded = 1
:  autocmd BufWritePost *.go :GoBuild
:endif

REF:
http://vimdoc.sourceforge.net/htmldoc/autocmd.html
http://learnvimscriptthehardway.stevelosh.com/chapters/12.html

答案 1 :(得分:0)

使用以下内容创建~/.vim/after/ftplugin/go.vim

autocmd BufWritePre *.go :GoBuild