2014-11-01 2 views
8

Für meine Repo, nehme an, es topCtrlP: Ignoriere Dateien im Unterverzeichnis innerhalb eines git Repo

top\ 
    .gitignore 
    foo\ 
    bar\ 

Ich möchte CtrlP Dateien zur Liste aufgerufen wird, die

  1. Unter foo\
  2. sind nicht ignoriert von .gitignore definiert in oben \

Wenn ich cd in top\foo\ und offene vim von dort, 1 zufrieden sein würde, aber nicht 2.
Wenn ich vim öffnen auf top\ würde 2 zufrieden sein, aber nicht 1.

Wie erreiche ich beide 1 und 2?

Ich versuchte this gitignore vim script, aber es analysiert nur gitignore, wenn ich vim im Stammordner eines Repo öffnen, so kann ich nicht beide 1 und 2 zusammen tun.
Das gleiche für let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""', ag versucht nicht, bis zum Repo-Stamm zu gehen und Gitignore von dort zu lesen.
Einstellung g:ctrlp_working_path_mode als r lassen Sie CtrlP .gitignore im obersten Ordner ehrt, aber alles unter top\ würde durch CtrlP aufgelistet werden. Ich möchte nur Dateien in foo\.

Danke.

+0

Was ist mit 'CtrlP foo'? – romainl

+0

@romainl Dies funktioniert, aber ich müsste eingeben: CtrlP foo jedes Mal. Wenn foo tief unter der Projektwurzel ist, ist es sehr schwer zu benutzen. – octref

+0

können Sie das vim-Skript nicht ändern, um rekursiv nach .gitgnore in übergeordneten Verzeichnissen zu suchen? – kamaradclimber

Antwort

10

Von its home page sieht es aus wie Sie

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

verwenden können, was den Vorteil ehren alle Gits ignorieren-Muster Verarbeitung haben wird, nicht nur die Top-Level-positive .gitiginore Muster.

1

scheint es keine offensichtliche Art und Weise ist, es zu tun, so folgte ich nur @kamaradclimber ‚s Vorschlag, verbrachte eine Stunde und machte dies: RootIgnore
nie in VimScript codiert vor so :-)

einige Zeit es hat mich

Sie können es mit Vundle installieren.
Es sucht rekursiv nach .git dir, ruft die .gitignore im selben Verzeichnis wie die .git dir, und setzt wildignore entsprechend.

Update:
@ Jthill Methode funktioniert besser als meins.
Aber CtrlP hat benutzerdefinierte Suchbefehle während CommandT nicht. So kann mein Plugin für CommandT-Benutzer immer noch nützlich sein.