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!

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.


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.
                 ^

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".


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.


2
merci d'avoir mentionné cette 2fxchose. Je le confond toujours avecf2x
Yar
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.