2014-06-29 13 views
6

Quando si utilizza ag sulla riga di comando, in questo modo:Vim Ctrlp non parsing Ag (ricerca argento) --ignore opzione correttamente

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

io sono in grado di evitare la ricerca attraverso tutte le directory node_modules più di uno livello profondo nei miei servizi di nodo, che è il comportamento desiderato.

Tuttavia, quando uso il seguente nel mio vimrc, i node_modules directory più di un livello di profondità non vengono ignorati:

" 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 

Come posso configurare ag e ctrlp di ignorare correttamente queste directory? Non sono sicuro se ho bisogno di usare una sintassi diversa (come la regex) o qualche altro trucco durante il trapianto su vimrc.

La ragione per cui non sto mettendo questo nel wildignore è che node_modules vengono ignorati nel mio .gitignore, quindi sto utilizzando l'opzione -U di ignorare qualsiasi file VCS (consentendo in tal modo a ag node_modules cercare) - ma questo l'opzione sembra anche bypassare il wildignore.

+0

Oh! Le gioie delle astrazioni stratificate! – romainl

+0

Questo segna la prima volta che ho trovato una risposta all'interno di una domanda;) Ho rimosso la parte '--ignore' a causa di' .agignore'. Ho rimosso '-U' in modo che ag usasse ancora' .gitignore'. E ho notato che ag ignora i file nascosti di default. – Rohmer

+0

Ho fatto riferimento a questa pagina qui: https://github.com/kien/ctrlp.vim/issues/174 – Rohmer

risposta

6

Come te lo faccio usare entrambi gli strumenti, ma il modo in cui ignoro le cartelle è diverso

Per Ag Io uso il file .agignore, ha la stessa sintassi come .gitignore e proprio come esso, si può andare in la tua cartella principale o la cartella del progetto.

Non sono sicuro se che risolverà il tuo problema con Ctrlp, in ogni caso è abbastanza veloce già per me così io uso normale ignorare variabile in questo modo:

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

Ag [ora consiglia] (https://github.com/ggreer/the_silver_searcher/commit/dd8e8396efc6f6be6ef3a730e700d6ef8da1d813) denominazione il file '.ignore' piuttosto che' .agignore'. Ciò consente altri strumenti come ['ripgrep'] (https://github.com/BurntSushi/ripgrep) per ignorare gli stessi file. –