84 votes

Comment rechercher le texte sélectionné dans Vim ?

Je suis conscient que je peux utiliser / suivi d'une expression rationnelle pour rechercher quelque chose. Et je peux utiliser ? pour chercher en arrière. Et je peux utiliser n y N pour répéter la recherche en avant et en arrière.

Il existe également deux raccourcis sympathiques : ou # recherche le mot sous le curseur (en avant/en arrière). C'est très utile ! (il existe également g y g# variantes)

Mais... Une fois que j'ai sélectionné le texte en utilisant le mode visuel ( v ), comment puis-je demander à Vim de rechercher exactement ce texte ? Un coup d'œil rapide sur :help ne m'a pas... euh... aidé.

80voto

Sharmila Points 478

Vous pouvez d'abord arracher le texte en surbrillance. Puis

  • /

  • Ctrlr

  • "

Ce qui collera ce que vous avez arraché après la / .

52voto

glennsl Points 636

La séquence suivante fera ce que vous voulez, à partir d'un bloc de texte déjà sélectionné :

  • y (tirer le texte sélectionné, dans le " par défaut)
  • / (entrer dans le mode de recherche)
  • ( \ V ) (facultatif, entrez dans le mode "très peu de magie "*)
  • Ctrl + r " (insérer le texte de " registre)
  • Enter (Engagez-vous !)

(*) Le mode "very no magic" interprète le texte suivant comme du texte brut plutôt que comme une regex. Notez cependant que \ y / sont toujours spéciaux et devront être traités d'une autre manière. Si le texte ne comporte aucun caractère considéré comme spécial, vous pouvez sauter cette étape.

Fuente: Wiki d'astuces Vim

10voto

Je n'ai jamais ressenti le besoin d'une telle fonctionnalité mais, étant donné que l'on peut trouver un besoin pour n'importe quelle fonctionnalité de Vim, je pense que este du Wiki Vim devrait vous aider :

vnoremap // y/\V<C-R>=escape(@",'/\')<CR><CR>

Je ne l'ai pas testé mais, en regardant le code, il semble que ce soit exactement ce que vous recherchez.

5voto

dwestbrook Points 1754

Vous pouvez trouver une méthode pour créer ce comportement ici sur le wiki de vim .

2voto

Brad Parks Points 2408
  • Sélectionnez visuellement votre texte

  • y (tire, ou copie le texte sélectionné, dans le registre " par défaut)

  • ? (entrer en mode de recherche, recherche dans le sens inverse)

  • Ctrlr " (collez ce qui est dans " registre dans votre recherche)

  • Enter (commencer à chercher)

Cela fonctionnera dans de nombreuses situations où / pas, car l'utilisation de ? effectue une recherche inverse, qui échappe aux barres obliques par défaut. Vous pouvez alors cliquer sur N pour continuer votre recherche dans l'avant, la direction, et n pour rechercher dans le sens inverse si vous le souhaitez.

Il s'agit également d'une variante de ces excellentes réponses qui se trouvent ailleurs sur cette page. réponse 1 , réponse 2 .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X