¿Por qué Vim puede abrir archivos grandes más rápido que otros editores de texto?

10

Al abrir archivos de registro grandes (bueno, no tan grandes, ¡pero 80mb sigue siendo mucho texto!), Siempre he usado Vim ya que los carga casi al instante. Otros editores de texto como Notepad, Notepad ++, etc. tardarán> 10 segundos en procesar y cargar el archivo. ¿Cuál es la razón para esto? ¿Qué hace que Vim sea tan rápido?

Anónimo
fuente
8
Active el resaltado de sintaxis y se sorprenderá de lo lento que puede ser vim
Marco
11
Para los votantes cercanos: diría que esta pregunta es constructiva, como indica la respuesta, hay técnicas que utiliza Vim que la hacen más eficiente con archivos más grandes que otros editores. Esa es una respuesta concreta, que puede ser respaldada por hechos / referencias. Y no estoy seguro de por qué la gente puede considerar esto localizado; Hay una clara diferencia en cómo los editores manejan los archivos que afectan mucho más que un área geográfica pequeña, un momento específico en el tiempo o una situación extraordinariamente estrecha .
Bob
1
@Bob: no veo cómo la respuesta a esta pregunta resuelve cualquier problema.
Nifle

Respuestas:

16

Hay una multitud de trucos que los editores pueden usar para optimizar el manejo de archivos grandes.

Una es trabajar solo con lo que necesitan. Eso significa no tratar de analizar todo el archivo para cosas como el recuento de líneas, mediciones de ancho, ajuste de palabras, resaltado de sintaxis, validación XML, representación HTML, Deshacer, etc. Existe el complemento LargeFile disponible para Vim que deshabilitará varias características de Vim cuando se abre un archivo "grande" (según lo definido por el usuario). La página Carga más rápida de archivos grandes en el wiki de Vim menciona algunas de las características deshabilitadas: ignorar el tipo de archivo (para resaltar / analizar la sintaxis), deshabilitar deshacer, cambiar al modo de solo lectura. También hay otros cambios, pero parecen estar dirigidos a la conservación de la memoria que a la velocidad.

Otro es el mapeo de memoria. En lugar de leer todo el archivo en la memoria, dígale al sistema operativo subyacente que asigne una vista del archivo directamente en el espacio de la memoria de procesos. No estoy seguro si Vim en particular hace esto, pero otros editores pueden y lo hacen.

Esos son probablemente los 2 más grandes, pero ciertamente hay más.

afrazier
fuente
¿Tiene una referencia para vim usando alguna de estas técnicas?
slhck
No puedo comentar sobre el mapeo de memoria en particular, pero lo primero definitivamente se puede hacer. Editar próximamente.
Afrazier