2009-12-14 4 views
19

Dans vim, je fais fréquemment des recherches avec vimgrep. J'ai cartographie comme ci-dessous:Comment exclure des modèles de fichiers dans vimgrep?

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

Le problème est qu'il ya des sous-dossiers temporaires (comme obj, objd) que je ne veux pas chercher. Comment puis-je exclure les sous-dossiers correspondant à des motifs donnés? Par exemple, les sous-dossiers avec le préfixe "objd" ne doivent pas être inclus dans la recherche.

+0

Je n'ai pas trouvé d'options connexes pour vimgrep. Maintenant, j'utilise grep à la place. –

+0

Vous pouvez utiliser grep au lieu de vimgrep. [Ici] (http://amix.dk/blog/post/175) explique comment utiliser avec le script appelé MyGrep –

Répondre

13

Vous pouvez essayer ack à la place. Il s'intègre bien avec vim et a beaucoup d'options pour faire le genre de chose que vous voulez faire.

Il existe plusieurs intégrations ack-vim sur GitHub. Par exemple: here et here.

+1

+1: 'ack' est brillant. Merci pour les liens 'ack'-' vim'. – Johnsyweb

+0

Le deuxième référentiel github n'est plus disponible. –

2

Par exemple dans Ubuntu juste

sudo apt-get install ack-grep 

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

puis installez http://www.vim.org/scripts/script.php?script_id=2572

et maintenant ajouter la ligne suivante à votre .vimrc

noremap <C-f> :copen<CR>:Ack --ignore-dir #first_ignore_dir# --ignore-dir #second_ignore_dir# -ai 
  • son cadre de recherche ouverte par Ctr + F, amusez-vous
22

A partir de Vim 7.3.570, vous pouvez utiliser wildignore pour exclure les patterns avec vimgrep.

Par exemple, pour ignorer le sous-dossier objd:

:set wildignore+=objd/** 

exclusions supplémentaires peuvent être ajoutées en séparant les modèles par une virgule:

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

Voir la documentation d'aide Vim pour quelques détails.

:help wildignore 
Questions connexes