2012-08-22 103 views
7

有什麼辦法可以在發出之前自動保存緩衝區:make?我使用MacVim並使命令-B綁定,這是非常有用的,但我似乎無法弄清楚如何在make之前編寫緩衝區。我看着所有的autocmd事件,似乎沒有什麼適合的。自動保存緩衝區:make in vim?

有一個QuickFixCmdPre而應於化妝前調用,但似乎無法得到它的工作:

的〜/ .vimrc

function! AutoSaveOnMake() 
    if &modified 
     write 
    endif 
endfunction 

autocmd QuickFixCmdPre *.c :call AutoSaveOnMake() 

回答

18

Vim有一個內置的設置爲:

:set autowrite 

寫文件的內容,如果它已被修改,每個 :未來,:倒帶,:上::first,:previous,:stop,:suspend,:tag,:!, :make,CTRL-]和CTRL- ^命令;當a:緩衝區,CTRL-O,CTRL-I, '{A-Z0-9}或'{A-Z0-9}命令將一個文件帶到另一個文件時。

+0

我喜歡這個。每天學習一些關於vim的新知識。 –

3

而不是創建一個autocmd命令,爲什麼不只是更新Command-B映射?

nnoremap <d-b> :update<bar>make<cr> 
+0

似乎無法重新映射Command-B。如果我嘗試:nnoremap :更新使例如,它的工作,但不。 – Chris

+0

確保你把這個放在你的'.gvimrc'文件中。請參閱http://superuser.com/questions/249448/macvim-re-map-command-key-combinations-like-d-f –

+0

通過將上述remap命令與超級用戶評論相結合,可以發揮作用。正如你所說,它必須在'.gvimrc' – Chris