我安装了sessionman,它运行正常。但是当我重新加载X会话两次(注销/登录,重启等)时会丢失会话,因为当KDE恢复Gvim时,它不会自动加载会话,而只会加载最后一个文件,然后在下次重新加载时将其保存在最后一个会话名称下。如果我没有运行SessionOpen,那么在下次重新加载时,我的上一个会话就会丢失。
我已经配置了会话自动保存。如果Gvim也可以自动加载上一个会话,那将是很好的。但是,即使手动,此功能也不适用于我。当我重新启动Gvim时,SessionShowLast打印出“上一个会话未定义,当前会话为”“”。
sessionman文档说:“打开的会话的名称保存在g:LAST_SESSION变量中,如果'viminfo'选项包含'!',则保存在viminfo文件中。但是我没有找到任何明确的解释是什么是“viminfo选项”,它应该包含'!',以及如何设置它。另外我不确定如何从vimrc执行SessionOpenLast。
如果我试图解决问题的方式是错误的,请纠正我。
答案 0 :(得分:6)
viminfo
是一个变量,用于描述应在viminfo
文件中存储哪些数据。
有关完整详细信息,请在:help 'viminfo'
中运行vim
(注意引号):
! When included, save and restore global variables that start
with an uppercase letter, and don't contain a lowercase
letter. Thus "KEEPTHIS and "K_L_M" are stored, but "KeepThis"
and "_K_L_M" are not. Nested List and Dict items may not be
read back correctly, you end up with a string representation
instead.
使用:set viminfo
查看viminfo
设置的当前值。在~/.vimrc
文件中修改它。
set viminfo='100,<500,s10,h,!
由于在插件之前加载vimrc
,因此将SessionOpenLast
添加到vimrc
将无效。要解决此问题,请创建一个自动命令:
autocmd VimEnter * SessionOpenLast
答案 1 :(得分:1)
"My Sessionman Conf
set viminfo='100,<500,s10,h,!
let sessionman_save_on_exit = 1
function! ReadSession()
SessionOpenLast
endfunction
" if no file args then open the last session
autocmd VimEnter * if argc() == 0 | call ReadSession() | endif