2014-11-01 7 views
8

Per il mio repo, supponiamo si chiama topCtrlP: ignorare i file in directory all'interno di un repo git

top\ 
    .gitignore 
    foo\ 
    bar\ 

voglio CtrlP alla lista i file che sono

  1. Sotto foo\
  2. non viene ignorato di .gitignore definito in top \

Se cd nella top\foo\, e vim aperto da lì, 1 sarebbe soddisfatto ma non 2.
Se apro vim su top\, 2 sarebbero soddisfatti, ma non 1.

Come faccio a raggiungere entrambi 1 e 2?

Ho provato this gitignore vim script, ma analizza solo gitignore quando apro vim nella cartella radice di un repository, quindi non posso fare entrambi 1 e 2 insieme.
Lo stesso per let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""', ag non tenta di salire alla radice del protocollo e leggere gitignore da lì.
Impostazione come r lasciare CtrlP onora .gitignore nella cartella superiore, ma tutto sotto top\ sarebbe elencato da CtrlP. Voglio solo i file in foo\.

Grazie.

+0

Che dire di 'CtrlP foo'? – romainl

+0

@romainl Funziona ma dovrei digitare: CtrlP foo ogni volta. Se foo è in profondità sotto la root del progetto, allora è molto difficile da usare. – octref

+0

non puoi modificare lo script vim per cercare riccursivamente .gitgnore nelle directory madri? – kamaradclimber

risposta

10

Da its home page sembra che è possibile utilizzare

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

che avrà il vantaggio di onorare tutte trasformazione ignorare-modello di git, non solo i toplevel positivi .gitiginore modelli.

1

sembra che ci sia alcun modo apparente per farlo, quindi ho solo seguito @kamaradclimber 's suggerimento, ha trascorso un'ora e ha reso questo: RootIgnore
Mai codificato in VimScript prima quindi mi c'è voluto un po' di tempo :-)

È possibile installarlo utilizzando Vundle.
Cerca verso l'alto in modo ricorsivo per la directory .git, ottiene lo .gitignore nella stessa dir della directory .git e imposta wildignore di conseguenza.

Aggiornamento:
Il metodo di jthill funziona meglio del mio.
Ma CtrlP ha comandi di ricerca personalizzati mentre CommandT non lo fa. Quindi il mio plugin può ancora essere utile per gli utenti CommandT.