2013-12-13 60 views
1

我使用的是自動保存和會話自動加載在我.vimrc文件最後一次會議:跳過自動加載在Vim從git的推出承諾

autocmd VimLeave * mksession! ~/.vim/last-session.vim 
autocmd VimEnter * source ~/.vim/last-session.vim 

在我的工作,有時我提交更改。 Git會自動打開Vim,以便我可以鍵入提交消息。在這種情況下,我想不加載上次會議被打開的Vim(但不保存它,當我退出)。

我想過編輯Git中的core.editor變量,這樣Vim將在不加載.vimrc的情況下打開。但我希望我的自定義配置被加載,只需跳過上述兩行。

對此,我想我只需要.vimrc中的一些條件來執行這些行,但前提是Vim沒有從git commit加載。

如何才能做到這一點?

回答

1

你可能想看看的vim-session插件。這是會話管理的一個更好的前端,但它也實現了一些有趣的功能。我很擔心會默認在編輯日誌消息git commit以及正在恢復,並愉快地驚訝的是,VIM會話處理得很好。如果您啓動Vim並打開一個文件,那麼它不會自動加載默認會話。該邏輯的代碼是here。我想你可以把類似的東西在一起,並創建只有當它的「安全」這樣做加載會話的功能。然而,如果你想要這種行爲,我真的推薦使用vim-session - 這是一個很好的插件。

東西少一些通用的,你可以做的僅僅是防止裝載如果Vim的出現和特定文件類型已經應用。在這種情況下,gitcommit文件類型應該是有效的,你可以跳過加載:

autocmd VimEnter * if &ft != 'gitcommit' | source ~/.vim/last-session.vim | endif 
autocmd VimLeave * if &ft != 'gitcommit' | mksession! ~/.vim/last-session.vim | endif 

這將解決你面對此刻的問題,但我認爲VIM會話的行爲真的是你想要的。

+0

完美,謝謝!我正在使用有條件地執行會話命令的解決方案,具體取決於文件類型。但我一定會按照你對vim-session插件的建議! – EyalAr

+0

太棒了!樂於幫助! – jszakmeister