2009-10-22 19 views
129

A menudo, cuando se desarrolla soy confrontado con un objeto anidado que me gustaría eliminar de código en el medio de una línea como la siguiente:VIM: Eliminación desde la posición actual hasta un espacio

htmlDoc.WriteLine("<b><h3>" + this.cbAllSyncs.SelectedItem.ToString() + "</h3></b>"); 

La parte que me gustaría eliminar es:

this.cbAllSyncs.SelectedItem.ToString() 

sé que puedo contar el número de palabras y períodos y entrar dw a de desde mi posición actual del cursor de "esto". Sin embargo, lo que me gustaría hacer es no tener que contar en absoluto y eliminar el espacio con un comando. es posible?

Respuesta

243

Trate dtespacio. En general dtx se borra de la posición actual hasta justo antes de x. Solo tx mueve el cursor justo antes del carácter x en la línea actual.

Para eliminar hasta e incluyendo el espacio, utilice dfespacio.

+0

Esto funciona muy bien! También me da cierta flexibilidad añadida para llegar a otros puntos concretos dentro de ese objeto. ¡Gracias! –

+25

'df ' elimina hasta e incluyendo el espacio siguiente. –

+5

igualmente útil, dfT elimina hasta el espacio anterior. – hgmnz

54

Puede utilizar dW o dE como @glenn sugerido si no desea eliminar el espacio en sí mismo.

A WORD (mayúscula W) consiste en una secuencia de caracteres que no son en blanco, separados con el espacio blanco .

Eche un vistazo al word motions.

+0

Si pudiera votar por dos respuestas lo haría, ya que esto resuelve la pregunta específica que hice. Gracias por el enlace! –

+3

o 'dE' - eliminar hasta el final de la secuencia de caracteres no en blanco (no incluye el siguiente espacio en blanco) –

+0

@BlakeBlackwell ¿Quién dice que no puede votar por dos respuestas? ya lo hice en esta pregunta. Esta es v información útil. – javadba

16

una posible solución es utilizar la eliminación con una búsqueda.

escriba en d/<space> y vim lo eliminará hasta que golpee un espacio.

+2

Esto es más general que 'dW' porque también puede usarlo para eliminar del cursor cualquier carácter, como' 2d/+ ', en este caso, lo que eliminaría también las concatenaciones de cadenas. –

+1

puede hacer 2dW y esto funciona igual de bien. de hecho, lo considero una solución mejor, ya que también funcionará con pestañas y otros espacios en blanco. También elimina los espacios en blanco finales que desea eliminar hasta que. – barkmadley

1

dtespacio es la respuesta a su pregunta, pero df+ parece que va a resolver su problema mejor.

+0

No hace nada por mí. –

11

Si desea eliminar de cualquier lugar dentro de la palabra, y en un solo comando, sólo tiene que utilizar daW

(Por supuesto, puede utilizar dunw si quieres limitar a una palabra)

Lo uso bastante porque ahorra un movimiento al comienzo de la palabra (en su caso)

+0

daw y daW se comportan igual para mí: ambos eliminan la palabra completa sin importar en qué letra esté mi cursor. No estoy seguro por qué. – Will

+0

daw no eliminará los espacios en blanco después de la palabra, mientras que daw será – Louis

1
  • eliminar de la posición actual a un ejemplo de carácter específico "

    dt"
  • suprimir la expresión de la posición del cursor se encuentra en hasta el final de la palabra

    dw
  • eliminar la totalidad la palabra en la que se encuentra el cursor, independientemente de la posición del cursor en la palabra, esto también lo coloca en el modo de inserción para permitirle insertar inmediatamente.

    diw
+0

Gracias, con su explicación, entiendo cómo funciona la eliminación – Maxim

Cuestiones relacionadas