2009-12-14 4 views
19

In vim, cerco spesso con vimgrep. Ho mappatura come di seguito:Come escludere i pattern di file in vimgrep?

map <leader>s :execute "noautocmd vimgrep /\\<" . expand("<cword>") . "\\>/gj **/*.*" <Bar> 
cw<CR> 5 

Il problema è che ci sono alcune sottocartelle temporanee (come obj, objd) che io non voglio cercare. Come posso escludere le sottocartelle che corrispondono a determinati pattern. Ad esempio, le sottocartelle con prefisso "objd" non dovrebbero essere incluse nella ricerca.

+0

Non ho trovato alcuna opzione correlata per vimgrep. Ora uso invece grep. –

+0

Potresti usare grep invece vimgrep. [Here] (http://amix.dk/blog/post/175) spiega come usare con lo script chiamato MyGrep –

risposta

13

Si potrebbe provare ack invece. Si integra bene con Vim e ha un sacco di opzioni per fare il tipo di cosa che vuoi fare.

Ci sono diverse integrazioni ack-vim su GitHub. Ad esempio: here e here.

+1

+1: 'ack' è brillante. Grazie per i collegamenti 'ack'-' vim'. – Johnsyweb

+0

Il secondo repository github non è più disponibile. –

2

Per esempio in Ubuntu basta

sudo apt-get install ack-grep 

sudo ln -s /usr/bin/ack-grep /usr/bin/ack 

quindi installare http://www.vim.org/scripts/script.php?script_id=2572

e ora aggiungere la linea accanto al tuo Vimrc

noremap <C-f> :copen<CR>:Ack --ignore-dir #first_ignore_dir# --ignore-dir #second_ignore_dir# -ai 
  • sua struttura aperta ricerca per Ctr + F, buon divertimento
22

A partire da Vim 7.3.570, è possibile utilizzare wildignore per escludere modelli con vimgrep.

Ad esempio, per ignorare la sottocartella objd:

:set wildignore+=objd/** 

Ulteriori esclusioni possono essere aggiunti separando i modelli con una virgola:

:set wildignore+=objd/**,obj/**,*.tmp,test.c 

See Vim documentazione di aiuto per qualche dettaglio in più.

:help wildignore