2012-09-19 18 views
83

¿Alguien puede explicarme qué hacen los comandos f y t en vim y cómo funcionan exactamente? Parece que no puedo encontrar esta información, pero la gente sigue diciéndome que son muy útiles. Realmente agradecería una respuesta con un ejemplo si es posible, ¡gracias!¿Qué hacen los comandos f y t en Vim?

+0

Los que dicen que es útil, ¿no dicen para qué es útil? – Shahbaz

Respuesta

132

Su primera parada con preguntas como estas debería ser la ayuda interna de vim, :h f y :h t. Sin embargo, en este caso, esas entradas son un poco crípticas sin un ejemplo. Supongamos que tenemos esta línea (^ = posición del cursor):

The quick brown fox jumps over the lazy dog. 
^ 

Estos comandos encuentran caracteres en una línea. Así fb colocaría el cursor aquí:

The quick brown fox jumps over the lazy dog. 
     ^

t es como f pero coloca el cursor sobre el carácter anterior. Así tb le daría:

The quick brown fox jumps over the lazy dog. 
     ^

Usted puede recordar estos comandos como f ind y t enfermo. Además, puede anteponer los comandos con un número para pasar a la enésima aparición de ese carácter. Por ejemplo, 3fb se moverá a la tercera b a la derecha del cursor. Mi oración de ejemplo solo tiene una b, por lo que el cursor no se movería en absoluto.

+1

Muchas gracias, fue perfecto, me olvidé por completo del comando: h esta es mi primera semana usando Vim, ¡fue una gran ayuda, gracias! – user1023465

+1

Mientras hago 'fb', me llevan a b (rown). ¿Cómo podría * llegar * directamente a b (r)? ¿Hay alguna manera, sin hjkl? – dangdis

+0

El comando es 'f', con' b' como su objetivo. 'fr' te llevará a la r en marrón. –

21

fx salta al siguientex en la línea.

tx salta al carácter justo antes de la próxima x en la línea.

Puede utilizar Fx y Tx para llegar a la anterior x.

Puede usar 2fx para saltar al segundo x en la línea.

Así, fF y tT son útiles cuando se quiere ir rápidamente al siguiente conjunto de paréntesis (f() o borrar todo desde el cursor hasta, pero sin incluir, la anterior = (dT=) y así sucesivamente ...

Ver :h motion.txt. ¡Va a sorprenderte por completo!

+0

gracias por mencionar esa cosa '2fx'. ¡Siempre lo confundo con 'f2x' – Yar

35

puedo encontrar f y t muy útiles en combinación con d y c. Por ejemplo, ct: le permitirá reemplazar todo desde el cursor hasta el siguiente punto, pero no eliminar los dos puntos. Puedes recordarlo como "cambiar a dos puntos".

+2

+1! Las expresiones idiomáticas como 'ct,' o 'ct)' para reemplazar rápidamente un último argumento por una llamada a función son maravillosas. – progo

+8

Prefiero 'vt: c' porque no se detecta siempre detectar cada ocurrencia de una letra dada 100% correcta. Con 'v' puedes ver la selección visual, una buena señal visual. – Bentley4

+0

Prefiero el mnemónico, "cambiar hasta el colon" –

72

Solo para agregar a Michael Kristofik's answer, ninguna descripción de f o t está completa sin mencionar también ;.

De this Vim cheat sheet:

; "Repetir última f, t, F o T [count] veces."

Así, para continuar el tema de la @ MichaelKristofik:

The quick brown fox jumps over the lazy dog. 
^ 

tipo fo para ir a la primera 'O':

The quick brown fox jumps over the lazy dog. 
      ^

y luego ; para ir a la siguiente:

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

the; la propina es bastante útil, aunque no veo cómo funciona con 't'. Lo intenté y estoy atrapado en la misma posición sin importar cuántas veces se repita el comando t. –

+0

@ PeterPerháč Presione el punto y coma varias veces. Funciona para mi. – LondonRob

+0

@ PeterPerháč, supongo que es más complicado con el comando t, ya que al buscar x hacia adelante, el punto y coma encontrará la misma x cada vez que golpee; por lo tanto, no se mueve. Si presionas l una vez y luego el punto y coma debería funcionar. – mickey

Cuestiones relacionadas