Vaciar un archivo en su sitio es una tarea común en Linux: recortar un log, resetear un config o dejar limpio un dataset de pruebas. Hacerlo dentro del editor suele ser más seguro que borrar y volver a crear el archivo, porque conserva permisos, propietario y enlaces (y evita problemas si hay procesos que lo tienen abierto).
En esta guía verás:
- Varias formas de vaciar un archivo con vi/vim
- Por qué es más seguro vaciar que borrar y crear
- Cómo guardar, salir o salir sin guardar después
¿Cuándo conviene vaciar un archivo y no borrarlo?
- Logs grandes/activos: servicios pueden tener el archivo abierto; borrarlo puede causar errores o mantener espacio ocupado hasta reiniciar el proceso. Vaciarlo evita ambos problemas.
- Temporales/cache: resetea el contenido entre ejecuciones sin cambiar ruta, permisos ni propietario.
- Reinicio de configuraciones: a veces es más limpio vaciar y pegar una plantilla buena que gestionar ficheros nuevos, enlaces y ACLs.
- Desarrollo/pruebas: garantiza que una ejecución no contamina a la siguiente dejando entrada/salida en blanco.
¿Por qué no borrar y recrear?
Borrar resetea permisos y propietario, puede romper enlaces (duros o simbólicos) y descolocar procesos que aún usan el archivo. Vaciar en sitio evita todo eso.
(Opcional) Crea un archivo de práctica
tr -dc '[:alnum:]\n' < /dev/urandom | head -c 1024 > /tmp/tmp.abc
vim /tmp/tmp.abc
Lenguaje del código: JavaScript (javascript)
Método 1 — ggdG (modo Normal)
Secuencia de tres órdenes:
gg
→ ir al principio del archivod
→ operador borrar (espera un movimiento)G
→ ir al final del archivo
Juntas, ggdG
= “borra del principio al final”.
Pasos
- Abre el archivo:
vim tu_archivo.txt
- Pulsa Esc para asegurar modo Normal
- Teclea ggdG (sin Enter) → el buffer queda vacío
- Pulsa i para entrar en modo Inserción si quieres escribir
- Guarda/sal y listo (ver abajo)
Método 2 — :%d (modo Ex / línea de comandos)
:%d
borra todo el buffer con un comando Ex:
:
→ entra en modo línea de comandos%
→ todo el archivod
→ borrar
Pasos
vim tu_archivo.txt
- Esc para estar en modo Normal
- Escribe
:%d
y Enter → archivo vacío - i si quieres insertar contenido nuevo
- Guarda/sal según necesites
Truco: en archivos muy grandes,
:%d
suele ser levemente más rápido porque es una única orden Ex.
Guardar y salir (elige una)
- Guardar sin salir:
- Esc,
:w
Enter
- Esc,
- Guardar y salir:
- Esc,
:wq
Enter - o ZZ (mayúsculas) en modo Normal
- Esc,
- Salir sin guardar (descartar cambios):
- Esc,
:q!
Enter
- Esc,
Chuleta rápida
Comando | Qué hace | Notas |
---|---|---|
ggdG | Borra todo (modo Normal) | Sin Enter |
:%d | Borra todo (modo Ex) | :%d + Enter |
dd | Borra la línea actual | Con número repite: 5dd |
u | Deshacer último cambio | Pulsa varias veces para más |
:q! | Salir sin guardar | Descarta cambios |
:wq / ZZ | Guardar y salir | ZZ solo en modo Normal |
Preguntas frecuentes
¿Cómo borro una sola línea en lugar de todo?
Usa dd
en la línea deseada. Para varias líneas, antepone un número (p. ej., 10dd
).
¿Puedo deshacer haber borrado todo?
Sí. Pulsa u (deshacer). Si usaste ggdG
o :%d
, un u trae de vuelta el contenido.
¿Diferencia entre ggdG
y :%d
?
Ambos vacían el archivo. ggdG
es movimiento+operador en modo Normal; :%d
es un único comando en modo Ex. En ficheros enormes, :%d
suele ser algo más rápido.
¿Cómo vaciar y salir sin tocar el archivo en disco?
Si vaciaste por error, sal con :q!
(no guarda y el archivo en disco queda igual).
¿Hay forma de truncar sin abrir Vim?
Sí, desde shell:
: > archivo # POSIX, redirección nula
truncate -s 0 archivo
> archivo # redirección en bash/ksh
Lenguaje del código: PHP (php)
Conservan permisos y propietario y dejan el archivo en 0 bytes al instante.
Notas finales
Una vez interiorizados, ggdG
y :%d
son rápidos, seguros y mantienen la metadata del archivo: perfectos para logs, configs y artefactos de prueba. Si automatizas, el truncado desde shell (: > archivo
o truncate -s 0
) también es fiable y fácil de scriptar.