2011-02-06 11 views
6

Soy un desarrollador con experiencia en la plataforma de Windows y estoy tratando de enseñarme a mí mismo cómo usar Vim. Soy bastante bueno con expresiones regulares y entiendo los principios de cómo usar Vim. Sin embargo, tengo un problema específico, y aunque tengo una solución, parece que debería haber una mejor.Learning Vim: la mejor manera de eliminar el espacio entre las palabras

Tengo un archivo que contiene una línea similar a la siguiente:

CODE<tab><tab>Lorem ipsum dolor sit amet 

Podría haber un número variable de <tab> o <space> caracteres entre CODE y Lorem. Suponiendo que el cursor está sobre la 'C' de CODE en modo normal, lo que quiero poder hacer es encontrar una combinación de teclas que produzca la siguiente salida, y dejar el cursor entre la 'E' de CODE y él 'L 'de Lorem en modo inserción.

CODELorem ipsum dolor sit amet 

Mi solución curent es utilizar la siguiente secuencia de teclas:

wd?\s\+<retorno>

Esto funciona, pero se siente ilógico ir más allá de lo que quiero eliminar antes de que pueda eliminarlo. Siento que debería pasar al final de CODE y eliminar hacia adelante. Me doy cuenta de que esto podría ser simplemente una expresión de Vim de la que no tengo conocimiento. También podría estar perdiendo totalmente una pieza clave de conocimiento de Vim.

¿Cuál es la mejor manera de lograr mi objetivo?

Respuesta

15

eldw lo hará.

  • e - avanzar a la final de la palabra
  • l - mover 1 carácter a la derecha
  • dw - eliminar todos los espacios en blanco

Si su cursor está en el medio de algunos espacios en blanco, diw eliminará los espacios en blanco a la izquierda y derecha del cursor. (Si se trata de algún lugar en medio de una palabra, se eliminará la palabra.)

+1

Gracias, Matt.De hecho, pensé que esto comenzaría, pero me obsesioné por el hecho de que 'l' mueve el cursor al final de la tabulación, en lugar de a la posición inmediatamente posterior a 'CÓDIGO'. Ahora que lo intento, tiene sentido. Sin embargo, creo que resalta lo que estaba pensando: aprender Vim no se trata solo de los comandos, sino que también requiere aprender algunos modismos. –

+0

@Damian: Claro, hay buenas regularidades a lo largo de vi/vim, todavía estoy manejándolos yo mismo :-) –

+2

después de un poco más de experimentación, creo que la secuencia clave que estaba buscando es 'elcw'. Esto me deja en modo insertar, listo para agregar mi texto de reemplazo. ¡Increíble! Gracias de nuevo. –

4

Algunas alternativas:

:s/\s\+// 
e xx 
elxx 
eldtL 
f<tab>xx 
eldw 
+0

Gracias por las sugerencias, Ross. Estaba buscando usar esta secuencia en un snipet para que una o dos de tus sugerencias no funcionen porque están teniendo en cuenta el diseño y el contenido exactos que varían de línea a línea en mi archivo. Gracias por los consejos de algunas otras cosas que no sabía antes sin embargo. –

Cuestiones relacionadas