web-dev-qa-db-fra.com

Comment recherchez-vous tous les code source dans Vim?

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.)

42
Brian M. Hunt
: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 .

41
Mykola Golubyev

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
7
soulmerge

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:

http://vim.wikia.com/wiki/find_in_files_within_vim

6
Herbert Sitz

Définissez grepprg to ACK , puis utilisez :grep Pour chercher avec ACK.

Ou utiliser des CTAGS.

4
George V. Reilly

Ag est une bonne option pour rechercher le modèle récursivement.

https://github.com/rking/ag.vim

3
Tmx

Vous pouvez utiliser : vimgrep I.E.:

  : vimgrep/motif/**/*. py 

Vérifiez ce conseil Vim:

Donnez également un coup d'oeil à grep.vim , c'est un plugin qui intègre les outils Grep, FGREP, EGREP et AGREP avec VIM et vous permet de rechercher un motif dans un ou plusieurs fichiers et sautez-leur. ...

2
CMS

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.

1
Brian Agnew