我最近一直在定制我的很多东西,并且喜欢它给我.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 * nested :call LoadSession()
. 这适用于大多数情况,除非 vim 从stdin
. 在这种情况下,会话仍在加载,但是我想防止这种情况发生。我原以为argc() == 0
条件就足够了,但似乎-
正在调用该 vim 来读取stdin
原因argc()
而不返回 0。大便!;]
我已经尝试了各种各样的事情argv(0)
(在这种情况下它是空的 - 为什么?),试图找到识别 vim 正在读取的方法stdin
(它显示了它正在这样做的消息,但我无法弄清楚如何利用它)等,但到目前为止还没有运气。
我确定我在这里遗漏了一些非常明显的东西,但是谷歌和 vim:help
并没有让我到任何地方,所以我希望这里的某个善良的灵魂可以为我阐明这一点。