¿Qué sucede si uso vi en archivos grandes?

16

Aunque se nos indicó que no lo hiciéramos, un colega mío usó vi para ver un archivo de texto grande (server.log 3.5 GB). Esto llenó / var / tmp y causó algunos problemas en el servidor.

¿Qué causó esto? ¿Por qué no deberíamos usar vi para archivos grandes?

atripathi
fuente
3
vi(o vimpara el caso) es muy lento en archivos grandes e incluso puede ser inutilizable si no hay muchos extremos de línea. Además, el archivo debe caber en la memoria. Úselo lesspara archivos grandes, es mucho más rápido y a menudo suficiente para leer / ver archivos de registro.
Marco
@Marco ¿Por qué no ponerlo como respuesta?
Bernhard
1
porque no es la respuesta a la pregunta, sino un comentario, la pregunta es "¿Qué causó esto? ¿Por qué no deberíamos usar vi para archivos grandes?"
Kiwy
mira el comentario con mi respuesta.
rɑːdʒɑ

Respuestas:

7

El directorio predeterminado (/ var / tmp) para el búfer de edición vi necesita un espacio equivalente al doble del tamaño del archivo con el que está trabajando, porque vi usa las líneas adicionales para la manipulación del búfer.

Si el directorio / var / tmp no tiene suficiente espacio para el búfer de edición (por ejemplo, está trabajando con un archivo grande o el sistema se está quedando sin espacio

Algunas veces puede recibir, recibirá el siguiente mensaje de error como este también

Not enough space in /var/tmp.

Puede leer sobre cómo solucionar esto aquí: http://kb.iu.edu/data/akqv.html

rɑːdʒɑ
fuente
"El búfer de edición vi necesita un espacio equivalente al doble del tamaño del archivo con el que está trabajando" ¿Fuente?
atripathi
1
Hace mucho tiempo leí de kb.iu.edu/data/akqv.html . así que te lo
di
20

Vim no fue diseñado para archivos grandes. Tiene ciertas características que ralentizan drásticamente la experiencia del usuario. Por ejemplo, carga el archivo en la memoria, lo que básicamente limita la edición de archivos más pequeños que el tamaño de la memoria. Además, características como el resaltado de sintaxis, el intercambio de archivos y el deshacer son muy ineficientes con archivos grandes y ralentizan aún más. Otro problema es que vimno se esperan colas demasiado largas. Si un archivo contiene pocos caracteres de nueva línea vimqueda inutilizable.

Dicho esto, hay complementos como vim-largefile que cambian configuraciones particulares para ser más eficientes con archivos grandes, pero al final vimnunca serán rápidos cuando le arrojas varios GiBs.

La conclusión es que no lo use vimen archivos grandes. Si desea ver (en contraste con editar) archivos grandes, use less. Si desea buscar un patrón, use una barra para iniciar una búsqueda de un patrón:

/<pattern>  # forward search
?<pattern>  # backward search

Si desea filtrar la salida, utilice un ampersand:

&<pattern>

Luego comience la salida continua usando shift-f. Puede salir de la pantalla de salida continua con ctrl-cy refinar o cancelar su patrón de filtro o iniciar una búsqueda.

Para editar archivos grandes, use herramientas como sed, son eficientes y están diseñadas para este mismo propósito.

Marco
fuente