3 votes

Grep pour String et ouvrir à la ligne correspondante

J'ai plusieurs occurrences d'une chaîne spécifique sur plusieurs fichiers dans plusieurs lignes obtenues avec grep .

$ grep -rn --include="*.cpp" mystring
lib/mlib/actionbuttonrule.cpp:300:  mystring Foobar...
lib/mlib/actionbuttonrule.cpp:314:  other mystring
lib/mlib/item.cpp:3025:             /* mystring**/
lib/mlib/item.cpp:3082:             mystring Foobar...
lib/mlib/item.cpp:3095:             Foo mystring bar

J'aimerais ouvrir ces fichiers de manière séquentielle sur les lignes correspondantes. J'ai essayé de le faire avec vim mais jusqu'à présent, aucun succès lorsqu'il s'agit d'ouvrir la ligne. Ça ne doit pas être vim o grep mais je suppose qu'il doit y avoir une sorte de fonctionnalité...

7voto

romainl Points 55506

Vous pouvez charger votre grep dans la liste des corrections rapides de Vim avec :

$ vim -q <(grep -rn --include="*.cpp" mystring)

Passez à l'occurrence suivante avec :cn et à l'occurrence précédente avec :cp .

Ver :help -q y :help quickfix .

1voto

Deleisha Points 11

Voici une autre façon de faire

$ grep -rn --include="*.cpp" mystring > op
$ vim op

Ensuite, utilisez gF et pour revenir au fichier op, utilisez Ctrl + 6

0voto

Max Friederichs Points 393

Une astuce pour utiliser vim comme pager est de lui passer un caractère tiret. Cela lui permet de lire depuis STDIN au lieu de lire depuis un fichier.

grep -rn --include="*.cpp" mystring | vim -

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X