青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

花了點(diǎn)時間翻譯出來,有些地方還不是很清晰明了,主要是有些功能還尚未使用。下載 project中文幫助(也 可以將下文保存成project.txt文件)放到vim的doc目錄中,覆蓋原來的英文幫助。如果你不想覆蓋,你可以把原來的幫助文件移動到上層目錄或 其他地方,注意不要重命名放在doc目錄下,不然在使用helptags doc目錄產(chǎn)生tags時會提示tag重復(fù)的警告信息。以后使用: help project 出來的就是中文手冊了。時間倉促,翻譯的不好,不當(dāng)或錯誤之處敬請各位看官指出來。

*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> 或者雙擊鼠標(biāo)就可以打開相應(yīng)的文件. 這比使用
|file-explorer| 去瀏覽多層目錄要更為便捷.

也可在選擇一個文件時候去讓插件更改目錄, 執(zhí)行指定都 Vim 腳本. 這些腳本可以通過
修改 $PATH 來設(shè)定編譯器等的環(huán)境. 這在進(jìn)行多項目開發(fā)時可以讓 quickfix 工作在不
同的環(huán)境中.

其他特性:
    o 在項目中實(shí)時加載或卸載文件(\l, \L, \w, and \W)
    o 在項目中所有文件進(jìn)行全局搜索(\g and \G)
    o 對某一個文件單獨(dú)執(zhí)行用戶指定的腳本(可以利用這個特寫來關(guān)聯(lián)一個文件到
      某一個外部程序) (使用\1 到 \9)
    o 對所有文件執(zhí)行某個用戶指定的腳本(使用\f1-\f9 和 \F1-\F9)
    o 用戶高可定制性
    o 可以配合 |netrw| 插件使用 XXXX://... 管理遠(yuǎn)程項目. XXXX 代表 ftp,
      rcp, scp, or http.

可以在一個單獨(dú)的純本文件中或在 vimrc 中設(shè)置幾個全局量變進(jìn)行配置.

必須在 |vimrc| 文件中 set 'nocompatible' 才能使用這個插件. 也可以通過設(shè)置變量
"loaded_project" 來禁止插件被加載: >
    :let loaded_project = 1


==============================================================================
COMMANDS                        *project-invoking*

要使用本插件, 只需將其放置到 Vim 的插件目錄(~/.vim/plugin)即可. 參見
"|add-global-plugin|", 在下次打開 Vim 時, 輸入如下命令 >
    :Project
或者 >
    :Project {file}

如果沒有指定具體的項目文件, 那么會默認(rèn)使用$HOME/.vimprojects文件.

命令: [g]vim +Project 可在 Vim 啟動時同時自動載入project插件窗口.

調(diào)出項目窗口時每次只能使用某一個文件, 如果想更改項目, 在項目窗口中運(yùn)行:bwipe
刪除項目緩沖, 然后用 :Project {file} 重新載入新的項目.


可以在同一個文件中保留和顯示多個項目, 通過 {} (c參見 |fold.txt|) 來分隔. 在項目
中可以有任意多個嵌套的折疊. {} 中的每一行被當(dāng)作一個文件名. 空行和 # 號后面的內(nèi)
容將被忽略.

插件使用 Vim 標(biāo)準(zhǔn)的折疊方式, 支持所有的 |fold-commands| . 例如雙擊折疊的首行可
以打開或關(guān)閉該折疊. 通過光標(biāo)定位到一個文件名后按回車鍵或者雙擊即可打開該文件,
插件會為在右側(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 將要進(jìn)入的目錄(相當(dāng)于使用|:cd|). 這對在需要
使用本地 Makefile 文件進(jìn)行編譯時, 如|:make| 非常有用. 使用 CD=. 表示 Vim 將
{projpath} 及其等價路徑設(shè)為當(dāng)前工作目錄. 如果不設(shè)置 CD 的值將無法中在項目中進(jìn)
行目錄都切換, 注意 "=" 的兩邊沒有空格. CD 參數(shù)也可以是來自其父目錄下都一個相對
路徑. 參考 |project-inheritance| 中的例子. 在使用 |netrw| 瀏覽項目時該指令將被
忽略. 在 {projpath} 中可以使用空格.

in= 和 out= 用來在進(jìn)入或者退出文件緩沖時執(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 進(jìn)行編譯你正在編輯的文件. 如果腳本中
使用的是相對路徑,  If the path to the script is relative, then it is
relative from {projpath}.
如果子項目沒有另行設(shè)定, 這些指令會被子項目繼承. 當(dāng)配合 |netrw| 插件使用時, in=
和 out= 中的路徑必須是絕對路徑.

filter= 過濾符. 它指定一個全局的 |glob()| 文件匹配模式. 用于在使用 \r 時更新項目
窗口中的文件列表. 由于可能含有多個文件匹配模式, 必須使用雙引號將過濾符號串?dāng)U起
來. 如果不設(shè)置過濾符號, 插件默認(rèn)使用通配符 * 來當(dāng)做過濾符.注意"="前后不能含有空
格. 如果子項目沒有指定具體的過濾符, 子項目將會繼承父項目的過濾符.

flags= 標(biāo)識位 為某個折疊設(shè)置(啟用/取消)具體的特性. 為了記憶方便, 通常使用小寫
的表示關(guān)閉某一特性, 大寫則表示開啟某一特性. {flag} 參數(shù)可以使用下面的字符標(biāo)志位:

      標(biāo)志位      描述 ~

    l    關(guān)閉由 \L 的遞歸. 對于子折疊的同樣也被關(guān)閉.

    r    關(guān)閉更新. 當(dāng)對折疊使用了\r or \R 后不要進(jìn)行更新.
            它不影響子目錄的遞歸.

    S    為刷新和創(chuàng)建項目開啟排序功能.

    s    關(guān)閉刷新和創(chuàng)建項目的排序功能.

    T    開啟更新項目時折疊處于當(dāng)前折疊的正下方. 跟在全局變量
        g:proj_flags 中使用標(biāo)志位等效, 但是不能針對多個折疊而言.

    t    關(guān)閉更新項目時折疊至當(dāng)前折疊區(qū)域的最頂部功能. 強(qiáng)制折疊到底部.

    w    關(guān)閉 \W 的遞歸. 對于子折疊的同樣也被關(guān)閉.


在子項目不能沿用父項目中設(shè)定的這些標(biāo)志.

只對當(dāng)前折疊生效, 折疊外的文字不受其影響.


==============================================================================
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=., 所以對于父層的當(dāng)前工作路徑是 "~/my_project". 那么
Child1 繼承過來的 CD 也是"~/my_project". 最后, Child1 從父層繼承過來過濾符.
而標(biāo)志位則是不能繼承的,除非單獨(dú)設(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" {
     }
    }

(在一個實(shí)際的項目中, Child1 一般不會希望從父層繼承過濾符號, 該例子只是為了說明
 這個概念而已), 使用 \i 可以顯示當(dāng)前光標(biāo)下項目的層次關(guān)系.


==============================================================================
MAPPINGS                            *project-mappings*

映射    動作 ~

\r    根據(jù)過濾符更新光標(biāo)處的項目.  更新項目, 每深入一層折疊縮進(jìn)一個空格.

    如果在一行最后使用了 "# pragma keep" (不含雙引號), 那么該行將保留,
    不會被在更新時被刪除. 當(dāng)使用 . 作為一個入口時, 進(jìn)入當(dāng)前目錄進(jìn)行瀏覽
    相當(dāng)方便, 通常對于這個有用的入口你肯定想在更新時被保留.
 
    注意這個映射是 <LocalLeader>r, Vim 默認(rèn)使用 \ 作為|<LocalLeader>|.

    對于使用 |netrw| 瀏覽的項目不適用.

\R    遞歸執(zhí)行 \r.
    對于使用 |netrw| 瀏覽的項目不適用.

\c    創(chuàng)建一個項目. 要求用戶輸入 項目描述, 文件路徑, CD 參數(shù), 文件名匹配表達(dá)
        式 |glob()|. 插件會根據(jù)這些信息在光標(biāo)下面建立一個項目的入口.

    對于使用 |netrw| 瀏覽的項目不適用.

\C    為目錄及其子目錄下的文件遞歸創(chuàng)建一個項目.

<Return>
    在前一窗口或者另外一個新窗口中打開光標(biāo)處的文件. 如果光標(biāo)位于折疊上,
    按此鍵打開或關(guān)閉折疊.

<S-Return>
\s
    跟 <Return> 一樣, 但會水平分割目標(biāo)窗口.   
    使用 <LocalLeader>s 主要是為那些不能識別 <S-Return> 的終端而提供的.

\S
    加載所有文件到當(dāng)前窗口, 當(dāng)前窗口會被水平分割顯示所有文件.

<C-Return>
\o
    同 <Return> 在一個窗口中打開當(dāng)前文件, 同時關(guān)閉其他所有打開的窗口.
    該映射保證該文件是除項目窗口以外其他唯一的窗口.
           <LocalLeader>o 主要是為那些不能識別 <C-Return> 的終端而提供的.

<M-Return>
\v
    同 <Return> 僅僅顯示文件內(nèi)容, 而光標(biāo)依然停留在項目窗口中.

<2-LeftMouse>
    (Double-click) 雙擊鼠標(biāo)左鍵, 如果當(dāng)前光標(biāo)下是一個已經(jīng)展開的折疊則關(guān)閉
    該折疊, 反之打開該折疊. 如果當(dāng)前光標(biāo)下為一個文件名, 則在|CTRL-W_p|(前
    一窗口)或項目右側(cè)新窗口中打開該文件.

<S-2-LeftMouse>
    同 <S-Return>.

<C-2-LeftMouse>
    同 <C-Return>.

<RightMouse>
    根據(jù)變量的值 g:proj_window_increment 增加項目窗口的寬度, 反復(fù)點(diǎn)擊則為
    在原寬度
            g:proj_window_width
    和增加后的寬度
            g:proj_window_width + g:proj_window_increment
    之間切換.

    是否能夠切換原窗口和寬窗口, 或手動改變窗口寬度均取決于全局變量
    g:proj_flags 中的標(biāo)志位 't' 是否設(shè)置. (參見|project-flags|).

    注意在其他窗口中單擊鼠標(biāo)時右鍵并不能自動將光標(biāo)定位到項目窗口.
    在離開項目窗口后, 項目窗口寬度會變回到原寬度 g:proj_window_width.

<space> 同 <RightMouse>

<CTRL-Up>
\<Up>
    移動文本或者折疊到當(dāng)前光標(biāo)的上一行. 在有的終端中可能無法識別此綁定而失效.
    <LocalLeader><Up> 主要是為那些不能識別 <C-Up> 的終端而提供的.

<CTRL-Down>
\<Down>
    移動文本或者折疊到當(dāng)前光標(biāo)的下一行. 在有的終端中可能無法識別此綁定而失效.
    <LocalLeader><Down> 主要是為那些不能識別 <C-Down>.

\i    在狀態(tài)欄中顯示光標(biāo)所在折疊完全解析和繼承的參數(shù). 
    這是專門為手動進(jìn)入項目時進(jìn)行相對路徑和繼承參數(shù)的調(diào)試而映射的.

\I    在狀態(tài)欄顯示光標(biāo)下文件名的全名(含路徑). 此功能是插件調(diào)用
    Project_GetFname(line('.'))函數(shù)來實(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í)行命令入口的編號, 命令只針
    對當(dāng)前項目層的文件. 參考下文中的|project-settings|.

\F1-\F9
    執(zhí)行 g:proj_run_fold{x} 中指定的命令, {x} 是執(zhí)行命令入口的編號. 對當(dāng)前
    項目層及其所有子項目的所有文件執(zhí)行命令. 參考下文中的 |project-settings|

\0    顯示由 \1 到 \9 定義的命令.

\f0    顯示由 \f1 到 \f9 和 \F1 到 \F9 所定義的命令. \F0 作用與此相同.

\l    加載當(dāng)前項目中的所有文件到 Vim 中, 在加載過程中按任何鍵可以停止加載.

\L    加載當(dāng)前項目及其子項目中的所有文件到 Vim 中. 請謹(jǐn)慎使用這個映射, 作者并
        不建議在項目中含有成千上萬的文件時使用該映射. (順便提一句, 我的項目中有
    5,300 多個文件!) 在加載過程中按任何鍵可以停止加載.

\w    刪除當(dāng)前項目層次中的所有文件. (并非真正刪除文件, 只針對該項目組織而言.
    如果文件被修改, 會先保存文件.) 擦除過程中按任意鍵可以停止此操作.

\W    刪除當(dāng)前項目層及其子層次中的所有文件. (并非真正刪除文件, 只針對該項目組
    織而言.    如果文件被修改, 會先保存文件.) 擦除過程中按任意鍵可以停止此操作.

\g    搜索當(dāng)前項目層所有文件.

\G    搜索項目所有層所有文件.

\e    為先通過 <Return> 選擇的項目文件設(shè)置環(huán)境變量. 例如在 \e 設(shè)定環(huán)境變量后,
    無需打開項目中的任何文件便可用 :make 來進(jìn)行編譯.

\E    使用 |file-explorer| 瀏覽光標(biāo)處目錄內(nèi)的文件. 不支持 netrw 時的項目管理.

<F12>    當(dāng)在變量 g:proj_flags (參考 |project-flags|)中使用了標(biāo)志位 'g' 時, 該鍵
        用來切換打開和關(guān)閉項目窗口. 可以在 vimrc 中進(jìn)行重新綁定. 例如將其映射到
        <Leader>P:

        nmap <silent> <Leader>P <Plug>ToggleProject

注意由于使用 :help 時幫助窗口跟項目窗口有所沖突, 該插件通過重新映射 :help避免了
這個問題(在使用時你可能無法感覺出來).

==============================================================================
ADDING MAPPINGS                      *project-adding-mappings*
添加映射

也可單獨(dú)在 $HOME/.vimproject_mappings 文件中設(shè)置自己需要的映射. 如果這個文件存
在, 插件每次啟動時候會執(zhí)行(source)它. 下例中定義了統(tǒng)計項目中入口數(shù)量功能的映射
當(dāng)按下 \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 中實(shí)現(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>
<
(注意我進(jìn)入文件所在目錄后才可以使用 $P4CONFIG 文件. 請參考關(guān)于 perforce 的文檔.)

這就建立了使用映射 \pe 來檢查用于編輯的文件, 用 \pa 來將文件存儲.


下例中為 <Return> 在打開某種特定文件時映射到一個外部程序來. (該例中它調(diào)
用 ee 來瀏覽jpg文件). 盡管看起來有些刻意, 但它還是有點(diǎn)用的.
>
    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 會在加載插件前先使用這些屬性從而不按照插
件的默認(rèn)屬性進(jìn)行加載.

g:proj_window_width
    插件項目窗口寬度.    默認(rèn)值: 24

    盡管插件不能完全成功地按照我預(yù)想的方式設(shè)定窗口的大小,但是這個變量在
    設(shè)定窗口大小時還是會起到很大的作用.

g:proj_window_increment
    當(dāng)按空格鍵 <space> 或者單擊鼠標(biāo)左鍵 <LeftMouse >時項目窗口寬度增加量
    默認(rèn)值: 100 (參見 |project-mappings|)

                                   *project-flags*
g:proj_flags
    默認(rèn)值: "imst"
    這些標(biāo)志位可以用來控制插件的行為, 具體如下:

       標(biāo)志位    描述 ~

    b    設(shè)置后將使用 |browse()| 通過瀏覽目錄來為 \c 和 \C 設(shè)定目錄.
        默認(rèn)關(guān)閉, 因為窗口瀏覽器本身不允許進(jì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è)置后, 當(dāng)選擇打開一個文件時會在命令行顯示文件名和當(dāng)前工作路徑.

    l    設(shè)置后, 項目插件在選擇一個要打開的文件時,使用命令 |:lcd| 替換默
        認(rèn)的 |:cd| 命令去改變目錄. 在有了下面的 L 標(biāo)志位后, 此標(biāo)志已經(jīng)
        用處不大.

    L    與標(biāo)志位 l 很相似. 不管緩沖是否被使用, 它通過安裝一個進(jìn)入/離開
        緩沖的自動命令|:autocommand| 來確保當(dāng)前工作目錄更改到 CD 參數(shù)
        指定的目錄.(|:lcd| 命令只能為窗口而不能為緩沖改變當(dāng)前工作目錄)

    m    在常規(guī)模式下開啟 |CTRL-W_o| 和 |CTRL-W_CTRL_O| 映射, 使得當(dāng)前
        緩沖區(qū)成為唯一可見的緩沖區(qū), 但是項目窗口仍然可見.

    n    設(shè)置后將在項目窗口中顯示行號.

    s    設(shè)置后將在項目窗口中使用語法高亮.

    S    設(shè)置后將在更新和創(chuàng)建項目時啟用排序.

    t    設(shè)置后將在按空格 <space> 或鼠標(biāo)右擊 <RightMouse> 時候進(jìn)行原窗口
        和加寬窗口之間的切換. 參見 See the entry for  in |project-mappings|.

    T    設(shè)置后,    子項目的折疊在更新時會緊跟在當(dāng)前折疊下方顯示(而不是其底
        部).

    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è)置, 在當(dāng)前光標(biāo)下按下 \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)多個文件名有兩種處理方式:

        第一種(默認(rèn)的)處理方式使用 %f 替換所有的絕對文件名, 讓命令只執(zhí)
        行一次;    第二種是讓命令針對每個非絕對文件名執(zhí)行一次, %f 每次只
        替換一個文件名. 使用第二種方式時, 須在變量 g:proj_run_fold{x}
        的開頭加上一個通配符 '*' (通配符 '*' 在運(yùn)行時將被自動去掉.)

        例如, 注意以下兩種方式的差異: >
         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" {
    }
<
    然后將光標(biāo)定位在折疊上按 \r, 腳本會自動添加對應(yīng)目錄下所有 C 文件(本例中)
    到項目之中. 這與 \c 是等效的, 只是沒有對話框顯示.

2.  可以在項目列表里隨時添加,刪除或排序項目文件.

3.  當(dāng)項目窗口沒有打開時, 輸入 >
    :Project
<   可以將其打開. (插件有自動記憶功能, 而無需輸入具體的項目名稱.) 如果在
    g:proj_flags 變量中設(shè)定了 'm' 標(biāo)志位, 通過組合鍵 |CTRL-W_o| 可以重新打開
    項目窗口. 毫無疑問, 這會關(guān)閉除當(dāng)前窗口之外的其他所有打開的窗口.

4.  往項目中添加新的文件. 例如添加 'more.c' 到項目中去, 只需在項目入口之中插
    入文件名后按 <Return> 鍵即可.

5.  當(dāng)使用 |quickfix| 時候, 在文件名上按回車鍵 <Return> 并不會有效, 這樣的話,
    將無法更改目錄, 運(yùn)行腳本. 解決辦法是在使用 |quickfix| 前用 \L 將所有文件
    載入到項目中去.

6.  當(dāng)項目窗口因為或開或閉的折疊顯得凌亂時, 使用 |zM| 可以關(guān)閉所有的展開折疊,
    讓項目窗口重新變得整潔如初.

7.  對于高級用戶, 可以嘗試插件提供如下幾個函數(shù):
    Project_GetAllFnames()
    返回一個折疊及其子項目(可選)下的所有文件名. 
    Project_ForEach()
    在為項目中的每個文件提供一個調(diào)用函數(shù)的接口.如何使用請參考上面的例子以
    及源代碼.
    Project_GetFname(line_number)
    在編寫自己的映射時用來獲取文件名.

8.  將光標(biāo)定位到項目插件窗口的鍵映射, 在 vimrc 文件中添加:
>
        nmap <silent> <Leader>P :Project<CR>
<
9.  項目入口中使用符號"."會調(diào)出|file-explorer|插件. 為了防止在更新時候刪除,
    在項目入口中加入:
>
     . # pragma keep
<
==============================================================================
致謝

    感謝下列朋友為我在此插件開發(fā)過程中提供一些補(bǔ)丁:

        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 閱讀(7858) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美在线在线| 国产精品xxxav免费视频| 久久福利视频导航| 久久国产精品亚洲77777| 国产精品s色| 中文av一区二区| 亚洲欧美日本伦理| 亚洲福利在线观看| 久久国产精品色婷婷| 久久久天天操| 欧美在线观看一二区| 一区在线视频| 国产美女诱惑一区二区| 亚洲一区一卡| 亚洲日本aⅴ片在线观看香蕉| 欧美日韩三级在线| 亚洲午夜精品久久| 国产一区二区三区黄| 亚洲第一精品福利| 蜜桃久久av| 久久综合中文色婷婷| 欧美刺激性大交免费视频| 欧美一区1区三区3区公司| 亚洲国产精品尤物yw在线观看 | 精品91在线| 在线视频精品一区| 欧美成人精品激情在线观看| 久久蜜桃精品| 久久久国产亚洲精品| 亚洲午夜伦理| 久久综合中文| 欧美一区二区三区免费视| 国产精品99久久久久久www| 一本一本a久久| 免费成人性网站| 亚洲日韩欧美视频| 亚洲天堂男人| 久久午夜激情| 久久亚洲春色中文字幕| 久久香蕉国产线看观看av| 日韩视频在线观看| 亚洲午夜一区二区三区| 亚洲一区二区成人| 欧美在线观看视频一区二区| 性做久久久久久久免费看| 裸体歌舞表演一区二区| 欧美日韩影院| 亚洲国产精品一区二区三区| 亚洲第一精品夜夜躁人人爽| 久久精品国产成人| 久久亚洲精品一区| 蜜桃视频一区| 一区二区欧美国产| 另类尿喷潮videofree| 国产一区亚洲| 欧美中文字幕精品| 亚洲国产精品一区二区www在线 | 亚洲作爱视频| 国内精品久久久久影院优| 国产精品二区三区四区| 国产精品制服诱惑| 精品动漫3d一区二区三区| 亚洲美女网站| 久久视频在线看| 999在线观看精品免费不卡网站| 亚洲激情精品| 亚洲性图久久| 亚洲男人的天堂在线观看| 欧美激情a∨在线视频播放| 伊人精品久久久久7777| 久久av一区二区三区| 欧美中文字幕视频| 欧美黑人国产人伦爽爽爽| 国产日韩精品在线播放| 欧美在线观看你懂的| 欧美激情va永久在线播放| 欧美一区二区三区在线视频 | 亚洲国产欧美不卡在线观看| 亚洲欧美经典视频| 亚洲欧美日韩国产综合精品二区| 亚洲一二三四区| 免费观看日韩| 欧美性猛交xxxx乱大交蜜桃| 99亚洲视频| 亚洲午夜成aⅴ人片| 国产精品日韩久久久| 亚洲二区免费| 国产精品乱码| 亚洲性av在线| 欧美日本不卡| 久久久青草婷婷精品综合日韩| 久久亚洲色图| 久久久成人网| 中文网丁香综合网| 一本色道久久88综合亚洲精品ⅰ| 亚洲线精品一区二区三区八戒| 欧美jizz19hd性欧美| 欧美劲爆第一页| 中文精品在线| 欧美激情欧美狂野欧美精品| 老牛影视一区二区三区| 久久电影一区| 亚洲视频导航| 欧美精品啪啪| 国产精品99久久久久久久久| 亚洲精品国产视频| 久久久久久网址| 久久久国产精彩视频美女艺术照福利 | 欧美bbbxxxxx| 亚洲一区二区高清| 久久精品日韩欧美| 国产精品久久久久999| 美女成人午夜| 伊人久久综合| 久久久91精品国产一区二区精品| 欧美大片第1页| 欧美高潮视频| 一本久道久久综合中文字幕| 欧美成人精精品一区二区频| 久久精品亚洲精品| 欧美一二三区精品| 欧美成人黄色小视频| 亚洲成人在线网| 欧美日韩国产黄| 久久三级视频| 亚洲欧美一区二区三区久久| 欧美暴力喷水在线| 亚洲精品1区2区| 永久久久久久| 农夫在线精品视频免费观看| 久久九九热免费视频| 欧美日韩亚洲国产一区| 亚洲欧洲精品一区二区三区波多野1战4 | 久久综合给合| 欧美一级久久| 欧美高清视频在线| 艳女tv在线观看国产一区| 尤物yw午夜国产精品视频明星| 韩国精品久久久999| 亚洲欧美日韩国产综合精品二区| 欧美午夜在线| 亚洲一区久久久| 在线观看成人av| 久热re这里精品视频在线6| 欧美在线日韩在线| 亚洲成色www8888| 国产精品一级久久久| 欧美日本中文| 国产精品福利在线| 亚洲一本大道在线| 麻豆av一区二区三区| 欧美一区二区三区免费视频| 欧美日韩mp4| 亚洲日韩中文字幕在线播放| 一本色道久久综合亚洲精品按摩 | 亚洲欧美日韩天堂一区二区| 免费成人av| 欧美日韩伦理在线| 亚洲伊人观看| 久久av一区二区三区| 一区二区三区黄色| 欧美精品日日鲁夜夜添| 日韩网站在线观看| 亚洲欧美国产一区二区三区| 国产精品第三页| 亚洲天堂成人| 欧美sm视频| 一区二区三区免费看| 欧美成人中文| 欧美a级大片| 亚洲激情综合| 亚洲二区精品| 久久久久久香蕉网| 欧美综合国产| 国产精品欧美日韩| 亚洲在线网站| 午夜日韩在线| 国产精品综合网站| 亚洲免费福利视频| 一区二区三区你懂的| 欧美亚洲免费电影| 免费视频一区二区三区在线观看| 亚洲福利专区| 国产精品视频成人| 卡通动漫国产精品| 亚洲欧美日韩在线播放| 久久国产毛片| 国产精品99久久久久久久久久久久| 亚洲精品黄网在线观看| 亚洲一区二区不卡免费| 久久久噜噜噜久久久| 亚洲国产精品久久久久| 国产情侣久久| 久久夜色精品国产亚洲aⅴ| 老司机一区二区三区| 国产人成精品一区二区三| 久久综合伊人77777尤物| 亚洲免费av网站| 欧美在线视频在线播放完整版免费观看 | 午夜精品福利视频|