57 votes

Comment passer d'un motif à l'autre en utilisant :vimgrep (liste de corrections rapides) ?

Je suis nouveau dans le monde de vim, et j'explore encore certaines de ses fonctionnalités. J'ai un problème avec vimgrep. Je peux rechercher un motif comme ceci vimgrep /define/ ** de sorte qu'il trouve et ouvre le prochain fichier qui contient une define . Mais je n'ai pas encore trouvé comment passer au fichier/ligne suivant qui correspond à mon modèle. Des pistes ?

90voto

Benoit Points 35553

Commandes utiles pour la liste des corrections rapides (parenthèses autour de la partie omettable des commandes) :

  • :cn[ext] y :cp[revious] passer à l'entrée suivante et précédente
  • :cnf[ile] y :cpf[ile] passer au fichier suivant et précédent (si la liste des corrections rapides n'est pas triée par fichier, vous pourriez écrire une fonction qui getqflist() effectue un tri et ensuite setqflist()
  • :cr[ewind] y :cla[st] aller au début ou à la fin de la liste des corrections rapides
  • :col[der] y :cnew[er] va itérer à travers les listes historiques de corrections rapides.

Il va sans dire qu'il existe de nombreuses autres commandes et que vous pouvez les découvrir à l'adresse suivante :help quickfix .

Personnellement, je possède les cartes suivantes :

      | ø      | SHIFT   | CTRL
------+--------+---------+---------
<F11> | :cprev | :cpfile | :colder
<F12> | :cnext | :cnfile | :cnewer

Bien sûr, si vous utilisez la liste de localisation au lieu de la liste de correction rapide ( :lvimgrep ) les mêmes commandes existent, il suffit de remplacer l'initiale c avec un l et c'est tout.

Ajouts à Vim 8 :

  • :cdo : exécuter une commande sur toutes les entrées de la liste des corrections rapides. Par exemple
    :vim /foo/ *.cpp *.h *.hpp peut être suivi par
    :cdo s/pattern/replacement/g
  • :cfdo : exécuter une commande sur tous les fichiers de la liste de Quickfix. Par exemple,
    :vim /foo/ *.cpp *.h *.hpp peut être suivi par
    :cfdo %s/2ndpattern/2ndreplacement/g

10voto

Randy Morris Points 16975

Pour passer à l'occurrence suivante du mot, vous pouvez utiliser la commande suivante :cnext . Vous pouvez faire marche arrière avec :cNext .

Je ne suis pas sûr qu'il existe un moyen de sauter automatiquement toutes les occurrences jusqu'au prochain fichier, mais vous pourriez ouvrir la fenêtre de correction rapide avec :cwindow pour voir une liste de correspondances et naviguer vers ces correspondances en appuyant sur Enter sur l'entrée de la liste.

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