vi atajo para eliminar "hasta el próximo carácter X"


194

Entiendo que vi tiene teclas de acceso directo para eliminar caracteres, palabras y líneas con varias opciones.

Sin embargo, no pude encontrar esto:

  • eliminar del cursor al siguiente caracter especificado

Por ejemplo, podría escribir du"esperando que el editor "elimine hasta que se encuentre el siguiente "carácter"

Lo más cerca que sé es d9wdónde 9está la cantidad de palabras que se eliminarán.

¿Alguien sabe si esto es posible?


Si estás interesado en Vi y Vim, ahora tienen su propio sitio SE: Vi y Vim
postre el

Respuestas:


303

Utilice dtc, donde c es cualquier carácter, por ejemplo, para usted, que deseadt"

Esto eliminará hasta pero no incluye c .

Si tuvieras:

delete until exclamation point!

Y el cursor estaba en el primer espacio y tecleaste dt!, obtendrías:

delete!

También dfc.

Esto eliminará hasta e incluyendo c .

Usar df!el mismo ejemplo anterior te daría:

delete

Casi cualquier "movimiento" se puede utilizar para los d, c, yy comandos similares.


77
Presumiblemente, la mnemónica es t para "hasta"? Buena respuesta.
pensar demasiado el

15
También puede eliminar a la instancia anterior de un personaje con la versión en mayúscula de los comandos de movimiento. Quizás más útil para comas, dT,y dF,.
joelostblom

3
Esto no funciona en varias líneas.
0xcaff

3
¿Se puede hacer esto en un rango de líneas?
Ray

2
Para hacer algo similar en un rango de líneas, se puede realizar una búsqueda habitual (como en la respuesta de zpletan): d/wordbúsquedas hasta word. Debe ir seguido de enter (para cerrar la búsqueda).
Eric O Lebigot

59
  • Para eliminar reenviar hasta el tipo de carácter 'X' dtX

  • Para eliminar hacia adelante a través del tipo de carácter 'X' dfX

  • Para borrar hacia atrás hasta el tipo de carácter 'X' dTX

  • Para eliminar hacia atrás a través del tipo de carácter 'X' dFX


30

La entrada dt # (no un comando: úsalo como un movimiento como G)

se eliminará del cursor hasta, pero sin incluir el #. Puede sustituir cualquier carácter por #.


2
¡Esta es la respuesta correcta! df # eliminará # también.
Vietnam

estado buscando esto, esto es increíble
Nadeem Khedr

18

Parece que @Arcege ya respondió la pregunta, pero lo hice d/lpara eliminar hasta el personaje l; otros personajes también funcionarían.


3
Esto funciona para cosas en líneas nuevas.
jasonszhao

Nota: esto debe ser seguido por Enter.
Eric O Lebigot

6

wse mueve a la siguiente palabra. lpasa al siguiente personaje.

Entonces es d9lpara eliminar los siguientes 9 caracteres.


2
Cerrar, les la tecla de flecha derecha de Vim, por lo que en realidad está eliminando a la derecha. Por el contrario, d9heliminaría 9 caracteres restantes.
Walf
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.