本節所用命令的幫助入口:
: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