2010-09-08 5 views
4

En vim, si j'ai le texte suivant:vim Edition - comment modifier le segment sélectionné d'une recherche ou convertir en bloc visuel

bonjour il

dire que je cherche enfer le texte ci-dessus.

/enfer

et appuyez sur n pour passer à l'instance suivante.

hell o

enfer est maintenant mis en évidence dans vim et mon curseur est sur le 'h'.

Quelle est la manière la plus efficace de supprimer/supprimer ce texte en surbrillance.

Existe-t-il un moyen de «tirer vers la fin du texte en surbrillance»? Ou 'créer un bloc visuel à partir du texte en surbrillance'?

Je sais que je peux utiliser% s/hell/whatever/gc pour faire un pas comme alternative.

TIA Tom

+0

Il y a une astuce dans le wiki de Vim Tip qui explique comment faire cela, il semble que ce n'est pas intégré: http://vim.wikia.com/wiki/Copy_the_search_results_into_clipboard –

Répondre

8

y//e ou d//e devrait faire l'affaire.

:let @" = @/ également, même si vous avez déplacé le curseur.

+0

Je ne savais pas que: c'est une meilleure façon de le faire que ma suggestion! – DrAl

+0

En fait, ils ne sont pas si différents: le modèle recherché précédent peut être omis grâce à '//' comme vous le saviez déjà pour ': s', et lors de la recherche,'/e' & co remplace '\ zs' & co. –

1

Je ne sais pas d'un construit dans la cartographie (Modifier mais voir la réponse de Luc Hermitte ci-dessous comme c'est une solution beaucoup mieux que mes bodges Fin Modifier), mais vous pouvez faire le coup sec ou sélectionnez un deux applications:

nmap ,y y/<C-R>/\zs<CR> 
nmap ,v v/<C-R>/<BS>\zs<CR> 

la cartographie ,y utilise le «/» inscrire pour tirer dans la dernière recherche de recherche à long terme, ajoute \zs pour faire le point de recherche soit la fin et le coup sec procède à ce moment-là. Le mappage ,v fait une sélection visuelle, mais doit supprimer le dernier caractère de la recherche (avec <BS>) pour le faire se terminer au bon endroit.

Pour ce que ça vaut la peine, vous pouvez simplifier la %s/hell/whatever/gc que vous suggérez en affinant votre recherche avec / puis en utilisant une forme raccourcie:

/hell 
:%s//whatever/gc 

C'est parce que :s utilise le dernier terme de recherche par défaut.

Questions connexes