salir - ¿Cómo eliminar(no cortar) en Vim?
salir de vim ubuntu (7)
¿Cómo puedo eliminar una línea sin ponerla en mi buffer predeterminado?
Ejemplo:
line that will be copied.
line that I want to be substitued with the previous one.
Lo que intento hacer
yy
dd
p
Pero Vim reemplaza la cadena copiada recientemente con la eliminada (cortada). Sé que puedo usar memorias intermedias como, "1yy
, dd
luego "1p
, pero siempre me olvido de poner la cadena copiada en un búfer, entonces tengo que pegar primero mi contenido (línea que será copiada) y luego eliminar lo que quiero (línea que quiero que se sustituya por la anterior)
¿Cómo puedo realmente eliminar un texto en Vi (m) sin copiarlo?
Otra pregunta relacionada es ¿cómo puedo reenviar una palabra en el modo de inserción? Quiero algo similar a Ctrl + w .
El registro de agujero negro "_
hará el truco, pero hay una mejor solución:
Cuando ingresa la línea de regreso con el comando p
, está pegando el contenido del registro predeterminado (volátil) ""
, que ha sido sobrescrito por dd
. Pero aún puede pegar desde el registro yank (no volátil) "0
, que no será sobrescrito por el comando delete dd
.
Estos son los comandos que desea usar según su ejemplo:
yy
dd
"0p
Esa es una de las cosas que no me gustó de vim ... Terminé asignando dd
al registro de agujeros negros en mi .vimrc y la vida ha sido buena desde:
nnoremap d "_d
vnoremap d "_d
Puede usar "_d
para evitar que las cosas sobrescriban el texto extraído. Puede almacenar texto extraído o eliminado en cualquier registro que desee "
, y _
es el registro de "agujero negro", donde envía cosas que no le interesan. .
Para obtener más información, puede escribir :help "_
or :help deleting
Use el "registro de agujero negro", "_
para eliminar realmente algo: "_d
.
Use "_dP
para pegar algo y manténgalo disponible para pegar más.
Para la segunda pregunta, puede usar <Co>dw
. <Co>
se usa para ejecutar un comando normal sin salir del modo de inserción .
Puede configurar sus propias asignaciones para guardar la escritura, por supuesto. Tengo estos:
nnoremap <leader>d "_d
xnoremap <leader>d "_d
xnoremap <leader>p "_dP
aquí está mi configuración:
# cut to system clipborad in visual mode
vnoremap x "*x
# put from system clipboard
nnoremap p "*p
vnoremap p "*p
nnoremap P "*P
vnoremap P "*P
# yank from system clipboard
nnoremap y "*y
vnoremap y "*y
nnoremap Y "*Y
vnoremap Y "*Y
cuando quieras poner el contenido de otro registro:
:put {register_name}
las siguientes asignaciones producirán:
- d => "eliminar"
- líder d => "cortar"
nnoremap x "_x
nnoremap d "_d
nnoremap D "_D
vnoremap d "_d
nnoremap <leader>d ""d
nnoremap <leader>D ""D
vnoremap <leader>d ""d
Además, es una buena práctica tener la tecla "líder" configurada en coma, por ejemplo:
let mapleader = ","
let g:mapleader = ","
estos 2 fragmentos harán que ", d" sea tu nuevo comando de corte.
Si desea utilizar estas asignaciones junto con una configuración del portapapeles del sistema compartido, consulte más detalles en https://github.com/pazams/d-is-for-delete
yy
Vx
p
Cuando esté en modo visual, x
eliminará la selección, por lo que si desea eliminar una línea completa, primero presione V
para seleccionar la línea en el modo visual y luego presione x
para eliminar la selección.