如何为自动保存VIM会话自动生成文件名?

时间:2012-02-15 16:24:17

标签: session vim

我知道将以下内容添加到~/.vimrc将自动保存当前目录中名为“Session.vim”的会话文件。

autocmd BufWritePre :mksession!

但是,这些文件会乱丢目录。我宁愿将会话文件保存到/tmp/[some filename which specifies the directory]

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:2)

您可以使用此表达式生成文件名:

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

当然,您可以更改第一个字符串以包含您想要的任何目录。

<强>更新

将此添加到您的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)