繁体   English   中英

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

[英]Skip auto loading last session when Vim is launched from git commit

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

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

在工作期间,有时我会进行更改。 Git自动打开Vim,因此我可以输入提交消息。 在那种情况下,我希望打开Vim而不加载上一个会话(退出时不保存它)。

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

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

如何才能做到这一点?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM