Lorsque vous utilisez VIM, et donné un répertoire rempli de code (par exemple ~/coffre /) avec un certain nombre de sous-répertoires, il y a un moyen de grep/rechercher des instances de texte/regex dans l'ensemble du code source?
Pour le moment j'utilise:
:lcd ~/trunk
:grep "pattern" *.py */*.py */*/*.py */*/*/*.py
(Évidemment, je limite cela à Python fichiers, qui est un problème différent, mais il est remarquable que, idéalement, j'aimerais limiter les recherches aux fichiers avec des extensions spécifiques.)
:vimgrep "pattern" ~/trunk/**/*.py
:copen 20
Si vous avez un grand projet, je vous recommande d'utiliser CSCOPE et plugins VIM . Voici un conçu pour gérer de grands projets: SourceCodedoidience
Il y a une brève description de la façon de Texte du GREP à l'aide SourceCodedoidience .
J'utilise Grep directement pour ça.
grep -IirlZ "pattern" .|xargs -0 vim
-I: ignore binary
-i: ignore case
-r: recursive
-l: print file name only
-Z: print \0 after each file name
Vous voudrez peut-être vérifier :vimgrep
et :grep
Dans la documentation VIM. :vimgrep
utilise la fonctionnalité de recherche de modèle de Vim et lit tous les fichiers dans des tampons de vim. :grep
Par défaut Liens vers une utilité externe grep
sur votre système, mais vous pouvez modifier le comportement en définissant l'option grepprg
. Voici un lien vers les documents en ligne:
http://vimdoc.sourceforge.net/htmldoc/quickfix.html#grep
Il y a plus d'informations à ce sujet et également d'autres options dans la pointe sur "Rechercher dans les fichiers de Vim" au Vim Tips Wiki:
Définissez grepprg
to ACK , puis utilisez :grep
Pour chercher avec ACK.
Ou utiliser des CTAGS.
Ag
est une bonne option pour rechercher le modèle récursivement.
Vous pouvez générer un index de code source en utilisant CTAGS et ensuite VIM peut tilisez-le Pour naviguer de manière transparente via votre base de code. C'est le code source conscient En ce que vous pouvez passer directement aux déclarations de méthode, etc.
Vous devez régénérer les fichiers CTAGS de temps en temps, mais vous pouvez le faire dans le cadre de votre processus de fabrication. Il devrait être assez rapide que si votre base de code est importante.