会话自动加载时如何在vim中打开文件?

时间:2019-05-27 10:29:55

标签: file session vim text-editor

.vimrc中有以下代码可在vim启动时自动保存/加载会话:

" Session saving
" Automatically save / rewrite the session when leaving Vim
augroup leave
        autocmd VimLeave * mksession! ~/.vim/session.vim
augroup END

" Automatically silently load the session when entering vim
autocmd VimEnter * silent source ~/.vim/session.vim

哪个可以正常工作,我唯一的问题是当我想创建新文件或使用以下命令打开现有文件时:

vim test.txt

在这种情况下,文件没有打开,而是加载了上次保存的会话。

所需的行为如下。当我不带任何参数运行vim时,它将恢复上一个会话。如果我提供文件参数,则为e.x。 vim test.py-加载上一个会话,并在新标签页中打开/创建提供的文件。 怎么做?理想情况下,没有任何插件。

1 个答案:

答案 0 :(得分:3)

应该是这样的:

" use ++nested to allow automatic file type detection and such
autocmd VimEnter * ++nested call <SID>load_session()

function! s:load_session()
    " save curdir and arglist for later
    let l:cwd = getcwd()
    let l:args = argv()
    " source session
    silent source ~/.vim/session.vim
    "restore curdir (otherwise relative paths may change)
    call chdir(l:cwd)
    " open all args
    for l:file in l:args
        execute 'tabnew' l:file
    endfor
    " add args to our arglist just in case
    execute 'argadd' join(l:args)
endfunction