2014-06-29 6 views
6

Wenn ag mit auf der Kommandozeile, etwa so:Vim Ctrlp nicht Parsen Ag (Silber Suche) --ignore Option korrekt

$> ag . --ignore="*node_modules/*/node_modules" -l --nocolor -f -U -g ""

Ich bin in der Lage irgendwelche node_modules Verzeichnisse zu vermeiden Suche durch mehr als eine Ebene tief in meinem Knoten Dienste, was das gewünschte Verhalten ist.

Allerdings, wenn ich die folgenden in meinem vimrc verwenden, werden die node_modules Verzeichnisse mehr als eine Ebene tief nicht außer Acht gelassen:

" Use The Silver Searcher https://github.com/ggreer/the_silver_searcher 
if executable('ag') 
    " Use Ag over Grep 
    set grepprg=ag\ --nogroup\ --nocolor 

    " Use ag in CtrlP for listing files. Lightning fast and respects .gitignore 
    let g:ctrlp_user_command = 'ag %s --ignore="*node_modules/*/node_modules" -l --nocolor -f -U -g ""' 
endif 

Wie ich ag einrichten und ctrlp richtig diese Verzeichnisse zu ignorieren? Nicht sicher, ob ich eine andere Syntax (wie Regex) oder ein anderes Gotcha beim Umpflanzen zu vimrc verwenden muss.

Der Grund, warum ich das nicht in der wildignore setzen ist, dass node_modules in meinem .gitignore ignoriert werden, so dass ich mit der -U Option, um alle VCS-Dateien zu ignorieren (und damit ag ermöglicht node_modules suchen) - aber die Option scheint auch den Wildignore zu umgehen.

+0

Oh! Die Freuden der geschichteten Abstraktionen! – romainl

+0

Dies ist das erste Mal, dass ich eine Antwort in einer Frage gefunden habe;) Ich habe den '--ignore' Teil wegen' .agignore' entfernt. Ich entfernte "-U", so dass ag immer noch ".gitignore" verwenden würde. Und ich habe bemerkt, dass ag versteckte Dateien standardmäßig ignoriert. – Rohmer

+0

Ich habe diese Seite hier verwiesen: https://github.com/kien/ctrlp.vim/issues/174 – Rohmer

Antwort

6

Wie du mir beiden Tools verwenden, aber die Art, wie ich Ordner ignorieren unterscheidet

Für Ag Ich verwende die .agignore Datei, hat es die gleiche sintax wie .gitignore und wie es, kann es gehen in Ihr Privatordner oder Projektordner.

nicht sicher, ob das Ihr Problem mit Ctrlp lösen, in jedem Fall ist es ziemlich schnell für mich schon so verwende ich die normale Variable wie diese ignorieren:

let g:ctrlp_custom_ignore = { 
    \ 'dir': '\v[\/](doc|tmp|node_modules)', 
    \ 'file': '\v\.(exe|so|dll)$', 
    \ } 
+1

Ag [jetzt empfiehlt] (https://github.com/ggreer/the_silver_searcher/commit/dd8e8396efc6f6be6ef3a730e700d6ef8da1d813) Benennung die Datei '.ignore' statt' .agignore'. Dadurch können andere Tools wie ['ripgrep'] (https://github.com/BurntSushi/ripgrep) dieselben Dateien ignorieren. –