Eliminar del cursor al final de la línea en VI


302

Sé que probablemente he revisado esto un millón de veces en todos los documentos VI que he leído, pero parece que no puedo encontrar la eliminación del comando de cursor al final de la línea.


3
Tienes un error tipográfico aquí: dices "fin de línea" en el título, pero "fin de palabra" en la pregunta.
Cascabel

Respuestas:


450

El comando dweliminará desde la posición actual del cursor hasta el comienzo del siguiente carácter de palabra. El comando d$(nota, que es un signo de dólar, no una 'S') se eliminará de la posición actual del cursor hasta el final de la línea actual. Des sinónimo de d$.


Sí, lo sé dw, pero supongo que supuse que habría un comando "eliminar el resto de esta línea". Por ejemplo mi línea tiene ip=|10.1.1.1con |ser la posición del cursor. ¿Hay un comando que eliminará todo el 10.1.1.1?
Falmarri

3
@Falmarri - Pido disculpas, debo haber entendido mal su pregunta. Hay un comando para eso:d$
Tok

84
D (Shift + d) también es sinónimo de d $.
Neth

55
@Andy, el trabajo es eliminar del cursor al final de la línea. Si considera que eliminar más que eso es "hacer el trabajo", también podría usar :!rm -f %y luego :q!. Eso elimina todo el archivo.
Comodín

2
@Amir Solo usa d^('d' + caret) ... básicamente d + cualquier personaje que normalmente movería el cursor, creo, pero estoy aprendiendo Vim, así que podría estar equivocado en eso.
JakeD

41

Como otros han mencionado: puede usar d$o D( shift- d) para eliminar desde la posición del cursor hasta el final de la línea.

Lo que generalmente encuentro más útil es c$o C( shift- c) porque eliminará de la posición del cursor hasta el final de la línea y lo pondrá en modo [INSERTAR].


2
¡¡¡BONITO!!! Esto es mucho mejor que Dpara la mayoría de las personas, en mi opinión, ya que no te hace retroceder un espacio al final de la línea.
Elijah Lynn

¿Por qué esta respuesta está oculta hasta aquí? Esta es la funcionalidad que realmente estaba buscando cuando vine aquí.
M_M

@ElijahLynn no debería ser un problema de todos modos. Vim tiene dos formas principales de ingresar al modo de inserción ique se inserta antes del cursor y aque se inserta después del cursor. Si su cursor está al final de la línea y desea insertar al final de la línea, simplemente puede usar a.
Lie Ryan

1
El objetivo es hacerlo en una operación, no en dos. Pulsaciones de tecla adicionales = fricción adicional.
Elijah Lynn

36

Una de las cosas buenas de vi es su estructura lógica de comandos. dseguido de un comando de movimiento d elige el objetivo de ese movimiento. $se mueve al final de la línea (mnemotécnico: como en expresiones regulares). Entonces se d$elimina al final de la línea. Del mismo modo, ese desplaza al correo nd de la palabra actual, y wse mueve al comienzo de la próxima W ord; entonces deelimina el final de la palabra actual, y dwadicionalmente elimina el siguiente espacio en blanco.


1
@gioele lo uso <kbd>para teclas reales, no para secuencias de comandos. Por ejemplo <kbd>Ctrl</kbd>+<kbd>C</kbd>, pero d$.
Gilles

@ Gilles Tienes razón. Acabo de intentar d ^ y se eliminó de la posición del cursor para que comience la línea.
ka3ak

Siempre he usado (d) elete (a) (w) ord para borrar palabras :)
Błażej Michalik

20

Probablemente quiera usar D. Mueva el cursor al primer carácter que desea eliminar, luego presione shift-D. Todo se fue. En realidad, está en el búfer de corte predeterminado, por lo que puede P o p pegarlo nuevamente.

Uso Dp (eliminar hasta el final de la línea, luego volver a colocarlo), moverme al final de otra línea, luego p nuevamente para pegar el mismo texto al final de esta otra línea. Funciona de maravilla en los archivos de configuración, donde debes poner una URL complicada en dos o más lugares.


Probablemente es un Vim mínimo que usa de todos modos.
polemon

0

Creo que un atajo de modo de inserción podría ser útil.

En el modo de inserción, tal vez sería mejor comenzar a cambiar hasta el final de la línea (pon esto en tu ~/.vimrc):

inoremap <C-l> <C-o>C

Entonces, como se ha dicho, tiene Den modo normal y Ctrl+ len modo de inserción. Como puede ver, también tiene Cque comienza a cambiar hasta el final de la línea.

<C-o> ......... insert normal keystroke in insert mode

He elegido Ctrl, lporque lestá bajo tus dedos. El Ctrl- kya se usa para insertar dígrafos.

He estado buscando :h i_Ctrlalgunas combinaciones de teclas gratuitas, y en realidad es el mayor problema cuando se trata de crear nuevos atajos para realizar acciones en vim.


0

Para eliminar un rango de líneas después de la posición del cursor, 3Dse eliminará del cursor hasta el final de la línea, así como las dos líneas siguientes por completo (es decir, elimina 3 líneas después de la posición del cursor).

por ejemplo, para el siguiente texto (cursor representado como |),

If there's a cursor |in the line
here
we
go

El uso del comando 3Dgenerará:

If there's a cursor
go
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.