114 votes

Comment lister les résultats de la recherche de Vim ?

J'aimerais lister les correspondances, quand je frappe :

/example

pour que je puisse voir où se trouvent toutes les correspondances en même temps.

253voto

too much php Points 27983
:g//p

Dans sa forme la plus longue :

:global/regular-expression/print

Vous pouvez omettre le motif/expressions et Vim réutilisera le terme de recherche précédent.

Trivia : Le site grep a été nommé d'après cette séquence de commandes.

21 votes

:g// - Puisque p(rint) est l'action par défaut, vous pouvez aussi le laisser de côté.

9 votes

:g/ est encore plus court !

2 votes

Est-il possible de voir le contexte ici, comme dans grep --context 9 ?

56voto

Taurus Olson Points 1354

Vous pouvez aussi faire un :

g/pattern/#

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

3 votes

Bien joué. Mais si vous avez déjà activé les numéros de ligne, alors # n'est pas nécessaire. Il affiche les numéros de ligne par défaut

48voto

Paul Ivanov Points 991

Si vous voulez consulter cette liste et passer rapidement d'une correspondance à l'autre, pensez à utiliser

:vimgrep example %

ou

:grep example %

La "liste d'erreurs" sera remplie de toutes les correspondances, ce qui vous permettra d'utiliser la fonction :copen pour les lister tous dans la mémoire tampon de Quickfix, appuyez sur la touche Entrée sur une ligne particulière pour passer à cette correspondance, ou utilisez des commandes telles que :cn y :cp pour aller et venir.

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

0 votes

Cela donne E499: Empty file name for '%' or '#', only works with ":p:h" sur MacVim 8.1

38voto

freeo Points 721

Je viens d'en apprendre une nouvelle : le Location List !
Type :lvim foo % pour rechercher foo dans le fichier actuel et saisissez toutes les correspondances contenant foo dans le liste des emplacements .
Type :lopen pour ouvrir la liste des emplacements dans la fenêtre Quickfix, qui est entièrement navigable comme d'habitude.
Utilisez :lnext / :lprevious pour parcourir la liste (utiliser tpope/impossible mappings pour une meilleure expérience)

2 votes

Bon tuyau ! Cela m'a conduit à faire ce mappage qui développe automatiquement le mot sous le curseur et fait lopen en un seul coup : nnoremap <leader>f :lvim /<c-r>=expand("<cword>")<cr>/ %<cr>:lopen<cr>.

10voto

Kevin Points 19613

Utilisation de :set hlsearch mettra en évidence toutes les correspondances en jaune, ce qui vous permettra d'analyser facilement le fichier pour trouver des correspondances. Mais ce n'est peut-être pas ce que vous voulez, car après une recherche, :g//p vous donnera la liste des correspondances.

2 votes

Devrait être ':set hlsearch' et non ':hlsearch'.

0 votes

Il est utile de cartographier également :nohl pour effacer les points forts lorsque vous n'en avez plus besoin.

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