从git commit启动Vim时跳过自动加载最后一个会话
我在从git commit启动Vim时跳过自动加载最后一个会话,git,session,vim,Git,Session,Vim,我在文件中使用会话的自动保存和自动加载: autocmd VimLeave * mksession! ~/.vim/last-session.vim autocmd VimEnter * source ~/.vim/last-session.vim 在我的工作中,有时我会做出改变。Git会自动打开Vim,以便我可以键入提交消息。在这种情况下,我希望在不加载最后一个会话(并且在退出时不保存它)的情况下打开Vim 我考虑在Git中编辑core.editor变量,这样就可以在不加载.vimrc的情况
文件中使用会话的自动保存和自动加载:
autocmd VimLeave * mksession! ~/.vim/last-session.vim
autocmd VimEnter * source ~/.vim/last-session.vim
在我的工作中,有时我会做出改变。Git会自动打开Vim,以便我可以键入提交消息。在这种情况下,我希望在不加载最后一个会话(并且在退出时不保存它)的情况下打开Vim
我考虑在Git中编辑core.editor
变量,这样就可以在不加载.vimrc
的情况下打开Vim。但我确实希望加载自定义配置,只需跳过上面两行即可
为此,我设想我需要.vimrc
中的一些条件来执行这些行,只要Vim不是从git commit
加载的
如何做到这一点?您可能想看看这个插件。它是一个更好的会话管理前端,但它还实现了几个有趣的特性。我还担心在编辑git commit的日志消息时会恢复默认会话,并且很高兴vim会话处理得很好。如果启动Vim时要打开一个文件,那么它不会自动加载默认会话。该逻辑的代码是。我想你可以把类似的东西放在一起,创建一个函数,只在“安全”的情况下加载会话。然而,如果您想要这种行为,我真的建议您使用vim会话——它是一个优秀的插件
如果出现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会话的行为确实是您想要的。您可能想看看插件。它是一个更好的会话管理前端,但它还实现了几个有趣的特性。我还担心在编辑git commit的日志消息时会恢复默认会话,并且很高兴vim会话处理得很好。如果启动Vim时要打开一个文件,那么它不会自动加载默认会话。该逻辑的代码是。我想你可以把类似的东西放在一起,创建一个函数,只在“安全”的情况下加载会话。然而,如果您想要这种行为,我真的建议您使用vim会话——它是一个优秀的插件
如果出现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的行为确实是您想要的。太好了,谢谢!我正在使用您的解决方案,根据文件类型有条件地执行会话命令。但是我也一定会遵循您对vim会话插件的建议!伟大的很乐意帮忙!太好了,谢谢!我正在使用您的解决方案,根据文件类型有条件地执行会话命令。但是我也一定会遵循您对vim会话插件的建议!伟大的很乐意帮忙!