2012-09-19 12 views
83

Qualcuno può spiegarmi quali sono i comandi f e t in Vim e esattamente come funzionano? Non riesco a trovare questa informazione ma la gente continua a dirmi che sono molto utili. Gradirei davvero una risposta con un esempio, se possibile, grazie!Cosa fanno i comandi ft in Vim?

+0

Chi dice che è utile, non dice che cosa è utile? – Shahbaz

risposta

132

La prima sosta con domande come queste dovrebbe essere l'aiuto interno di vim, :h f e :h t. Tuttavia, in questo caso, quelle voci sono un po 'criptico senza un esempio. Supponiamo di avere questa linea (^ = posizione del cursore):

The quick brown fox jumps over the lazy dog. 
^ 

Questi comandi trovano caratteri su una linea. Così fb sarebbe posizionare il cursore qui:

The quick brown fox jumps over the lazy dog. 
     ^

t è come f ma posiziona il cursore sul carattere precedente. Così tb darebbe:

The quick brown fox jumps over the lazy dog. 
     ^

si può ricordare questi comandi come f ind e t malato. Inoltre, puoi anteporre i comandi con un numero per passare all'ennesima occorrenza di quel personaggio. Ad esempio, 3fb passerebbe alla terza b alla destra del cursore. La mia frase di esempio ha solo una b, quindi il cursore non si muoverà affatto.

+1

Grazie mille, è stato perfetto, ho completamente dimenticato il comando: h questa è la mia prima settimana con Vim, questo è stato un grande aiuto, grazie! – user1023465

+1

Mentre faccio 'fb', sono preso per b (rown). Come potrei * direttamente * arrivare a b (r) possedere? C'è un modo, senza hjkl? – dangdis

+0

Il comando è 'f', con' b' come bersaglio. 'fr' ti porterà in rosso in marrone. –

21

fx salta allo successivox sulla linea.

tx salti al personaggio poco prima dello successivox sulla linea.

È possibile utilizzare Fx e Tx per raggiungere la precedentex.

È possibile utilizzare 2fx per passare al secondo x sulla linea.

Così, fF e tT sono utili quando si vuole andare rapidamente alla prossima serie di parentesi (f() o cancellare tutto dal cursore, ma escludendo il precedente = (dT=) e così via ...

Vedi :h motion.txt. Ti lascerà a bocca aperta.

+0

grazie per aver menzionato la cosa '2fx'. Lo confondo sempre con 'f2x' – Yar

35

trovo f e t molto utile in combinazione con d e c. Ad esempio, ct: ti consente di sostituire tutto dal cursore fino ai due punti successivi, ma non eliminare i due punti. Puoi ricordarlo come "cambia in due punti".

+2

+1! Idiomi come 'ct,' o 'ct)' per sostituire rapidamente uno o l'ultimo argomento con una funzione chiamata sono meravigliosi da usare. – progo

+8

Preferisco 'vt: c' perché non riesci a individuare sempre ogni occorrenza di una determinata lettera corretta al 100%. Con 'v' puoi vedere la selezione visiva, una bella stecca visiva. – Bentley4

+0

Preferisco il comando mnemonico, "modifica fino a due punti" –

72

solo per aggiungere al Michael Kristofik's answer, nessuna descrizione del f o t è completo senza menzionare anche ;.

Da this Vim cheat sheet:

; "Ripeti ultima F, T, F o T [count] volte."

Quindi, per continuare il tema del @ MichaelKristofik:

The quick brown fox jumps over the lazy dog. 
^ 

tipo fo di andare alla prima 'o':

The quick brown fox jumps over the lazy dog. 
      ^

e poi ; di andare a quella successiva:

The quick brown fox jumps over the lazy dog. 
       ^
+0

; tip è abbastanza utile, anche se non vedo come funziona con 't'. ho provato e sono bloccato nella stessa posizione, non importa quante volte il comando t viene ripetuto. –

+0

@ PeterPerháč Premere più volte punto e virgola. Per me va bene. – LondonRob

+0

@ PeterPerháč, immagino sia più complicato con il comando t, poiché quando si cerca in avanti per x, il punto e virgola troverà la stessa x ogni volta che si preme, quindi non si muove. Se premi l una volta e poi il punto e virgola dovrebbe funzionare. – mickey