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



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

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

在工作中,有时我会做出改变。Git会自动打开Vim,这样我就可以键入提交消息。在这种情况下,我希望Vim在不加载最后一个会话的情况下打开(并且在退出时不保存它)。

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

为此,我假设只有在没有从git commit加载Vim的情况下,我才需要.vimrc中的一些条件来执行这些行。

如何做到这一点?

您可能想看看vim会话插件。它是一个更好的会话管理前端,但它也实现了一些有趣的功能。在为git commit编辑日志消息时,我也担心默认会话会被恢复,并对vim会话处理得很好感到高兴和惊讶。如果启动Vim时要打开一个文件,那么它不会自动加载默认会话。这个逻辑的代码在这里。我想你可以把类似的东西放在一起,创建一个只有在"安全"的情况下才能加载会话的函数。然而,如果你想要这种行为,我真的建议你使用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会话的行为确实是你想要的。

最新更新