Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从git commit启动Vim时跳过自动加载最后一个会话_Git_Session_Vim - Fatal编程技术网

从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会话插件的建议!伟大的很乐意帮忙!