在Gvim中自动恢复上一个会话

raa*_*cer 4 vim session

我安装了sessionman,它运行正常.但是当我重新加载X会话两次(注销/登录,重启等)时会丢失会话,因为当KDE恢复Gvim时,它不会自动加载会话,而只会加载最后一个文件,然后在下次重新加载时将其保存在最后一个会话名称下.如果我没有运行SessionOpen,那么在下次重新加载时,我的上一个会话将丢失.

我已经配置了会话自动保存.如果Gvim也可以自动加载上一个会话,那将是很好的.但是,即使手动,此功能也不适用于我.当我重新启动Gvim时,SessionShowLast打印"上一个会话未定义,当前会话是""".

sessionman文档说:"打开的会话的名称保存在g:LAST_SESSION变量中,如果'viminfo'选项包含'!',则保存在viminfo文件中.但是我没有找到任何明确的解释什么是"viminfo选项",它应该包含'!',以及如何设置它.另外我不确定如何从vimrc执行SessionOpenLast.

如果我试图解决问题的方式是错误的,那么请纠正我.

sar*_*old 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.                                
Run Code Online (Sandbox Code Playgroud)

:set viminfo看你的当前值viminfo设置.在您的~/.vimrc文件中修改它.

set viminfo='100,<500,s10,h,!
Run Code Online (Sandbox Code Playgroud)

由于vimrc是插件加载之前,加入SessionOpenLastvimrc将无法正常工作.要解决此问题,请创建一个自动命令:

autocmd VimEnter * SessionOpenLast
Run Code Online (Sandbox Code Playgroud)

  • 这适用:autocmd VimEnter*SessionOpenLast (2认同)