2016-08-05 5 views
1

Я недавно перешел из возвышенного 3 перейдите в mvim (vim на mac os), и я пытаюсь заставить свою среду разработки Golang быть как аналогично по vim для моей возвышенной реализации, насколько это возможно.Golang: работает `go build` при сохранении с помощью vim (macvim) и vim-go

В моей возвышенной настройке он запускается go build в любое время, когда я сохраняю файл Go. Это дает мне мгновенную обратную связь, если у меня есть неиспользованные вары или другая информация go build.

Я пытаюсь перейти на vim, и мне интересно, могу ли я реализовать эту функциональность там. Я использую vim-go, но не нашел настройки для его реализации.

Короче говоря, я хочу запустить :GoBuild при сохранении файла Go при использовании vim/vim-go. Возможно ли это и как это сделать?

+0

Да, но Im ищет, чтобы GoBuild работать автоматически при сохранении файла идет. - Будет ли редактировать вопрос, чтобы лучше отразить это. – user2737876

ответ

2

да, использовать Vim autocommand запустить :GoBuild:

Вы можете указать команды, которые будут выполняться автоматически при чтении или записи файла, при входе или выходе из буфера или окна, и при выходе из Vim. Обычное место для размещения автокоманд находится в файле .vimrc или .exrc.

Выполните следующую команду:

:autocmd BufWritePre *.go :GoBuild

Теперь каждый раз, когда вы сохраняете файл Перейти с :w он будет работать :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 

ссылок:
http://vimdoc.sourceforge.net/htmldoc/autocmd.html
http://learnvimscriptthehardway.stevelosh.com/chapters/12.html