guardar - vi borrar rango de lineas
¿Cómo puedo eliminar múltiples líneas en vi? (10)
He intentado seguir lo siguiente:
Cómo eliminar texto seleccionado en el editor VI
pero
5dd
da
E492: No es un comando de editor: 5dd
Entonces intenté:
5d
Que solo elimina una sola línea. ¿Cómo puedo eliminar múltiples líneas?
Comandos enumerados para su uso en modo normal (prefijo con : para modo de comando). Probado en Vim.
Por cantidad de línea:
- num d d - eliminará las líneas numéricas DOWN comenzando la cuenta desde la posición actual del cursor (por ejemplo, 5 d d eliminará la línea actual y 4 líneas debajo de ella => borrará la línea actual y ( num-1 ) líneas debajo de ella )
- num d k - eliminará las líneas numéricas ARRIBA de la línea actual y la línea actual misma (p. ej., 3 d k eliminará la línea actual y 3 líneas encima de ella => eliminará la línea actual y las líneas numéricas encima )
Por números de línea:
- d num G - eliminará las líneas de la línea actual (inclusive) hasta el número de línea num (inclusive) (por ejemplo, si el cursor está actualmente en la línea 5 d 2 G eliminará las líneas 2-5 inclusive)
- d númg g - eliminará las líneas de la línea actual (inclusive) ABAJO al número de línea num (inclusive) (por ejemplo, si el cursor está actualmente en la línea 2 d 6 g g eliminará las líneas 2-6 inclusive)
Encuentro esto más fácil
- Ir al modo VISUAL Shift + v
- Seleccionar líneas
- d para borrar
https://superuser.com/questions/170795/how-can-i-select-and-delete-lines-of-text-in-vi
Para eliminar todas las líneas use - ESC gg dG Para borrar algunas líneas digamos 5 luego use ESC 5dd
Parece que estás ingresando los comandos en modo comando (también conocido como "Modo Ex"). En ese contexto :5d
eliminaría la línea número 5, nada más. Para que 5dd
funcione según lo previsto, es decir, elimine cinco líneas consecutivas empezando por el cursor, ingréselo en modo normal y no prefija los comandos con :
Presiona la tecla Esc para asegurarte de que no estás en un modo de edición. Coloque el cursor en la primera línea para eliminar. Ingrese ": 5dd". La línea actual y las siguientes cuatro líneas deberían eliminarse.
Alternativamente, si tiene activada la numeración de líneas ...
Presiona la tecla Esc para asegurarte de que no estás en un modo de edición. Ingrese ": #, # d" donde ''#'' representa los números de línea iniciales y finales que se eliminarán.
Puede eliminar varias líneas (rango) si conoce los números de línea:
:[start_line_no],[end_line_no]d
Nota: d significa eliminar
dónde,
start_line_no es la línea inicial no que desea eliminar y end_line_no es la línea final no que desea eliminar. Las líneas entre el inicio y el final, incluido el inicio y el final, se eliminarán.
P.ej:
:45,101d
Las líneas entre 45 y 101, incluyendo 45 y 101 serán eliminadas.
Si desea eliminar un rango DESPUÉS de un disparador de línea específico, puede usar algo como esto
:g/^TMPDIR/ :.,+11d
Eso borra 11 líneas (inclusive) después de cada encuentro de ^TMPDIR
.
Si prefiere un método de modo no visual y reconoce los números de línea, me gustaría sugerirle otra manera directa.
Ejemplo
Quiero borrar el texto de la línea 45 a la línea 101.
Mi método sugiere que escriba un comando debajo en modo comando:
45Gd101G
Se lee:
Vaya a la línea 45 (
45G
) y luego borre el texto (d
) de la línea actual a la línea 101 (101G
).
Tenga en cuenta que en vim
puede usar gg
en lugar de G
Compare con la respuesta de @Bonnie Varghese que es:
:45,101d[enter]
El comando de arriba de su respuesta requiere 9 veces tipear incluyendo enter , donde mi respuesta requiere de 8 a 10 tipeos. Por lo tanto, la velocidad de mi método es comparable.
Personalmente, prefiero 45Gd101G
sobre :45,101d
porque me gusta mantener la sintaxis del comando vi, en este caso es:
+---------+----------+--------------------+
| syntax | <motion> | <operator><motion> |
+---------+----------+--------------------+
| command | 45G | d101G |
+---------+----------+--------------------+
d5d "corta" cinco líneas
Normalmente solo lanzo el número en el medio como:
d7l = borrar 7 letras
es dxd, no ddx
si desea eliminar 5 líneas, cursor al principio de la primera línea para eliminar y d5d