2011-10-22 33 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