2011-10-22 50 views
3

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

我已配置会话自动保存。如果Gvim可以自动加载最后一个会话,那将会很好。但是,这个功能对我来说甚至都不起作用。当我重新启动Gvim时,SessionShowLast打印出“上一次会话未定义,当前会话为”“”。

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

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

回答

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的插件加载之前,将SessionOpenLastvimrc将无法​​正常工作。为了解决这个问题,创建一个自动命令:

autocmd VimEnter * SessionOpenLast 
+0

中的引号“:帮助‘viminfo’里”命令是什么我真的错过!谢谢)) – raacer

+0

我增加了“!”默认值为''100,<500,s10,h“(for linux)in vimrc: set viminfo ='100,<500,s10,h,! 它的工作原理。 现在寻找从vimrc运行SessionOpenLast的方法。 – raacer

+0

我对“sessionman”插件一无所知,但你是否幸运地将'SessionOpenLast'添加到vimrc的末尾? – sarnold

0
"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 
+2

请你解释一下,让别人可以轻松地理解 – VicJordan