En vim, a menudo me encuentro eliminando (o copiando) grandes bloques de texto. Se pueden contar las líneas de texto y decir (por ejemplo) 50dd
eliminar 50 líneas.
Pero, ¿cómo se eliminaría este gran bloque de texto sin tener que saber cuántas líneas eliminar?
51dd
. Alternativamente, use un comando de movimiento -50d<down arrow>
:set rnu
úsalo y Vim lo hará al instante! La línea en la que se encuentre seguirá estando numerada absolutamente, pero las líneas encima y debajo del cursor se numerarán simétricamente 1, 2, ... (y se actualizarán con el movimiento del cursor, eventos a nivel de archivo, etc.)Respuestas:
No soy vim guru, pero lo que uso en esta circunstancia es el "modo visual". En el modo de comando, escriba
V
(capital). Luego, mueva hacia arriba / abajo para resaltar el bloque que desea eliminar (todos los comandos de movimiento habituales funcionan). Luego quítelo conx
od
.fuente
.vimrc
están haciendo funcionar?Shift
-v
... yo estaba tratando de utilizar laCTRL
clave. Entonces esto funciona y es probablemente la forma más conveniente.CTRL
-v
) y Bloque visual (Shift
-v
).Vaya a la línea de inicio y escriba ma(marque "a"). Luego vaya a la última línea e ingrese d'a(elimine para marcar "a").
Eso eliminará todas las líneas de la actual a la marcada (inclusive). También es compatible con
vi
, así comovim
, en la remota posibilidad de que su entorno no ha sido bendecida con este último.fuente
/var/mail/username
en masa y dejar los últimos correos intactos. Hago una marca, luego entro, por ejemplo,50000
seguido degg
para ir a la línea 50,000, luego borro todas las líneas intermedias. ¡Funciona de maravilla!vim
como herramienta para editar archivos de gigabytesawk
También puede usar el modo visual (algunos comandos también se pueden usar con la opción eliminar) vip vappara seleccionar párrafos, v2appara seleccionar dos párrafos dap, d2aptambién. Puede eliminar dentro de bloques de me
[
]
gustada[Como referencia: los tipos de objetos. De la documentación de vim: sección 4. http://vimdoc.sourceforge.net/htmldoc/visual.html
fuente
dap
es muy fácil de recordar como "eliminar un párrafo"Aquí hay muchas mejores respuestas, pero para completar, mencionaré el método que solía usar antes de leer algunas de las excelentes respuestas mencionadas anteriormente.
Suponga que desea eliminar de las líneas 24-39. Puedes usar el comando ex
También puede tirar de líneas usando
Y encuentre y reemplace justo sobre las líneas 24-39 usando
fuente
Si activa los números de línea a través de
set number
, simplementedNNG
puede eliminar la línea NN de la posición actual. Para que pueda navegar hasta el inicio de la línea que desea eliminar y simplemented50G
suponiendo que es la última línea que desea eliminar.fuente
Depende de lo que sea ese bloque grande . Tal vez solo quieras eliminar un párrafo, en cuyo caso dipsería suficiente.
fuente
Hay varias posibilidades, lo mejor depende del texto en el que trabaje.
Se me ocurren dos posibilidades:
V
,S-V
, ...), seleccione el texto con el movimiento del cursor y pulsed
dap
fuente
Si todo el bloque está visible en la pantalla, puede usar la configuración de número relativo. Ver: ayuda número relativo. Disponible en 7.3
fuente
Puede colocar el cursor al principio o al final del bloque e ingresar al modo visual (shift-v). Luego, simplemente mueva hacia arriba o hacia abajo hasta que se resalte el bloque deseado. Finalmente, copie el texto presionando y o corte el texto presionando d.
fuente
Junto con otros movimientos que ya se mencionan aquí, también hay
/{pattern}<CR>
movimiento, por lo que si sabe que desea eliminar a la línea que contiene foo, puede hacerlodV/foo<CR>
.V
está aquí para forzar el movimiento en línea porque, de forma predeterminada,/
tiene carácter.fuente
Contar líneas es demasiado tedioso para mí, pero contar 'párrafos' no es tan malo. '{' y '}' mueve el cursor a la primera línea vacía antes y después del cursor, respectivamente. Las operaciones de movimiento del cursor se pueden combinar con la eliminación, y varias otras respuestas utilizaron un enfoque similar (dd para una línea, dG para el final del documento, etc.)
Por ejemplo:
Si su cursor comienza sobre el bloque de comentarios, 'd}' elimina el bloque de comentarios y 'd2}' elimina tanto el bloque de comentarios como el bloque de código. Si su cursor comienza debajo del bloque de código, 'd {' elimina el código y 'd2 {' elimina ambos. Por supuesto, puede omitir un bloque moviendo primero el cursor: '{d {' o '} d}'.
Si es coherente con su espacio en blanco, o puede contar los párrafos de un vistazo, esto debería funcionar. El archivo de ayuda de Vim tiene más trucos de cursor si está interesado.
fuente
También puede ingresar un número muy grande y luego presionar
dd
si desea eliminar todas las líneas debajo del cursor.fuente
dG
, lo que se elimina al final del documento, ya que porG
defecto va a la última línea.Eliminar un bloque de texto
Suponiendo que su cursor se sienta al comienzo del bloque:
Explicación
V
/^$<CR>
d
Clave de enlace
Una solución más robusta:
Explicación
:set nowrapscan
D
clave (a los siguientes comandos)::nnoremap D
V
/^\s*$\\|\%$<CR>
d
fuente