Как открыть файл в vim при автозагрузке сессии? - PullRequest
1 голос
/ 27 мая 2019

У меня есть следующий код в .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 без аргументов - он восстанавливает последний сеанс. Если я предоставлю аргумент файла, например, vim test.py - загружает последний сеанс И в новой вкладке открывает / создает предоставленный файл. Как это сделать? Идеально без каких-либо плагинов.

1 Ответ

3 голосов
/ 27 мая 2019

Должно быть примерно так:

" 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
...