vim的會話儲存功能

來源:互聯網
上載者:User
使用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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.