56 votes

Vim - sélectionner le texte mis en évidence par la recherche ?

Dans vim, j'effectue souvent des recherches pour atteindre un mot ou une phrase au lieu d'y naviguer avec h/j/k/l . Puis j'ai frappé n pour sauter entre les occurrences.

Disons que j'ai ce texte :

Time flies like an arrow; fruit flies like a banana. - Groucho Marx

I type /an arrow et appuyez sur la touche Entrée. Cette phrase est mise en surbrillance, et j'y accède avec n .

Maintenant, je veux sélectionner visuellement ce texte peut-être pour le modifier ou le supprimer. (Oui, je suis conscient de la :s commande de substitution).

Puisque mon curseur est sur la lettre "a" au début de "une flèche", je peux appuyer sur v puis appuyez sur e plusieurs fois pour mettre en évidence la phrase entière. Mais j'ai l'impression qu'il y a un moyen plus court et plus sémantique. Après tout, j'ai déjà spécifié le texte qui m'intéresse.

Comment pourrais-je composer une commande pour dire "sélectionner visuellement la sélection de recherche actuelle ?"

46voto

David Lord Points 670

Vous pouvez utiliser gn à partir de la version 7.4 (et gN pour revenir en arrière). Il remplace le v//e truc.

Recherchez en avant le dernier motif de recherche utilisé, comme avec `n`, et lancez le mode visuel pour sélectionner la correspondance.

Voir :help gn o ce Vimcast pour plus d'informations.

29voto

Damian Powell Points 315

Essayez ça :

/an arrow
v//e

Il passe en mode visuel, répète la dernière recherche et sélectionne jusqu'à la fin.

8voto

Fredrik Points 185

J'ai trouvé que v//e n'est pas suffisant car, une fois que vous avez quitté le mode visuel, le fait de passer au résultat de recherche suivant/précédent place le curseur à la fin du résultat, et non au début, comme vous l'auriez normalement prévu.

Pour résoudre ce problème, nous devons d'abord sauter à la fin du résultat de la recherche ( //e ) et ensuite sélectionner visuellement jusqu'à son début ( v?? ):

" visually select a search result
nnoremap g/ //e<Enter>v??<Enter>

A la vôtre.

2voto

Fredrik Points 185

Il existe désormais un Plugin Vim-Search-Objects qui permet à Vim de traiter les correspondances de recherche comme des objets de texte régulier, de sorte que vous pouvez simplement va/ (sélection visuelle d'une correspondance) après avoir effectué une recherche.

1voto

Paul Joseph Points 782

Une façon plus simple de le faire est de mapper une touche (dans ce cas F5) comme ci-dessous :

nnoremap <F5> v/<c-r>=strpart(@/,1) . '/e+1'<CR><CR>

Après /an arrow appuyez sur F5.

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