Comment pouvez-vous lister les matchs de la recherche de Vim?

Je voudrais lister les matchs quand je frappe:

/example 

de sorte que je vois où tous les matches sont à la fois.

  " put in your ~/.vimrc file " START search related configs and helps " " ignore case when searching set ignorecase " search as characters are entered, as you type in more characters, the search is refined set incsearch " highlight matches, in normal mode try typing * or even g* when cursor on ssortingng set hlsearch " yank those cheat commands, in normal mode type q: than p to paste in the opened cmdline " how-to search for a ssortingng recursively " :grep! "\" . -r " " how-to search recursively , omit log and git files " :vimgrep /srch/ `find . -type f \| grep -v .git \| grep -v .log` " :vimgrep /srch/ `find . -type f -name '*.pm' -o -name '*.pl'` " " how-to search for the "srch" from the current dir recursively in the shell " vim -c ':vimgrep /srch/ `find . -type f \| grep -v .git \| grep -v .log`' " " how-to highlight the after the search the searchable ssortingng " in normmal mode press g* when the cursor is on a matched ssortingng " how-to jump between the search matches - open the quick fix window by " :copen 22 " how-to to close the quick fix window " :ccl " F5 will find the next occurrence after vimgrep map  :cp! " F6 will find the previous occurrence after vimgrep map  :cn! " F8 search for word under the cursor recursively , :copen , to close -> :ccl nnoremap  :grep! "\<\>" . -r:copen 33 " omit a dir from all searches to perform globally set wildignore+=**/node_modules/** " use perl regexes - src: http://andrewradev.com/2011/05/08/vim-regexes/ noremap / /\v " " STOP search related configs and helps 
 :g//p 

Dans sa forme la plus longue:

 :global/regular-expression/print 

Vous pouvez laisser de côté le motif / regex et Vim réutilisera le terme de recherche précédent.

Trivia: L’outil grep a été nommé d’après cette séquence de commandes.

Vous pouvez aussi faire un:

g/pattern/#

cela imprimera le motif que vous voulez et le numéro de la ligne.

Si vous voulez regarder cette liste et passer rapidement d’un match à l’autre, pensez à utiliser

:vimgrep example %

ou

:grep example %

Cela remplira la “liste des erreurs” avec toutes les correspondances afin que vous puissiez utiliser :copen pour les lister toutes dans le buffer de quickfix, appuyez sur enter sur une ligne particulière pour accéder à cette correspondance ou utilisez des commandes comme :cn et :cp aller et venir

pour une explication approfondie, voir ma réponse à une question similaire

Juste appris un nouveau: la Location List !
Tapez :lvim foo % pour rechercher foo dans le fichier actuel et entrez toutes les correspondances contenant foo dans la liste des emplacements .
Tapez :lopen pour ouvrir la liste des emplacements dans la fenêtre de correction rapide, qui est entièrement navigable comme d’habitude.
Utiliser :lnext / :lprevious la liste (utilisez les mappages tpope / unimpaired pour la meilleure expérience)

Une autre possibilité consiste à utiliser les commandes de recherche de fichiers include.

 [I 

Cela listera toutes les occurrences du mot sous le curseur. Cela peut être plus que ce dont vous avez besoin, car il recherchera également tous les fichiers inclus dans le fichier en cours.

Mais la bonne chose à propos de cette commande est que l’affichage des résultats de la recherche indique également le nombre de correspondances, en plus du numéro de ligne de chaque correspondance.

 :help include-search 

pour voir beaucoup de variantes.

Une note sur

 :g//p 

Cela peut être réduit davantage à

 :g// 

car, comme d’autres l’ont dit, p (rint) est l’action par défaut.

En utilisant :set hlsearch , vous :set hlsearch en évidence toutes les correspondances en jaune, ce qui vous permettra de numériser facilement le fichier pour les correspondances. Cela peut ne pas être ce que vous voulez bien, après la recherche: g // p vous donnera les correspondances listées

Pour élaborer là-dessus … au lieu de

 /example :g//p 

vous pouvez aussi écrire directement

 :g/example/p 

ou, comme p (rint) est l’action par défaut pour la commande: g (lobal), cela peut être réduit à

 :g/example 

Et au lieu de p (rint), d’autres actions sont possibles, par exemple d (elete). Voir: aide: global

vous pouvez obtenir une belle fenêtre de quickfix avec les correspondances de votre modèle de recherche actuel

 :vim // % :copen 

super pratique si vous avez déjà créé un motif de recherche complexe en utilisant just /pattern

Edit : vient de découvrir que cela fonctionne aussi pour tous les tampons ouverts

 :bufdo vimgrepadd // % :copen 
 g/pattern 

Si vous avez :set number , la commande ci-dessus affiche également les numéros de ligne.

Si vous ne l’avez pas encore fait :set number

 g/pattern/# 

affichera les numéros de ligne.

Ctrl-f pour lister tous les résultats de la recherche:

 nmap  :vimgrep ///g % \| !:copen