2014-11-01 89 views
8

對於我的回購中忽略子目錄中的文件,假設它被稱爲topCtrlP:一個git回購

top\ 
    .gitignore 
    foo\ 
    bar\ 

我想CtrlP要列出

  1. foo\
  2. 也是不可忽視的文件由.gitignore定義top \

如果我cd到top\foo\,並從那裏打開VIM,1會滿意,但並不2.
如果我打開VIM上top\,2會滿意,但不是1

如何實現這兩個1和2?

我試過this gitignore vim script,但是它只解析gitignore當我在repo的根文件夾中打開vim時,所以我不能同時執行1和2。
let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""',0 ag相同,不會嘗試去回購根目錄並從那裏讀取gitignore。
設置g:ctrlp_working_path_moder讓CtrlP在頂層文件夾中承認.gitignore,但在top\之下的所有內容都將由CtrlP列出。我只想要foo\中的文件。

謝謝。

+0

'CtrlP foo'怎麼辦? – romainl 2014-11-01 21:26:15

+0

@romainl這個工程,但我必須輸入:CtrlP foo每次。如果foo遠低於項目根目錄,那麼它很難使用。 – octref 2014-11-02 02:02:15

+0

你不能修改vim腳本來遞歸搜索父目錄中的.gitgnore嗎? – kamaradclimber 2014-11-02 09:17:08

回答

10

its home page它看起來像你可以使用

let g:ctrlp_user_command = [ 
    \ '.git', 'cd %s && git ls-files . -co --exclude-standard', 
    \ 'find %s -type f' 
    \ ] 

這將有紀念所有的git的忽略模式處理的,不只是頂層積極.gitiginore模式的優勢。

1

似乎沒有明顯的方式做到這一點,所以我只是跟着@kamaradclimber的建議下,花了一個小時,使這個:RootIgnore
Vimscript中從來沒有編碼之前,所以我花了一些時間:-)

您可以使用Vundle進行安裝。
遞歸搜索.git目錄,獲取.gitignore.git目錄相同的目錄,並相應地設置wildignore

更新:
@ jthill的方法比我的更好。
但CtrlP有自定義搜索命令,而CommandT沒有。所以我的插件對CommandT用戶仍然有用。