Una operación bastante común para mí en vim, ya que soy compulsivo-obsesivo y me gusta mantener mis archivos libres de espacios en blanco, es eliminar el contenido de una línea completa, pero no la línea en sí (es decir, no el salto de línea).
¿Hay una forma integrada de hacer esto? Tal vez una d<movement command>
operación?
Hasta ahora, lo mejor que tengo es (en la línea en cuestión) 0d$. ¿Hay una manera más rápida?
key-bindings
cursor-movement
Andrew Ferrier
fuente
fuente
:%s/\s*$//
Respuestas:
Puede usar
0D
esto irá al primer carácter de la línea y eliminará hasta el final de la línea. Tenga en cuenta que puede usar^D
si desea dejar solo cualquier espacio en blanco anterior. Además, estas operaciones no pueden repetirse mediante el uso.
. Si desea una operación que se pueda repetir con el.
comando, consulte la respuesta de David Lord.Temas de ayuda:
:help 0
:help D
:help ^
fuente
.
comando. Por esa razón, creocc<Esc>
oS<Esc>
es más atractivo si te importa repetir..
..
. Funcionan como si esas pulsaciones de teclas se introdujeran de forma interactiva, por lo que los comandos individuales se tratan por separado. El uso.
repetirá solo el último comando en la macro.@{reg}
, puede repetirla.
después.D
. Después de una0D
operación, su cursor se dejará en la columna 0. Si su cursor ya está en el comienzo de la línea (después de pasar a otra), parecerá que la macro se repitió correctamente. Intenta mover el cursor hacia adelante en la línea y escribir.
, verás que solo se repiteD
.cc <Esc>
hará lo que pidas, pero es más pulsaciones de teclas que0D
. Si desea poner algo en esa línea después,cc
puede ser mejor.fuente
.
comando. En contraste,0D
(como se sugiere en la respuesta elegida) hay dos acciones: el0
movimiento y elD
comando.0D
para mí, ya que lo hejk
mapeado<Esc>
en mi vimrc, por lo que mis manos ni siquiera tendrían que abandonar la fila de inicio.S
está documentado como "Sinónimo decc
"S
y luegoCtrl+C
oEsc
parece cumplir exactamente la misma función.Entonces puede repetirse
.
ya que constituye una sola acción.fuente
0D
es probablemente lo que quieres Se eliminará del cursor hasta el final de la línea, dejando la línea (y los caracteres anteriores al cursor) en su lugar.fuente
0D
se eliminará desde el principio de la línea , no desde la posición del cursorMe suelen utilizar
ddO
.dd
para eliminar la línea actual yO
(eso es una o mayúscula) para agregar una nueva línea.Esto también es 3 pulsaciones de teclas, pero
dd
cuenta solo como 1 y medio, y me pareceO
más fácil de escribir que$
.Es diferente de la
0D
solución en que hace una sangría automática, por ejemplo con este código (donde!···
hay una pestaña, y █ el cursor:0D
te dejaremos con:Y
ddO
te dejaré con:Y si presiona
<Esc>
inmediatamente después de esto, Vim debería eliminar la sangría automática, para que tenga lo mismo que con0D
.No hay una forma "correcta", dependerá de lo que querrá hacer exactamente. Prefiero
ddO
porque es más flexible y porque está "en mis dedos" :-)fuente
^D
dejará el espacio en blanco solo.O
deja en modo de inserción, esto es equivalente acc
, excepto sin sangría automática ... a menos que su línea ya haya sido sangrada automáticamente.Y para guardar esa preciosa pulsación de tecla que puede usar,
0C
que eliminará todos los caracteres de la línea actual y lo pondrá en modo de inserción.fuente