从stdin读取时阻止vim加载会话
发布时间:2020-12-15 21:06:00 所属栏目:安全 来源:网络整理
导读:我最近一直在定制我的. vimrc并且喜欢mksession给我的力量和便利.我目前在.vimrc中有以下自动加载会话: function! LoadSession() if argc() == 0 ! diff let g:sessiondir = $HOME . "/.vim/sessions" . getcwd() let g:sessionfile = g:sessiondir . "/ses
我最近一直在定制我的.
vimrc并且喜欢mksession给我的力量和便利.我目前在.vimrc中有以下自动加载会话:
function! LoadSession() if argc() == 0 && ! &diff let g:sessiondir = $HOME . "/.vim/sessions" . getcwd() let g:sessionfile = g:sessiondir . "/session.vim" if (filereadable(g:sessionfile)) exe 'source ' g:sessionfile else echo "No session loaded." + argc() + argv() endif else let g:sessionfile = "" let g:sessiondir = "" call ResCur() endif endfunction 然后我用au VimEnter *嵌套调用它:调用LoadSession().这适用于大多数情况,除非vim从stdin读取.在这种情况下,会话仍然被加载,但我想防止这种情况发生.我本以为argc()== 0条件就足够了,但看起来 – 从vdin读取的vim会导致argc()不返回0. Poop! ] 我已经尝试了各种各样的东西,从查看argv(0)(在这种情况下它是空的 – 为什么?),试图找到识别vim从stdin读取的方法(它显示了一条消息,它正在这样做,但我无法弄清楚如何进入那个)等,但到目前为止没有运气. 我确定我在这里遗漏了一些非常明显的东西,但谷歌和vim:帮助并没有把我带到任何地方,所以我希望这里有一些善良的灵魂可以为我揭示这一点. 解决方法
我正在使用的
session.vim plugin提供了扩展的会话处理.其中,它询问是否应该在Vim启动时恢复以前保存的会话.
但除非你需要插件的其他功能,否则使用映射触发恢复的解决方法也可能很好. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |