花了點時間翻譯出來,有些地方還不是很清晰明了,主要是有些功能還尚未使用。下載
project中文幫助(也
可以將下文保存成project.txt文件)放到vim的doc目錄中,覆蓋原來的英文幫助。如果你不想覆蓋,你可以把原來的幫助文件移動到上層目錄或
其他地方,注意不要重命名放在doc目錄下,不然在使用helptags doc目錄產(chǎn)生tags時會提示tag重復(fù)的警告信息。以后使用: help
project 出來的就是中文手冊了。時間倉促,翻譯的不好,不當或錯誤之處敬請各位看官指出來。
*project.txt* 一個用來管理多個項目及項目源代碼的插件
支持版本: Vim 6.x 及 Vim7.x
最后更新: 2006 年 10 月 13 日 星期五
翻譯更新: 2007 年 08 月 16 日 星期五
作者:Aric Blumer
譯者:Denven
*project* *project-plugin*
目錄:
1.命令..............調(diào)出插件.............|project-invoking|
2.繼承...........項目層層關(guān)系.........|project-inheritance|
3.映射.............插件映射..............|project-mappings|
4.添加映射.......為插件添加映射...|project-adding-mappings|
5.設(shè)置..............項目設(shè)置.............|project-settings|
6.樣例文件..........項目樣例..............|project-example|
7.技巧..............使用技巧.................|project-tips|
使用這個插件的基本功能可以為你經(jīng)常訪問的文件提供方便的瀏覽. 文件會在 Vim 左側(cè)
窗口列出來, 在文件名上按 <Return> 或者雙擊鼠標就可以打開相應(yīng)的文件. 這比使用
|file-explorer| 去瀏覽多層目錄要更為便捷.
也可在選擇一個文件時候去讓插件更改目錄, 執(zhí)行指定都 Vim 腳本. 這些腳本可以通過
修改 $PATH 來設(shè)定編譯器等的環(huán)境. 這在進行多項目開發(fā)時可以讓 quickfix 工作在不
同的環(huán)境中.
其他特性:
o 在項目中實時加載或卸載文件(\l, \L, \w, and \W)
o 在項目中所有文件進行全局搜索(\g and \G)
o 對某一個文件單獨執(zhí)行用戶指定的腳本(可以利用這個特寫來關(guān)聯(lián)一個文件到
某一個外部程序) (使用\1 到 \9)
o 對所有文件執(zhí)行某個用戶指定的腳本(使用\f1-\f9 和 \F1-\F9)
o 用戶高可定制性
o 可以配合 |netrw| 插件使用 XXXX://... 管理遠程項目. XXXX 代表 ftp,
rcp, scp, or http.
可以在一個單獨的純本文件中或在 vimrc 中設(shè)置幾個全局量變進行配置.
必須在 |vimrc| 文件中 set 'nocompatible' 才能使用這個插件. 也可以通過設(shè)置變量
"loaded_project" 來禁止插件被加載: >
:let loaded_project = 1
==============================================================================
COMMANDS *project-invoking*
要使用本插件, 只需將其放置到 Vim 的插件目錄(~/.vim/plugin)即可. 參見
"|add-global-plugin|", 在下次打開 Vim 時, 輸入如下命令 >
:Project
或者 >
:Project {file}
如果沒有指定具體的項目文件, 那么會默認使用$HOME/.vimprojects文件.
命令: [g]vim +Project 可在 Vim 啟動時同時自動載入project插件窗口.
調(diào)出項目窗口時每次只能使用某一個文件, 如果想更改項目, 在項目窗口中運行:bwipe
刪除項目緩沖, 然后用 :Project {file} 重新載入新的項目.
可以在同一個文件中保留和顯示多個項目, 通過 {} (c參見 |fold.txt|) 來分隔. 在項目
中可以有任意多個嵌套的折疊. {} 中的每一行被當作一個文件名. 空行和 # 號后面的內(nèi)
容將被忽略.
插件使用 Vim 標準的折疊方式, 支持所有的 |fold-commands| . 例如雙擊折疊的首行可
以打開或關(guān)閉該折疊. 通過光標定位到一個文件名后按回車鍵或者雙擊即可打開該文件,
插件會為在右側(cè)打開一個新窗口來顯示(如果映射了 |CTRL-W_p|, 也是等價的).
*project-syntax*
*語法*
項目入口描述形式:
project_entry ::=
<Description>={projpath} [{options}] {
[ filename ]
[ project_entry ]
}
{options} 可以是下面的一項或者幾項, 但必須放在同一行上.
CD={path}
in={filename}
out={filename}
filter="{pat}"
flags={flag}
注意: 一個項目入口可以包含在另一個項目入口里面, 這意味著可以在項目中設(shè)置層次關(guān)系.
<Description> 項目描述. 不能含有"="字符. 在 =. 的兩邊不能有空字符. 它會顯示在折疊
行上.
{projpath} 項目路徑. 它指向項目文件所在目錄, 可以在里面使用環(huán)境變量. 如果是一個相
對路徑, 插件會根據(jù)項目的父目錄及其上層目錄等層次建立路徑, 但最外層的項目入口必須
是一個絕對路徑. 參見下面 |project-inheritance|的例子.可以在該項中使用空格, 但是要
轉(zhuǎn)義. 下面的兩個例子是針對同一個目錄的:
>
Example=/my/directory/with\ spaces {
}
Example="/my/directory/with spaces" {
}
推薦在 Windows 上這樣使用: >
Example="c:\My Documents" {
}
而 Vim 很聰明, 這樣做也是可以的: >
Example=c:\My\ Documents {
}
CD= 表示在項目中選定一個文件時 Vim 將要進入的目錄(相當于使用|:cd|). 這對在需要
使用本地 Makefile 文件進行編譯時, 如|:make| 非常有用. 使用 CD=. 表示 Vim 將
{projpath} 及其等價路徑設(shè)為當前工作目錄. 如果不設(shè)置 CD 的值將無法中在項目中進
行目錄都切換, 注意 "=" 的兩邊沒有空格. CD 參數(shù)也可以是來自其父目錄下都一個相對
路徑. 參考 |project-inheritance| 中的例子. 在使用 |netrw| 瀏覽項目時該指令將被
忽略. 在 {projpath} 中可以使用空格.
in= 和 out= 用來在進入或者退出文件緩沖時執(zhí)行特定的 Vim 腳本. (參考 |BufEnter|
和 |BufLeave| 自動命令事件). 它可以使用 Vim 腳本來為項目設(shè)定或取消一定的環(huán)境.
例如:
in.vim: >
let $PROJECT_HOME='~/my_project'
" Put the compiler in $PATH
if $PATH !~ '/path/to/my/compiler'
let $PATH=$PATH.':/path/to/my/compiler'
endif
out.vim: >
" Remove compiler from $PATH
if $PATH =~ '/path/to/my/compiler'
let $PATH=substitute($PATH, ':/path/to/my/compiler', '', 'g')
endif
在這種情況下, 在合適的環(huán)境下可以使用 :make 進行編譯你正在編輯的文件. 如果腳本中
使用的是相對路徑, If the path to the script is relative, then it is
relative from {projpath}.
如果子項目沒有另行設(shè)定, 這些指令會被子項目繼承. 當配合 |netrw| 插件使用時, in=
和 out= 中的路徑必須是絕對路徑.
filter= 過濾符. 它指定一個全局的 |glob()| 文件匹配模式. 用于在使用 \r 時更新項目
窗口中的文件列表. 由于可能含有多個文件匹配模式, 必須使用雙引號將過濾符號串擴起
來. 如果不設(shè)置過濾符號, 插件默認使用通配符 * 來當做過濾符.注意"="前后不能含有空
格. 如果子項目沒有指定具體的過濾符, 子項目將會繼承父項目的過濾符.
flags= 標識位 為某個折疊設(shè)置(啟用/取消)具體的特性. 為了記憶方便, 通常使用小寫
的表示關(guān)閉某一特性, 大寫則表示開啟某一特性. {flag} 參數(shù)可以使用下面的字符標志位:
標志位 描述 ~
l 關(guān)閉由 \L 的遞歸. 對于子折疊的同樣也被關(guān)閉.
r 關(guān)閉更新. 當對折疊使用了\r or \R 后不要進行更新.
它不影響子目錄的遞歸.
S 為刷新和創(chuàng)建項目開啟排序功能.
s 關(guān)閉刷新和創(chuàng)建項目的排序功能.
T 開啟更新項目時折疊處于當前折疊的正下方. 跟在全局變量
g:proj_flags 中使用標志位等效, 但是不能針對多個折疊而言.
t 關(guān)閉更新項目時折疊至當前折疊區(qū)域的最頂部功能. 強制折疊到底部.
w 關(guān)閉 \W 的遞歸. 對于子折疊的同樣也被關(guān)閉.
在子項目不能沿用父項目中設(shè)定的這些標志.
只對當前折疊生效, 折疊外的文字不受其影響.
==============================================================================
INHERITANCE *project-inheritance*
通過下面兩個項目文件的對比來理解層次的含義:
>
Parent=~/my_project CD=. filter="Make* *.mk" flags=r {
Child1=c_code {
}
Child2=include CD=. filter="*.h" {
}
}
Child1 的路徑是 "~/my_project/c_code", 因為 Child1 繼承了 ~/my_project. 它還
繼承了 CD. 因為父層的 CD=., 所以對于父層的當前工作路徑是 "~/my_project". 那么
Child1 繼承過來的 CD 也是"~/my_project". 最后, Child1 從父層繼承過來過濾符.
而標志位則是不能繼承的,除非單獨設(shè)置.
Child2 只將 "~/my_project" 從父層繼承過來.
所以上述例子跟下面的展開是等價的:
>
Parent=~/my_project CD=. filter="Make* *.mk" flags=r {
Child1=~/my_project/c_code CD=~/my_project filter="Make* *.mk" {
}
Child2=~/my_project/include CD=~/my_project/include filter="*.h" {
}
}
(在一個實際的項目中, Child1 一般不會希望從父層繼承過濾符號, 該例子只是為了說明
這個概念而已), 使用 \i 可以顯示當前光標下項目的層次關(guān)系.
==============================================================================
MAPPINGS *project-mappings*
映射 動作 ~
\r 根據(jù)過濾符更新光標處的項目. 更新項目, 每深入一層折疊縮進一個空格.
如果在一行最后使用了 "# pragma keep" (不含雙引號), 那么該行將保留,
不會被在更新時被刪除. 當使用 . 作為一個入口時, 進入當前目錄進行瀏覽
相當方便, 通常對于這個有用的入口你肯定想在更新時被保留.
注意這個映射是 <LocalLeader>r, Vim 默認使用 \ 作為|<LocalLeader>|.
對于使用 |netrw| 瀏覽的項目不適用.
\R 遞歸執(zhí)行 \r.
對于使用 |netrw| 瀏覽的項目不適用.
\c 創(chuàng)建一個項目. 要求用戶輸入 項目描述, 文件路徑, CD 參數(shù), 文件名匹配表達
式 |glob()|. 插件會根據(jù)這些信息在光標下面建立一個項目的入口.
對于使用 |netrw| 瀏覽的項目不適用.
\C 為目錄及其子目錄下的文件遞歸創(chuàng)建一個項目.
<Return>
在前一窗口或者另外一個新窗口中打開光標處的文件. 如果光標位于折疊上,
按此鍵打開或關(guān)閉折疊.
<S-Return>
\s
跟 <Return> 一樣, 但會水平分割目標窗口.
使用 <LocalLeader>s 主要是為那些不能識別 <S-Return> 的終端而提供的.
\S
加載所有文件到當前窗口, 當前窗口會被水平分割顯示所有文件.
<C-Return>
\o
同 <Return> 在一個窗口中打開當前文件, 同時關(guān)閉其他所有打開的窗口.
該映射保證該文件是除項目窗口以外其他唯一的窗口.
<LocalLeader>o 主要是為那些不能識別 <C-Return> 的終端而提供的.
<M-Return>
\v
同 <Return> 僅僅顯示文件內(nèi)容, 而光標依然停留在項目窗口中.
<2-LeftMouse>
(Double-click) 雙擊鼠標左鍵, 如果當前光標下是一個已經(jīng)展開的折疊則關(guān)閉
該折疊, 反之打開該折疊. 如果當前光標下為一個文件名, 則在|CTRL-W_p|(前
一窗口)或項目右側(cè)新窗口中打開該文件.
<S-2-LeftMouse>
同 <S-Return>.
<C-2-LeftMouse>
同 <C-Return>.
<RightMouse>
根據(jù)變量的值 g:proj_window_increment 增加項目窗口的寬度, 反復(fù)點擊則為
在原寬度
g:proj_window_width
和增加后的寬度
g:proj_window_width + g:proj_window_increment
之間切換.
是否能夠切換原窗口和寬窗口, 或手動改變窗口寬度均取決于全局變量
g:proj_flags 中的標志位 't' 是否設(shè)置. (參見|project-flags|).
注意在其他窗口中單擊鼠標時右鍵并不能自動將光標定位到項目窗口.
在離開項目窗口后, 項目窗口寬度會變回到原寬度 g:proj_window_width.
<space> 同 <RightMouse>
<CTRL-Up>
\<Up>
移動文本或者折疊到當前光標的上一行. 在有的終端中可能無法識別此綁定而失效.
<LocalLeader><Up> 主要是為那些不能識別 <C-Up> 的終端而提供的.
<CTRL-Down>
\<Down>
移動文本或者折疊到當前光標的下一行. 在有的終端中可能無法識別此綁定而失效.
<LocalLeader><Down> 主要是為那些不能識別 <C-Down>.
\i 在狀態(tài)欄中顯示光標所在折疊完全解析和繼承的參數(shù).
這是專門為手動進入項目時進行相對路徑和繼承參數(shù)的調(diào)試而映射的.
\I 在狀態(tài)欄顯示光標下文件名的全名(含路徑). 此功能是插件調(diào)用
Project_GetFname(line('.'))函數(shù)來實現(xiàn)的.
\1 - \9
執(zhí)行在 g:proj_run{x} 指定的命令, {x} 是執(zhí)行命令入口的編號.
參考下文中的 g:proj_run1.
\f1-\f9
執(zhí)行 g:proj_run_fold{x} 中指定的命令, {x} 執(zhí)行命令入口的編號, 命令只針
對當前項目層的文件. 參考下文中的|project-settings|.
\F1-\F9
執(zhí)行 g:proj_run_fold{x} 中指定的命令, {x} 是執(zhí)行命令入口的編號. 對當前
項目層及其所有子項目的所有文件執(zhí)行命令. 參考下文中的 |project-settings|
\0 顯示由 \1 到 \9 定義的命令.
\f0 顯示由 \f1 到 \f9 和 \F1 到 \F9 所定義的命令. \F0 作用與此相同.
\l 加載當前項目中的所有文件到 Vim 中, 在加載過程中按任何鍵可以停止加載.
\L 加載當前項目及其子項目中的所有文件到 Vim 中. 請謹慎使用這個映射, 作者并
不建議在項目中含有成千上萬的文件時使用該映射. (順便提一句, 我的項目中有
5,300 多個文件!) 在加載過程中按任何鍵可以停止加載.
\w 刪除當前項目層次中的所有文件. (并非真正刪除文件, 只針對該項目組織而言.
如果文件被修改, 會先保存文件.) 擦除過程中按任意鍵可以停止此操作.
\W 刪除當前項目層及其子層次中的所有文件. (并非真正刪除文件, 只針對該項目組
織而言. 如果文件被修改, 會先保存文件.) 擦除過程中按任意鍵可以停止此操作.
\g 搜索當前項目層所有文件.
\G 搜索項目所有層所有文件.
\e 為先通過 <Return> 選擇的項目文件設(shè)置環(huán)境變量. 例如在 \e 設(shè)定環(huán)境變量后,
無需打開項目中的任何文件便可用 :make 來進行編譯.
\E 使用 |file-explorer| 瀏覽光標處目錄內(nèi)的文件. 不支持 netrw 時的項目管理.
<F12> 當在變量 g:proj_flags (參考 |project-flags|)中使用了標志位 'g' 時, 該鍵
用來切換打開和關(guān)閉項目窗口. 可以在 vimrc 中進行重新綁定. 例如將其映射到
<Leader>P:
nmap <silent> <Leader>P <Plug>ToggleProject
注意由于使用 :help 時幫助窗口跟項目窗口有所沖突, 該插件通過重新映射 :help避免了
這個問題(在使用時你可能無法感覺出來).
==============================================================================
ADDING MAPPINGS *project-adding-mappings*
添加映射
也可單獨在 $HOME/.vimproject_mappings 文件中設(shè)置自己需要的映射. 如果這個文件存
在, 插件每次啟動時候會執(zhí)行(source)它. 下例中定義了統(tǒng)計項目中入口數(shù)量功能的映射
當按下 \K (Kount, 這因為 C 與 K 諧音 :-):時候會顯示統(tǒng)計結(jié)果 >
function! s:Wc()
let b:loadcount=0
function! SpawnExec(infoline, fname, lineno, data)
let b:loadcount = b:loadcount + 1
if getchar(0) != 0 | let b:stop_everything=1 | endif
endfunction
call Project_ForEach(1, line('.'), "*SpawnExec", 0, '')
delfunction SpawnExec
echon b:loadcount." Files\r"
unlet b:loadcount
if exists("b:stop_everything")
unlet b:stop_everything
echon "Aborted.\r"
endif
endfunction
nnoremap <buffer> <silent> <LocalLeader>K :call <SID>Wc()<CR>
下例在 $HOME/.vimproject_mappings 中實現(xiàn)了插件對perforce的整合:
>
function! s:DoP4(cmd)
let name=Project_GetFname(line('.'))
let dir=substitute(name, '\(.*\)/.*', '\1', 'g')
exec 'cd '.dir
exec "!".a:cmd.' '.Project_GetFname(line('.'))
cd -
endfunction
nmap <buffer> <silent> \pa :call <SID>DoP4("p4add")<CR>
nmap <buffer> <silent> \pe :call <SID>DoP4("p4edit")<CR>
<
(注意我進入文件所在目錄后才可以使用 $P4CONFIG 文件. 請參考關(guān)于 perforce 的文檔.)
這就建立了使用映射 \pe 來檢查用于編輯的文件, 用 \pa 來將文件存儲.
下例中為 <Return> 在打開某種特定文件時映射到一個外部程序來. (該例中它調(diào)
用 ee 來瀏覽jpg文件). 盡管看起來有些刻意, 但它還是有點用的.
>
let s:sid = substitute(maparg('<Return>', 'n'), '.*\(<SNR>.\{-}\)_.*', '\1', '')
function! s:LaunchOrWhat()
let fname=Project_GetFname(line('.'))
if fname =~ '\.jpg$'
exec 'silent! !ee "'.fname.'"&'
else
call {s:sid}_DoFoldOrOpenEntry('', 'e')
endif
endfunction
nnoremap <buffer> <silent> <Return> \|:call <SID>LaunchOrWhat()<CR>
<
該例中調(diào)用外部程序來查看后綴名為jpg的文件, 對其他文件則仍以原 <Return> 處理.
==============================================================================
SETTINGS *project-settings*
在 vimrc 文件中設(shè)定下述變量后, Vim 會在加載插件前先使用這些屬性從而不按照插
件的默認屬性進行加載.
g:proj_window_width
插件項目窗口寬度. 默認值: 24
盡管插件不能完全成功地按照我預(yù)想的方式設(shè)定窗口的大小,但是這個變量在
設(shè)定窗口大小時還是會起到很大的作用.
g:proj_window_increment
當按空格鍵 <space> 或者單擊鼠標左鍵 <LeftMouse >時項目窗口寬度增加量
默認值: 100 (參見 |project-mappings|)
*project-flags*
g:proj_flags
默認值: "imst"
這些標志位可以用來控制插件的行為, 具體如下:
標志位 描述 ~
b 設(shè)置后將使用 |browse()| 通過瀏覽目錄來為 \c 和 \C 設(shè)定目錄.
默認關(guān)閉, 因為窗口瀏覽器本身不允許進行目錄的選擇.
c 設(shè)置后, 在項目窗口中打開文件后會自動關(guān)閉項目窗口.
F 顯示浮動項目窗口. 關(guān)閉窗口的自動調(diào)整大小和窗口替換.
This allows placement between other windows that wish to share
similar placement at the side of the screen.
在使用外部窗口管理器的時候很有用.
g 設(shè)置后會將切換打開和關(guān)閉項目窗口映射到 <F12> 上.
i 設(shè)置后, 當選擇打開一個文件時會在命令行顯示文件名和當前工作路徑.
l 設(shè)置后, 項目插件在選擇一個要打開的文件時,使用命令 |:lcd| 替換默
認的 |:cd| 命令去改變目錄. 在有了下面的 L 標志位后, 此標志已經(jīng)
用處不大.
L 與標志位 l 很相似. 不管緩沖是否被使用, 它通過安裝一個進入/離開
緩沖的自動命令|:autocommand| 來確保當前工作目錄更改到 CD 參數(shù)
指定的目錄.(|:lcd| 命令只能為窗口而不能為緩沖改變當前工作目錄)
m 在常規(guī)模式下開啟 |CTRL-W_o| 和 |CTRL-W_CTRL_O| 映射, 使得當前
緩沖區(qū)成為唯一可見的緩沖區(qū), 但是項目窗口仍然可見.
n 設(shè)置后將在項目窗口中顯示行號.
s 設(shè)置后將在項目窗口中使用語法高亮.
S 設(shè)置后將在更新和創(chuàng)建項目時啟用排序.
t 設(shè)置后將在按空格 <space> 或鼠標右擊 <RightMouse> 時候進行原窗口
和加寬窗口之間的切換. 參見 See the entry for in |project-mappings|.
T 設(shè)置后, 子項目的折疊在更新時會緊跟在當前折疊下方顯示(而不是其底
部).
v 設(shè)置后將, 按 \G 搜索時用 :vimgrep 取代 :grep.
g:proj_run1 ... g:proj_run9
包含一個作用于文件的 Vim 命令, 參考前文中關(guān)于 \1 to \9 的映射.
%f 替換文件的全路徑和文件名
%F 替換文件的全路徑和文件名
is 替換文件的全路徑和包含空格的文件
%n 只替換文件名
%N 只替換包含空格的文件名
%h 替換項目主目錄
%H 替換包含空格的項目主目錄
%r 替換與 CD 目錄相關(guān)聯(lián)的路徑
%R 替換與包含空格的 CD 目錄相關(guān)聯(lián)的路徑
%d 替換 CD 目錄.
%D 替換包含空格的 CD 目錄
%% 未使用
例如, 如果在 vimrc 中做了如下設(shè)置, 在當前光標下按下 \3 時將調(diào)
出 gvim : >
let g:proj_run3='silent !gvim %f'
< 其他的幾個例子: >
let g:proj_run1='!p4 edit %f'
let g:proj_run2='!p4 add %f'
let g:proj_run4="echo 'Viewing %f'|sil !xterm -e less %f &"
<
在 Windows 系統(tǒng)中應(yīng)用單引號括住 %f, %h, %d 以避免 \ 引起的轉(zhuǎn)義.
g:proj_run_fold1 ... g:proj_run_fold9
包含一個作用于折疊內(nèi)文件的 Vim 命令. 參考前文中關(guān)于 \f1 to \f9
和 \F1 to \F9 的映射部分.$HOME/.vimproject_mappings
%f 替換文件名, %h 替換項目的主目錄, %d 替換 CD 目錄.
對應(yīng)多個文件名有兩種處理方式:
第一種(默認的)處理方式使用 %f 替換所有的絕對文件名, 讓命令只執(zhí)
行一次; 第二種是讓命令針對每個非絕對文件名執(zhí)行一次, %f 每次只
替換一個文件名. 使用第二種方式時, 須在變量 g:proj_run_fold{x}
的開頭加上一個通配符 '*' (通配符 '*' 在運行時將被自動去掉.)
例如, 注意以下兩種方式的差異: >
let g:proj_run_fold3="*echo '%h/%f'"
let g:proj_run_fold4="echo '%f'"
<
注意在Windows系統(tǒng)中, 需要用 '' 將 %f, %h, %c 括起來, 否則路徑中
使用的 \ 會出問題. 另一種辦法是把它們放在 |escape()| 函數(shù)中.
==============================================================================
PROJECT EXAMPLE FILE *project-example*
例子: 項目文件(~/.vimprojects): >
1 My Project=~/c/project CD=. in=in.vim out=out.vim flags=r {
2 Makefile
3 in.vim
4 out.vim
5 GUI Files=. filter="gui*.c gui*.h" {
6 gui_window.c
7 gui_dialog.c
8 gui_list.c
9 gui.h # Header file
10 }
11 Database Files=. filter="data*.c data*.h" {
12 data_read.c
13 data_write.c
14 data.h
15 }
16 OS-Specific Files {
17 Win32=. filter="os_win32*.c os_win32*.h" {
18 os_win32_gui.c
19 os_win32_io.c
20 }
21 Unix=. filter="os_unix*.c os_unix*.h" {
22 os_unix_gui.c
23 os_unix_io.c
24 }
25 }
26 }
(注意左側(cè)的行號不是文件內(nèi)容.)
==============================================================================
插件技巧 *project-tips*
1. 先為項目創(chuàng)建一個入口: >
Label=~/wherever CD=. filter="*.c *.h" {
}
<
然后將光標定位在折疊上按 \r, 腳本會自動添加對應(yīng)目錄下所有 C 文件(本例中)
到項目之中. 這與 \c 是等效的, 只是沒有對話框顯示.
2. 可以在項目列表里隨時添加,刪除或排序項目文件.
3. 當項目窗口沒有打開時, 輸入 >
:Project
< 可以將其打開. (插件有自動記憶功能, 而無需輸入具體的項目名稱.) 如果在
g:proj_flags 變量中設(shè)定了 'm' 標志位, 通過組合鍵 |CTRL-W_o| 可以重新打開
項目窗口. 毫無疑問, 這會關(guān)閉除當前窗口之外的其他所有打開的窗口.
4. 往項目中添加新的文件. 例如添加 'more.c' 到項目中去, 只需在項目入口之中插
入文件名后按 <Return> 鍵即可.
5. 當使用 |quickfix| 時候, 在文件名上按回車鍵 <Return> 并不會有效, 這樣的話,
將無法更改目錄, 運行腳本. 解決辦法是在使用 |quickfix| 前用 \L 將所有文件
載入到項目中去.
6. 當項目窗口因為或開或閉的折疊顯得凌亂時, 使用 |zM| 可以關(guān)閉所有的展開折疊,
讓項目窗口重新變得整潔如初.
7. 對于高級用戶, 可以嘗試插件提供如下幾個函數(shù):
Project_GetAllFnames()
返回一個折疊及其子項目(可選)下的所有文件名.
Project_ForEach()
在為項目中的每個文件提供一個調(diào)用函數(shù)的接口.如何使用請參考上面的例子以
及源代碼.
Project_GetFname(line_number)
在編寫自己的映射時用來獲取文件名.
8. 將光標定位到項目插件窗口的鍵映射, 在 vimrc 文件中添加:
>
nmap <silent> <Leader>P :Project<CR>
<
9. 項目入口中使用符號"."會調(diào)出|file-explorer|插件. 為了防止在更新時候刪除,
在項目入口中加入:
>
. # pragma keep
<
==============================================================================
致謝
感謝下列朋友為我在此插件開發(fā)過程中提供一些補丁:
Tomas Zellerin
Lawrence Kesteloot
Dave Eggum
A Harrison
Thomas Link
Richard Bair
Eric Arnold
Peter Jones
Eric Van Dewoestine
vim:ts=8 sw=8 noexpandtab tw=80 ft=help:
posted on 2007-11-19 19:11
Dr.Magic 閱讀(7832)
評論(0) 編輯 收藏 引用