¿Cómo puedo eliminar todas las líneas de un archivo usando vi?
Por el momento lo hago usando algo como esto para eliminar todas las líneas de un archivo:
echo > test.txt
¿Cómo puedo eliminar todas las líneas usando vi
?
Nota:
Usarlo dd
no es una buena opción. Puede haber muchas líneas.
Respuesta1
en vi
hacer
:1,$d
para eliminar todas las líneas.
Introduce :
un comando (y mueve el cursor hacia abajo).
Es una indicación de en qué líneas debería funcionar 1,$
el siguiente comando ( ). d
En este caso, el rango desde la línea uno hasta la última línea (indicado por $
, por lo que no es necesario saber el número de líneas del documento).
La final d
significa eliminar las líneas indicadas.
Hay una forma más corta ( :%d
) pero nunca la uso. Se :1,$d
puede "adaptar" más fácilmente, por ejemplo, :4,$-2d
dejando solo las 3 primeras y las 2 últimas líneas, eliminando el resto.
Respuesta2
En vi yo uso
:%d
dónde
:
le dice a vi que entre en modo comando%
significa todas las lineasd
: borrar
En la línea de comando,
> test.txt
lo haré también.
¿Cuál es el problema con dd?
dd if=/dev/null of=test.txt
dónde
/dev/null
es un archivo especial de 0 bytesif
es el archivo de entradaof
es el archivo de salida
Respuesta3
Te recomiendo que hagas esto (debería funcionar en cualquier shell compatible con POSIX):
> test.txt
Si realmente quieres hacerlo con vi, puedes hacer:
- 1G (ir a la primera línea)
- dG (eliminar hasta la última línea)
Respuesta4
Si su cursor está en la primera línea (si no, escriba: gg
o 1G
), entonces puede usar dG
. Eliminará todas las líneas desde la línea actual hasta el final del archivo. Entonces, para asegurarse de eliminar todas las líneas del archivo, puede mezclar ambas, lo que sería: ggdG
(mientras está en modo comando).
O %d
en modo Ex, ejemplo de línea de comandos: vim +%d foo.bar
.
Relacionado:¿Cómo puedo eliminar en VIM todo el texto desde la línea actual hasta el final del archivo?