CONAN ZONE

          你越掙扎我就越興奮

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

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

          :help 'path'
          :help mksession
          :help find
          :help gf
          :help CTRL-W_f

          我們在前面介紹了vimrc,vimrc定義了VIM通常的行為。每個項目都有其特殊的定義,雖然我們也可以在vimrc中對每個項目進行定制,但這樣一來,vimrc會變得很大,使VIM啟動速度變慢;另外也會使vimrc變得難以維護。

          因此,我們使用其它的方法來保存項目相關的信息,這就是本文的主要內容。我們將以path選項的設置為例進行講解。

          path選項定義了一個目錄列表,在使用gf,find,以及CTRL-W f等命令時,如果使用的是相對路徑,那么就會在path選項定義的目錄列表中查找相應的文件。path選項以逗號分隔各目錄名。我們依舊以VIM 7.0的源代碼為例(源代碼放在~/src/vim70/目錄中)。

          對于這個項目,我們的path選項設置如下:


          set path=.,/usr/include,,~/src/vim70/**

          稍微解釋一下各項的含義,更詳細的信息,請查看path選項的幫助頁:


          .                在當前文件所在目錄中搜索
          /usr/include     在/usr/include目錄中搜索
          ,,               在當前工作路徑中搜索
          ~/src/vim70/**   在~/src/vim70的所有子目錄樹中進行搜索

          設置了path選項后,怎么用呢?

          我們還是回到序章中的屏幕抓圖,我們把光標定位到src/main.c文件第22行的”fcntl.h”單詞上,然后在Normal模式下按”gf”。咦,VIM打開了/usr/include/fcntl.h文件!

          現在我們按”CTRL-^”回到剛才的位置,光標仍舊定位在第22行的”fcntl.h”單詞上,然后按”CTRL-W f”。啊哈,這次VIM打開了一個水平分隔窗口,在此窗口中打開了/usr/include/fcntl.h。

          盡管在src/main.c中未指定fcntl.h的路徑,但VIM會在path選項定義的路徑中搜索此文件,方便吧!

          現在我們看一下find命令,輸入:


          :find netrw.vim


          VIM打開了~/src/vim70/runtime/autoload/netrw.vim文件。用這種方法打開文件真是太方便了,你不用輸入文件的路徑,VIM會自動在path選項定義的路徑中搜索。不過”find”命令也有缺陷,如果你只記得文件名的一部分,那么就沒有辦法用find命令打開這個文件了。而且find命令也不允許使用正則表達式。沒關系,我們還有更好的方法來打開文件,我將在后續文章中介紹這些方法。

          path選項介紹完了,我們進入正題,如何把本項目相關的配置保存起來,下次打開本項目時自動恢復這些配置呢?

          我們有兩種方法做到這一點。

          [方法1]
           

          我們在~/src/vim70/目錄下建立一個文件,假定文件名為workspace.vim,文件內容為:
           

          "set project path
          set path+=~/src/vim70/**


          這個文件中保存了項目相關的信息,例如選項值,鍵映射,函數定義,自動命令,等等。我們的例子中只定義的path選項,我們沒有使用”set path=…”語句,在VIM幫助頁中建議使用”set path+=…”和”set path-=…”格式。

           
          接下來,在你的vimrc文件中加入下面的語句:
           

          " execute project related configuration in current directory
          if filereadable("workspace.vim")
              source workspace.vim
          endif


          以后,每次你在~/src/vim70/目錄中啟動VIM時,VIM都會自動載入workspace.vim,恢復項目的配置信息。

          [方法2]

          還記得本系列文章的第二篇“使用會話和viminfo”嗎?那篇文章中,我們介紹了使用會話和viminfo保存項目環境的方法。如果你使用了會話,那么選項值,鍵映射,和其它很多信息都已經保存了。但會話的功能畢竟有限,不能把項目相關的配置全部保存下來,怎么辦呢?

          VIM的開發者已經想到了這個問題,并提供了解決辦法。

          在VIM載入會話文件的最后一步,它會查找一個額外的文件并執行其中的ex命令。查找的規則是,把會話文件名的后綴去掉,然后在后面加上“x.vim”,。假設你的會話文件名為example.session,VIM就會查找是否有examplex.vim,如果找到,就會執行此文件中的ex命令。

           
          好了,我們先創建我們的會話文件:
           

          :cd ~/src/vim70
          :set sessionoptions-=curdir        '在session option中去掉curdir
          :set sessionoptions+=sesdir        '在session option中加入sesdir
          :mksession vim70s.vim              '創建一個會話文件


          然后再編輯一個名為~/src/vim70/vim70sx.vim的文件,文件的內容為(當然,你可以在這個文件中加入更多內容):


          "set project path
          set path+=~/src/vim70/**


          退出vim后,在命令行下執行”gvim &”,再次進入VIM,這時看到的是一個空白窗口。然后執行下面的命令:


          :source ~/src/vim70/vim70s.vim  '載入會話文件


          太棒了!原來的會話環境已經恢復,并且項目相關的配置也設置好了!

          來自:http://blog.csdn.net/easwy/archive/2007/02/27/1515803.aspx

          posted on 2009-04-08 21:45 CONAN 閱讀(344) 評論(0)  編輯  收藏 所屬分類: VIM
          主站蜘蛛池模板: 三明市| 双鸭山市| 沂水县| 盐边县| 阿巴嘎旗| 巫溪县| 伊金霍洛旗| 宝坻区| 张家口市| 霍邱县| 栖霞市| 婺源县| 达尔| 普兰县| 辽阳县| 佛山市| 西峡县| 涟水县| 亚东县| 武宣县| 上高县| 张掖市| 翁源县| 延津县| 敦化市| 子洲县| 胶州市| 泸州市| 台中县| 桂林市| 巴楚县| 阜宁县| 南平市| 珠海市| 洛南县| 雷山县| 策勒县| 南郑县| 高陵县| 宣威市| 景洪市|