最近我一直在定製我的.vimrc
,並且喜歡:mksession
給我的強大功能和便利。目前,我有我的.vimrc
自動加載會話以下幾點:防止vim從stdin讀取時加載會話
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. Poop! ;]
我試過各種各樣的東西,從argv(0)
(在這種情況下它是空的 - 爲什麼?),嘗試找到識別vim的方法是從stdin
(它顯示一條消息,它正在這樣做,但我無法弄清楚如何挖掘)等等,但目前還沒有運氣。
我確定我在這裏錯過了非常明顯的東西,但Google和vim :help
沒有讓我到任何地方,所以我希望有一些靈魂在這裏可以爲我闡明一些。
我現在正在嘗試session.vim,無法使自動加載按我想要的方式工作,但這看起來很有前途,謝謝。 – HerbCSO
似乎做我需要它,thx! – HerbCSO