我通常有很长时间的vim会话,有几十个文件打开。偶尔,我需要重新启动vim,比如安装一个新的插件或应用一些新的配置。重启后如何重新打开以前的所有文件?谢谢!
答案 0 :(得分:3)
您可以使用builtin sessions,也许使用vim-session plugin。
Vim会话包含有关您正在编辑的内容的所有信息。
这包括文件列表,窗口布局,全局变量, 选项和其他信息。 (完全记住的是受到控制的 'sessionoptions'选项。)
命令
:mksession mysession.vim
将当前会话保存到指定文件中。下次启动vim时,您可以加载会话:
vim -S mysession.vim
或在vim内部
:source mysession.vim
您可以在VimLeave自动命令上自动保存会话并在VimEnter上重新加载会话,但是在调用vim时要小心恢复会话,例如,从git。
答案 1 :(得分:2)
以下是从我的配置中提取的自动会话保存/加载的基本设置:
if (el.Name == "ADD")
{
Console.WriteLine("Item {0} ", el.Attribute("invent_id").Value + " was successfully added.");
Console.ReadLine();
OdbcCommand Command1 = new OdbcCommand("LOAD XML LOCAL INFILE 'C:/Users/Adam/Documents/Update.xml' INTO TABLE item ROWS IDENTIFIED BY '<ADD>'", connection);
connection.Open();
OdbcDataReader reader = Command1.ExecuteReader();
connection.Close();
}
如果你在没有参数的情况下运行let s:session_loaded = 1
augroup autosession
" load last session on start
" Note: without 'nested' filetypes are not restored.
autocmd VimEnter * nested call s:session_vim_enter()
autocmd VimLeavePre * call s:session_vim_leave()
augroup END
function! s:session_vim_enter()
if bufnr('$') == 1 && bufname('%') == '' && !&mod && getline(1, '$') == ['']
execute 'silent source ~/.vim/lastsession.vim'
else
let s:session_loaded = 0
endif
endfunction
function! s:session_vim_leave()
if s:session_loaded == 1
let sessionoptions = &sessionoptions
try
set sessionoptions-=options
set sessionoptions+=tabpages
execute 'mksession! ~/.vim/lastsession.vim'
finally
let &sessionoptions = sessionoptions
endtry
endif
endfunction
,它只会恢复会话,所以如果你vim
进行快速编辑,它就不会触及上一个会话。
Bonus(这也将恢复文件中的光标位置):
vim somefile.txt