2012-02-15 88 views
1

我知道將以下內容添加到~/.vimrc會自動保存當前目錄中的會話文件名爲'Session.vim'。如何爲自動保存的VIM會話自動生成文件名?

autocmd BufWritePre :mksession! 

但是,這些文件會亂丟目錄。我寧願將會話文件保存到/tmp/[some filename which specifies the directory]

有沒有辦法做到這一點?

回答

2

您可以用這句話來生成的文件名:

"/tmp/vimSessions/".substitute(expand("%:p:h"),"/","_","g")

Ofcourse,您可以更改第一個字符串包含任何你想要的目錄。

UPDATE:

添加到您的vimrc文件:

function GetSessionName(useFileName) 
    if a:useFileName 
     let l:dir=expand("%:p:h") 
    else 
     let l:dir=getcwd() 
    endif 
    return fnameescape("/tmp/vimSessions/".substitute(l:dir,"/","_","g")) 
endfunction 
if !isdirectory("/tmp/vimSessions") 
    call mkdir("/tmp/vimSessions") 
endif 
autocmd VimEnter * if filereadable(GetSessionName(0))|exe "source ".GetSessionName(0)|endif 
autocmd BufWritePost * exe "mksession! ".GetSessionName(1) 
+0

感謝 - 這工作得很好,雖然我現在意識到,當我打開VIM以及我想這自動加載。 – adarsh 2012-02-16 03:57:32

+0

@Adarsh我更新了答案,包括保存和恢復會話。 – 2012-02-16 16:02:28

+0

酷!非常感謝。如果可以的話,我會加倍努力。 – adarsh 2012-02-16 17:42:08