使用VIM開發軟體項目 - (2) 會話和viminfo
本節所用命令的協助入口:
:help mksession
:help 'sessionoptions'
:help source
:help wviminfo
:help rviminfo
:help 'viminfo
很多軟體都具有這樣一種功能:在你下一次啟動該軟體時,它會自動為你恢複到你上次退出的環境,恢複視窗布局、所開啟的檔案,甚至是上次的設定。
那麼,VIM有沒有這種功能呢?
答案當然是肯定的!這需要使用VIM的會話(session)及viminfo的儲存和恢複功能。
這
裡所說的會話和viminfo,包括了你在本次使用VIM過程中的編輯環境,VIM可以把這個編輯環境儲存下來,然後你在下次啟動VIM後,可以再恢複回
這個環境。我們在開發軟體項目時,其周期不是一兩天。如果你在中途退出了VIM而不能恢複原先的編輯環境的話,你又要重新開啟你所開啟的檔案,重新定義你
的映射、縮寫,重新置放你所設定的標記的位置,重新設定項目相關設定……不是一般的麻煩!
要恢複上次的編輯環境,我們需要儲存兩種不同的資訊,一種是會話資訊,另外一種是viminfo資訊。
- 會話資訊中儲存了所有視窗的視圖,外加全域設定。
- viminfo資訊中儲存了命令列曆史、搜尋字串曆史、輸入行曆史、非空的寄存器內容、檔案的位置標記、最近搜尋/替換的模式、緩衝區列表、全域變數等資訊。
我們在下面分別對其進行介紹。
[會話]
我們可以使用”:mksession ”
命令來建立一個會話檔案,如果省略檔案名稱的話,會自動建立一個名為Session.vim的會話檔案。會話檔案,其本質上是一個VIM指令碼,你可以使用上述命令產生一個會話檔案,然後再查看其中的內容,就會對會話檔案有一個深入的認識。
會話檔案中儲存哪些資訊,是由'sessionoptions'
選項決定的。預設的'sessionoptions'
選
項包括"blank,buffers,curdir,folds,help,options,tabpages,winsize",意為會話檔案會恢複當
前編輯環境的空視窗、所有的緩衝區、目前的目錄、摺疊相關的資訊、說明視窗、所有的選項和映射、所有的標籤頁、視窗大小。
如果你使用windows上的VIM,並且希望你的會話檔案可以同時被windows版本的VIM和UNIX版本的VIM共同使用的話,在'sessionoptions'
中加入'slash'
和'unix'
,前者把檔案名稱中的’/’替換為’/’,後者會把會話檔案的分行符號儲存成unix格式。
如果你不希望在會話中儲存當前路徑,而是希望會話檔案所在的目錄自動成為當前工作目錄,那麼,需要在'sessionoptions'
去掉'curdir'
,加入'sesdir'
,
這樣每次載入會話檔案時,這個檔案所在的目錄,就被設為VIM的當前工作目錄。在你通過網路訪問其它項目時,或者你的項目有多個不同版本(位於不同的目
錄),而你想始終使用一個會話檔案時,這個選項比較有用:你只需要把會話檔案拷貝到不同的目錄,然後使用就可以了。會話檔案中儲存的是檔案的相對路徑,而
不是絕對路徑。
我們在上面使用”:mksession”
命令建立了會話檔案,那麼怎麼使用會話檔案恢複編輯環境呢?很簡單,你只需要使用”source {file}”
來匯入會話檔案。因為會話檔案是一個指令碼,裡面儲存的是Ex命令,所以”source”
命令只是把會話檔案中的Ex命令執行一遍。
[viminfo]
使用”:wviminfo
”命令,可以手動建立一個viminfo檔案。
其實,在VIM退出時,每次都會儲存一個.viminfo檔案在使用者的主目錄。我們使用”:wviminfo
”命令則是手動建立一個viminfo檔案,因為預設的.viminfo檔案會在每次退出VIM時自動更新,誰知道你在關閉當前軟體項目後,又使用VIM做過些什麼呢?這樣的話,.viminfo中的資訊,也許就與你所進行的軟體項目無關了。還是手動儲存一個保險。
”:wviminfo
”命令儲存哪些內容,以及儲存的數目,由'viminfo'
選項決定,這個選項的值在windows上和在linux上的預設值不同,具體含義參閱手冊。
要讀入你所儲存的viminfo檔案,使用”:rviminfo
”命令。
現在,回到我們的例子,依舊是上篇文章中的抓圖,先看一下我們目前的目錄,執行”:pwd
”,顯示“/home/easwy/src/vim70
”,接下來,執行下面的命令:
:cd src '切換到/home/easwy/src/vim70/src目錄
:set sessionoptions-=curdir '在session option中去掉curdir
:set sessionoptions+=sesdir '在session option中加入sesdir
:mksession vim70.vim '建立一個會話檔案
:wviminfo vim70.viminfo '建立一個viminfo檔案
:qa '退出vim
退出vim後,在命令列下執行“gvim &
”,再次進入VIM,這時看到的是一個空白視窗。然後執行下面的命令:
:source ~/src/vim70/src/vim70.vim '載入會話檔案
:rviminfo vim70.viminfo '讀入viminfo檔案
太棒了,又恢複到昨天退出時的狀態了!繼續工作~~~~
[參考文檔
]
1. VIM協助檔案
2. http://vimcdoc.sourceforge.net/
原文地址
http://blog.csdn.net/easwy/archive/2007/02/16/1511021.aspx