161 votes

vim repeat find next character 'x'

Je navigue souvent dans vim en f x pour trouver la prochaine occurrence du caractère 'x', mais sans tenir compte du fait qu'il existe un mot (ou plusieurs mots) contenant "x" entre le mot que je veux modifier et la position initiale du curseur.

Donc je dois f x à nouveau, ce qui est un peu ennuyeux car il y a ce joli bouton . qui répète la dernière commande. Y a-t-il donc un moyen de répéter f x en appuyant sur un seul bouton.

308voto

Jeremiah Willcock Points 14674

La commande de répétition d'un f est ; (point-virgule) ; , (virgule) inverse le sens de la recherche.

6 votes

Y a-t-il une raison utile pour laquelle vous ne pouvez pas utiliser . pour cela ? C'est la commande que je m'attendais à voir fonctionner.

13 votes

@DanielKaplan Il est logique de mapper le novement, c'est-à-dire la recherche d'un caractère ( f y ; ), à un caractère différent de la répétition d'un montage ( . ). Cela vous permet d'effectuer des recherches rapides et de modifier les résultats de la recherche. Si vous voulez remplacer des + dans une ligne avec * vous pourriez faire quelque chose comme ceci (en sautant certains caractères et en en remplaçant d'autres) : f+r*;.;;.;.;;;.

3 votes

Y a-t-il un moyen de remapper ces commandes ? Beaucoup de personnes utilisent , pour le leader.

24voto

epsilonhalbe Points 3002

Le temps a passé depuis que j'ai posé cette question - aujourd'hui j'utilise vim-easymotion ce qui rend le besoin de ; presque inutile.

Ce plugin permet de sauter directement à une certaine lettre - le déclenchement du plugin rend toutes les lettres grises à l'exception de tous les 'x' sur l'écran - et ceux-ci sont remplacés par des lettres rouges que vous pouvez presser pour sauter directement à elle.

easymotion in use

6voto

Praveen Points 1368

Pour ajouter à la réponse de @Jeremiah Willcock, nous pouvons ajouter un compte à f commande pour aller à la nième occurrence [count]f{char} . Par exemple

2fx => va à la deuxième occurrence de x [si disponible]

De même, nous pouvons utiliser le même compteur pour ; y , . Par exemple

2; => va à la deuxième occurrence de la dernière recherche [si disponible].
2, => va à la deuxième occurrence de la dernière recherche en sens inverse [si disponible].

C'est très utile lorsqu'on l'utilise avec c{motion} (changement) ou d{motion} (supprimer). Par exemple
Si nous voulons modifier ou supprimer la troisième occurrence d'un caractère, nous pouvons faire ce qui suit

c3fx => changement à la 3ème occurrence du caractère x (inclus)
d3fx => supprimer jusqu'à la 3ème occurrence du caractère x (inclus)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X