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.
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].
¡¡¡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.
@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.
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 |),
Respuestas:
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$.
fuente
dw
, pero supongo que supuse que habría un comando "eliminar el resto de esta línea". Por ejemplo mi línea tieneip=|10.1.1.1
con|
ser la posición del cursor. ¿Hay un comando que eliminará todo el10.1.1.1
?d$
:!rm -f %
y luego:q!
. Eso elimina todo el archivo.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.Como otros han mencionado: puede usar
d$
oD
( 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$
oC
( shift- c) porque eliminará de la posición del cursor hasta el final de la línea y lo pondrá en modo [INSERTAR].fuente
D
para la mayoría de las personas, en mi opinión, ya que no te hace retroceder un espacio al final de la línea.i
que se inserta antes del cursor ya
que 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 usara
.Una de las cosas buenas de vi es su estructura lógica de comandos.
d
seguido 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 sed$
elimina al final de la línea. Del mismo modo,e
se desplaza al correo nd de la palabra actual, yw
se mueve al comienzo de la próxima W ord; entoncesde
elimina el final de la palabra actual, ydw
adicionalmente elimina el siguiente espacio en blanco.fuente
<kbd>
para teclas reales, no para secuencias de comandos. Por ejemplo<kbd>Ctrl</kbd>+<kbd>C</kbd>
, perod$
.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.
fuente
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
):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.
He elegido Ctrl, lporque
l
está bajo tus dedos. El Ctrl- kya se usa para insertar dígrafos.He estado buscando
:h i_Ctrl
algunas combinaciones de teclas gratuitas, y en realidad es el mayor problema cuando se trata de crear nuevos atajos para realizar acciones en vim.fuente
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
|
),El uso del comando 3Dgenerará:
fuente