当从git commit启动Vim时,跳过自动加载上一个会话

时间:2013-12-13 07:15:21

标签: git session vim

我在我的.vimrc文件中使用自动保存和自动加载会话:

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

在我工作期间,有时我会提交更改。 Git会自动打开Vim,这样我就可以输入提交消息了​​。在这种情况下,我希望打开Vim而不加载最后一个会话(当我退出时不保存它)。

我考虑过编辑Git中的core.editor变量,以便在不加载.vimrc的情况下打开Vim。但我确实希望加载我的自定义配置,只需跳过上面的两行。

为此,我想我.vimrc需要一些条件才能在git commit未加载Vim的情况下执行这些行。

如何做到这一点?

1 个答案:

答案 0 :(得分:1)

您可能需要查看vim-session插件。它是会话管理的更好前端,但它也实现了一些有趣的功能。在编辑git commit的日志消息时,我担心恢复默认会话,并且很高兴vim-session处理得很好。如果您使用要打开的文件启动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-session的行为确实是你想要的。