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?
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
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/
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).
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 #
.
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).