CONAN ZONE

          你越掙扎我就越興奮

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            0 Posts :: 282 Stories :: 0 Comments :: 0 Trackbacks

          本節所用命令的幫助入口:

          :help mksession
          :help 'sessionoptions'
          :help source
          :help wviminfo
          :help rviminfo
          :help 'viminfo


          很多軟件都具有這樣一種功能:在你下一次啟動該軟件時,它會自動為你恢復到你上次退出的環境,恢復窗口布局、所打開的文件,甚至是上次的設置。

          那么,VIM有沒有這種功能呢?

          答案當然是肯定的!這需要使用VIM的會話(session)及viminfo的保存和恢復功能。

          這里所說的會話和viminfo,包括了你在本次使用VIM過程中的編輯環境,VIM可以把這個編輯環境保存下來,然后你在下次啟動VIM后,可以再恢復回這個環境。我們在開發軟件項目時,其周期不是一兩天。如果你在中途退出了VIM而不能恢復原先的編輯環境的話,你又要重新打開你所打開的文件,重新定義你的映射、縮寫,重新定位你所設定的標記的位置,重新設置項目相關設置……不是一般的麻煩!

          要恢復上次的編輯環境,我們需要保存兩種不同的信息,一種是會話信息,另外一種是viminfo信息。

          -    會話信息中保存了所有窗口的視圖,外加全局設置。
          -    viminfo信息中保存了命令行歷史、搜索字符串歷史、輸入行歷史、非空的寄存器內容、文件的位置標記、最近搜索/替換的模式、緩沖區列表、全局變量等信息。

          我們在下面分別對其進行介紹。

          [會話]

          我們可以使用”:mksession [file]”命令來創建一個會話文件,如果省略文件名的話,會自動創建一個名為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 [file]”命令,可以手動創建一個viminfo文件。

          其實,在VIM退出時,每次都會保存一個.viminfo文件在用戶的主目錄。我們使用”:wviminfo”命令則是手動創建一個viminfo文件,因為缺省的.viminfo文件會在每次退出VIM時自動更新,誰知道你在關閉當前軟件項目后,又使用VIM做過些什么呢?這樣的話,.viminfo中的信息,也許就與你所進行的軟件項目無關了。還是手動保存一個保險。

          :wviminfo”命令保存哪些內容,以及保存的數目,由'viminfo'選項決定,這個選項的值在windows上和在linux上的缺省值不同,具體含義參閱手冊。

          要讀入你所保存的viminfo文件,使用”:rviminfo [file]”命令。


          現在,回到我們的例子,依舊是上篇文章中的抓圖,先看一下我們當前目錄,執行”: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文件



          太棒了,又恢復到昨天退出時的狀態了!繼續工作~~~~

          posted on 2009-04-08 21:44 CONAN 閱讀(260) 評論(0)  編輯  收藏 所屬分類: VIM
          主站蜘蛛池模板: 阳东县| 麦盖提县| 成安县| 灵丘县| 屏东县| 庄浪县| 杭锦旗| 铁力市| 通辽市| 武平县| 巴塘县| 富平县| 尚义县| 蕉岭县| 彭阳县| 讷河市| 嘉定区| 永嘉县| 永济市| 乐亭县| 馆陶县| 香港 | 张家界市| 鹤山市| 石城县| 霍邱县| 茌平县| 睢宁县| 平昌县| 宜城市| 古田县| 石家庄市| 墨竹工卡县| 固安县| 龙川县| 浪卡子县| 隆化县| 宁波市| 罗山县| 璧山县| 崇信县|