我在我的.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的情况下执行这些行。
如何做到这一点?
答案 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的行为确实是你想要的。