He intentado seguir lo siguiente:
Cómo borrar el 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 varias líneas?
He intentado seguir lo siguiente:
Cómo borrar el 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 varias líneas?
Respuestas:
Parece que está 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 5dd
que funcione según lo previsto, es decir, elimine cinco líneas consecuentes que comienzan en el cursor, ingréselo en modo normal y no prefija los comandos con :
.
Esto me parece más fácil
/superuser/170795/how-can-i-select-and-delete-lines-of-text-in-vi
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 que no desea eliminar y end_line_no es la línea final que no desea eliminar. Las líneas entre el inicio y el final, incluidos 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 borradas.
$
para denotar la última línea del archivo. Por :45,$d
lo tanto , eliminaría todas las líneas desde 45 hasta el final.
/<\/div>/
:.,[end_line_no]d
Comandos enumerados para su uso en modo normal (prefijo con :para modo de comando).
Probado en Vim.
Por cantidad de línea:
Por números de línea:
Backwards range given, OK to swap (y/n)?
Si prefiere un método de modo no visual y reconoce los números de línea, me gustaría sugerirle otra forma directa.
Ejemplo
Quiero eliminar texto de la línea 45 a la línea 101.
Mi método le sugiere que escriba un comando a continuación en modo comando:
45Gd101G
Se lee:
Vaya a la línea 45 (
45G
) y luego elimine el texto (d
) de la línea actual a la línea 101 (101G
).
Tenga en cuenta vim
que puede utilizar gg
en lugar de G
.
Compare con la respuesta de @Bonnie Varghese que es:
:45,101d[enter]
El comando anterior de su respuesta requiere escribir 9 veces enter, incluido , donde mi respuesta requiere escribir 8-10 veces. Por lo tanto, la velocidad de mi método es comparable.
En lo personal, yo prefiero 45Gd101G
más :45,101d
porque me gusta que se adhieren a la sintaxis de la orden del VI, en este caso es:
+---------+----------+--------------------+
| syntax | <motion> | <operator><motion> |
+---------+----------+--------------------+
| command | 45G | d101G |
+---------+----------+--------------------+
Presione la Esctecla para asegurarse de que no está en modo de edición. Coloque el cursor en la primera línea que se eliminará. Introduzca :5dd
. La línea actual y las siguientes cuatro líneas deben eliminarse.
Alternativamente, si tiene activada la numeración de líneas ...
Presione la Esctecla para asegurarse de que no está en modo de edición. Ingrese :#,#d
donde '#' representa los números de línea inicial y final que se eliminarán.
Si desea eliminar un rango DESPUÉS de un disparador de línea específico, puede usar algo como esto
:g/^TMPDIR/ :.,+11d
Eso elimina 11 líneas (inclusive) después de cada encuentro de ^TMPDIR
.
Para eliminar todas las líneas, use: ESC gg dG Para eliminar algunas líneas, digamos 5 y luego use ESC 5dd
Se podría hacer de la siguiente manera ...