web-dev-qa-db-fra.com

Recherche de sélection à vim

J'utilise vim et les plugins vim pour Visual Studio lors de l'écriture de C++. Souvent, je me retrouve à vouloir rechercher une chaîne dans une fonction, par exemple chaque appel à object->public_member.memberfunc().

Je sais que vim offre un moyen pratique de rechercher un seul mot, en appuyant sur * et #, et il peut également rechercher des chaînes tapées à l'aide de la barre oblique omniprésente / commande. Lorsque vous essayez de rechercher toutes les instances d'une chaîne plus longue comme celle ci-dessus, il faut un certain temps pour retaper après /.

Existe-t-il un moyen de rechercher une sélection? Par exemple, mettez en surbrillance avec v, puis copiez avec y, existe-t-il un moyen de coller après /? Existe-t-il un raccourci plus facile?

102
Marcin

Consultez cette astuce Vim: Rechercher le texte sélectionné visuellement

Ou vous pouvez simplement tirer le texte sélectionné avec y et passer en mode de recherche /, vous pouvez ensuite coller le dernier texte tiré avec Ctrl + R 0

147
CMS

Répondre

  1. Retirez le texte que vous souhaitez rechercher
  2. q/p
  3. Enter

Explication

q/ fonctionne de manière similaire à la recherche Vanilla / sauf que vous êtes en mode commande donc p fait "coller" au lieu de taper le caractère p. Ainsi, ce qui précède copiera le texte que vous recherchez et le collera dans une recherche.

Pour plus de détails, tapez :help q/

74
Cory Klein

Utilisez q/ au lieu de simplement /. (Même chose avec q:). Vous pouvez maintenant éditer VIM via votre historique de commandes et de recherches! (Essayez parfois Ctrl-N et Ctrl-P).

37
arcanex

Je viens d'apprendre (grâce à l'excellent livre Vim pratique ) qu'il existe un plugin pour cela. Vous pouvez trouver le plugin sur GitHub .

Le plugin vous permet de rechercher une sélection visuelle avec * et #.

9
cutemachine

Vous pouvez en fait sélectionner le texte visuellement et appuyer sur * et # pour rechercher l'occurrence suivante ... Cela fonctionnera de la même façon, la seule mise en garde est la suivante:

Les espaces dans la sélection correspondent à tous les espaces, lors de la recherche (la recherche de "bonjour le monde" trouvera également "bonjour" à la fin d'une ligne, avec "monde" au début de la ligne suivante).

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

2
AhHatem