2016-08-05 54 views
1

我最近從崇高的3轉到mvim(vim在mac os上),並試圖讓我的Golang開發環境爲vim類似於我的崇高實現儘可能。Golang:使用vim(macvim)和vim-go保存並運行`go build`

在我的崇高設置中,只要保存一個Go文件,它就會運行go build。這爲我提供了即時反饋,看看我是否有未使用的增值稅或其他信息go build提供。

我正在嘗試遷移到vim,並且想知道我是否也可以在那裏實現此功能。我正在使用vim-go,但還沒有找到一個設置來實現這一點。

總之,我想運行:GoBuild在使用vim/vim-go時保存一個Go文件。這是可能的,我該怎麼做?

+0

是的,但是我希望有GoBuild時一展身手文件的保存自動運行。 - 將編輯問題以更好地反映這一點。 – user2737876

回答

2

是,使用vim autocommand運行:GoBuild

您可以指定命令來自動執行讀取或 寫入文件,進入或離開緩衝區或窗口時,當 退出Vim時。放置自動命令的通常位置在.vimrc或 .exrc文件中。

運行以下命令:

:autocmd BufWritePre *.go :GoBuild

現在每次保存您轉到文件,:w它將運行:GoBuild了。
事件類型爲BufWritePre,這意味着該事件將在您編寫*.go文件之前進行檢查。

BufWritePre啓動整個緩衝區寫入文件

之後整個緩衝區寫入文件
BufWritePost

如果你的.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