我最近从sublime 3转到mvim(在mac os上的vim)并且我试图让我的Golang开发环境在vim上与我的sublime实现尽可能相似。
在我的sublime设置中,它会在我保存Go文件的任何时候运行go build
。这为我提供了即时反馈,如果我有未使用的变量或go build
提供的其他信息。
我正在尝试迁移到vim,并且想知道我是否可以在那里实现此功能。我正在使用vim-go但尚未找到实现此设置的设置。
简而言之,我想在使用vim / vim-go时保存Go文件时运行:GoBuild
。这可能吗?我该怎么做?
答案 0 :(得分:2)
是的,使用vim autocommand
运行:GoBuild
:
您可以指定在阅读时自动执行的命令 在进入或离开缓冲区或窗口时,以及何时写入文件 退出Vim。放置自动命令的通常位置在.vimrc或 .exrc文件。
运行以下命令:
:autocmd BufWritePre *.go :GoBuild
现在每次使用:w
保存Go文件时,它也会运行:GoBuild
事件类型为BufWritePre
,这意味着在您编写*.go
文件之前将检查事件。
BufWritePre
开始将整个缓冲区写入文件
将整个缓冲区写入文件后BufWritePost
和
像这样(把它放在你的vim启动文件的末尾):当您的.vimrc文件来源两次时,将出现自动命令 两次。为避免这种情况,请将此命令放在.vimrc文件中 定义自动命令:
:autocmd! " Remove ALL autocommands for the current group.
如果您不想删除所有自动命令,则可以改为使用 变量以确保Vim仅包含一次自动命令:
:if !exists("autocommands_loaded") : let autocommands_loaded = 1 : au ... :endif
: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