Dans vim, j’effectue souvent des recherches pour sauter à un mot ou à une phrase au lieu d’y naviguer h/j/k/l
. Ensuite, j'ai frappé n
pour sauter entre les occurrences.
Dis que j'ai ce texte:
Time flies like an arrow; fruit flies like a banana. - Groucho Marx
Je tape /an arrow
et appuie sur entrer. Cette phrase est mise en évidence et je saute à la question avec n
.
Maintenant, je veux sélectionner visuellement ce texte , peut-être le changer ou le supprimer. (Oui, je connais la :s
commande de substitution.)
Étant donné que mon curseur se trouve sur la lettre "a" au début de "une flèche", je peux v
appuyer sur , puis appuyez e
plusieurs fois sur pour mettre en surbrillance la phrase entière. Mais j'ai l'impression qu'il existe une méthode plus sémantique et plus courte. 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?"
gn
fait exactement comme demandé. En le soumettant en tant que réponse distincte, il est souligné que c'est un substitut complet àv//e
. Je viens de modifier ma réponse pour ajouter de la documentation, est-ce mieux?Essaye ça:
Il passe en mode visuel, répète la dernière recherche et sélectionne jusqu'à la fin.
la source
gn
cela aussi (sans changer ce quen
signifie)J'ai trouvé cela
v//e
en soi insuffisant, car après avoir quitté le mode visuel, passer au résultat de recherche suivant / précédent place le curseur à la fin du résultat, et non au début, comme prévu.Pour résoudre ce problème, nous devons d’abord aller à la fin du résultat de la recherche (
//e
), puis sélectionner visuellement à son début (v??
):À votre santé.
la source
nnoremap g? ??b<cr>v//e<cr>
(fait la même chose mais en regardant en arrière au lieu d'avancer)Il existe maintenant un plug-in Vim-Search-Objects qui permet à Vim de traiter les correspondances de recherche comme des objets de texte ordinaires. Vous pouvez donc
va/
(sélectionner visuellement une correspondance) après avoir effectué une recherche.la source
Une façon "idiote" de le faire est de mapper une clé (dans ce cas F5) comme ci-dessous:
Après avoir
/an arrow
frappé F5.la source
+1
. Omettez cela et il ne sélectionnera que la partie recherchée. D'autre part,nnoremap <F5> v//e<CR>
semble bien fonctionner.x
ouc
après avoir fait votreF5
mais sans la+1
totalité de la chaîne de recherche, y compris le caractère sous le curseur, est supprimé.