¿Cómo eliminar hasta el final de la línea anterior?

8

Un ejemplo (El ^es la posición del cursor):

Antes de:

a bc def ghi
j k l mn o p q rs
      ^

Después:

a bc def ghimn o p q rs
            ^

o al menos:

a bc def ghimn o p q rs
           ^

Sé que puedo usar d0i<BS>, pero quiero una forma más rápida de hacerlo y quiero permanecer en el modo de comando. Soy un principiante en vim y creo que tal vez la respuesta sea una modificación de kA.

¡Muchas gracias! :-)

silviubogan
fuente
1
Si esto es algo que haces con frecuencia, deberías considerar escribir tu propio mapeo, tal vez algo así <Leader>dk.
Kyle Strand

Respuestas:

9

Tratar d0kJx

Elimina hacia atrás hasta el comienzo de la línea, se mueve hacia arriba, luego une las dos líneas y luego elimina el espacio entre las dos líneas unidas.

No tienes que salir del modo normal con esto.

Bryan Glazer
fuente
2
Esta es la única respuesta hasta el momento que (1) no altera el historial de búsqueda o cambia el resaltado actual y (2) no elimina el m.
Kyle Strand
12

Bueno, puedes combinar el movimiento de "búsqueda hacia atrás" y el deleteoperador:

d?$<Enter>
VanLaser
fuente
En .vimrc tengo esto: set hlsearchy d?$<Enter>hace lo que pedí, pero también resalta todas las terminaciones de línea en el archivo, así que tengo que escribir :nohdespués para eliminar el resaltado. Hay alguna manera de evitar esto? ¡Gracias! :-)
silviubogan
1
Probablemente sí, lo que hago es simplemente "sobrecargar" <C-l>en modo normal: nnoremap <silent><C-l> :nohlsearch<cr>:set nolist<cr>:redraw!<cr>luego usarlo cuando sea necesario (es decir, en casos como el anterior).
VanLaser
3

Con modo visual: hvk$d

Explicación
h - Mover uno a la izquierda
v- Iniciar modo visual
k$- Mover al final de la línea anterior
d- Eliminar selección

Karl Yngve Lervåg
fuente
¿Con el cursor encendido m, tal vez hvk$d? (para evitar seleccionarlo)
VanLaser
1
Ah, sí. Actualizando ahora.
Karl Yngve Lervåg