Que font les commandes f et t dans Vim?

126

Quelqu'un peut-il m'expliquer ce que font les commandes fet tdans vim et comment elles fonctionnent exactement? Je n'arrive pas à trouver ces informations, mais les gens n'arrêtent pas de me dire qu'elles sont très utiles. J'apprécierais vraiment une réponse avec un exemple si possible, merci!

Dan
la source

Réponses:

204

Votre premier arrêt avec des questions comme celles-ci devrait être l'aide interne de vim, :h fet :h t. Cependant, dans ce cas, ces entrées sont un peu cryptiques sans exemple. Supposons que nous ayons cette ligne ( ^= position du curseur):

The quick brown fox jumps over the lazy dog.
^

Ces commandes trouvent des caractères sur une ligne. Donc fb, placerait le curseur ici:

The quick brown fox jumps over the lazy dog.
          ^

test similaire fmais place le curseur sur le caractère précédent. Alors tbje vous donnerais:

The quick brown fox jumps over the lazy dog.
         ^

Vous pouvez vous souvenir de ces commandes comme find et tmalades. De plus, vous pouvez ajouter un nombre aux commandes pour passer à la nième occurrence de ce caractère. Par exemple, 3fbse déplacerait vers le troisième b à droite du curseur. Mon exemple de phrase n'a qu'un seul b, donc le curseur ne bougerait pas du tout.

Michael Kristofik
la source
4
Merci beaucoup, c'était parfait, j'ai totalement oublié la commande: h c'est ma première semaine avec Vim, c'était une aide énorme merci!
Dan le
1
En faisant 'fb', je suis amené à b (rown). Comment pourrais-je accéder directement à b (r) own? Y a-t-il un moyen, sans hjkl?
dangdis
15
Et si vous écrivez les lettres en majuscules, cela saute en arrière. Donc, par exemple Fbou Tb.
be-ndee
2
@ancm comme dit be-ndee, Fx ou Tx, où x est le caractère à rechercher.
mickey
1
cela vaut probablement la peine d'être facile avec les débutants pour ne pas dépendre de :help, car cela ne fournit pas toujours la meilleure explication pour la foule non ésotérique. que signifie to [count]'thmême?
Tycholiz le
121

Juste pour ajouter à la réponse de Michael Kristofik , aucune description de fou tn'est complète sans également mentionner ;.

De cette feuille de triche Vim :

; "Répéter les dernières fois f, t, F ou T [nombre]."

Donc, pour continuer le thème de @ MichaelKristofik:

The quick brown fox jumps over the lazy dog.
^

tapez fopour aller au premier «o»:

The quick brown fox jumps over the lazy dog.
            ^

puis ;pour passer au suivant:

The quick brown fox jumps over the lazy dog.
                 ^
LondresRob
la source
1
les ; tip est assez utile, même si je ne vois pas comment cela fonctionne avec «t». J'ai essayé et je suis coincé dans la même position, peu importe le nombre de fois que la commande t est répétée.
Peter Perháč
@ PeterPerháč Appuyez plusieurs fois sur le point-virgule. Travaille pour moi.
LondonRob
@ PeterPerháč, je suppose que c'est plus compliqué avec la commande t, car lors de la recherche vers l'avant de x, le point-virgule trouvera le même x à chaque fois que vous frappez;, donc ne bouge pas. Si vous appuyez une fois sur l, puis un point-virgule, cela devrait fonctionner.
mickey
@ PeterPerháč Assurez-vous que vous n'êtes pas déjà à (un caractère avant) la dernière occurrence de la ligne, et il devrait trouver l'occurrence suivante.
Adam Evans du
51

Je trouve fet ttrès utile en combinaison avec det c. Par exemple, ct:vous permettra de tout remplacer, de votre curseur aux deux points suivants, mais pas de supprimer les deux points. Vous pouvez vous en souvenir comme "changement en deux points".

Vaughn Cato
la source
5
+1! Les expressions idiomatiques comme ct,ou ct)remplacer rapidement un ou le dernier argument d'un appel de fonction sont agréables à utiliser.
nperson325681
15
Je préfère vt:cparce que vous ne repérez pas toujours chaque occurrence d'une lettre donnée correcte à 100%. Avec vvous pouvez voir la sélection visuelle, un joli repère visuel.
Bentley4 du
1
Je préfère le mnémonique, "change till colon"
Patrick Michaelsen
34

fxsaute au suivant x sur la ligne.

txsaute au caractère juste avant le suivant x sur la ligne.

Vous pouvez utiliser Fxet Txpour atteindre le précédent x .

Vous pouvez utiliser 2fxpour passer à la seconde xsur la ligne.

Donc, fFet tTsont utiles lorsque vous voulez aller rapidement au jeu de parenthèses suivant ( f() ou supprimer tout du curseur vers, mais en excluant, le précédent =( dT=) et ainsi de suite ...

Voir :h motion.txt. Cela vous épatera.

romainl
la source
2
merci d'avoir mentionné cette 2fxchose. Je le confond toujours avecf2x
Yar