Pourquoi Vim peut-il ouvrir des fichiers volumineux plus rapidement que certains autres éditeurs de texte?

10

Lors de l'ouverture de gros fichiers journaux (enfin, pas si gros, mais 80 Mo, c'est toujours beaucoup de texte!), J'ai toujours utilisé Vim car il les charge presque instantanément. Les autres éditeurs de texte comme le Bloc-notes, Notepad ++, etc., mettent> 10 secondes pour traiter et charger le fichier. Quelle est la raison pour ça? Qu'est-ce qui rend Vim si rapide?

Anonyme
la source
8
Activez la coloration syntaxique et soyez surpris de la lenteur avec laquelle vim peut devenir
Marco
11
Aux électeurs proches: Je dirais que cette question est constructive - comme l'indique la réponse, il existe des techniques utilisées par Vim qui le rendent plus efficace avec des fichiers plus volumineux que certains autres éditeurs. C'est une réponse concrète, qui peut être appuyée par des faits / références. Et je ne sais pas pourquoi les gens peuvent considérer cela comme localisé; il y a une différence claire dans la façon dont les éditeurs traitent les fichiers qui affectent beaucoup plus qu'une petite zone géographique, un moment spécifique ou une situation extraordinairement étroite .
Bob
1
@Bob - Je ne vois pas comment la réponse à cette question résout les problèmes.
Nifle

Réponses:

16

Il existe une multitude de trucs que les éditeurs peuvent utiliser pour optimiser le traitement des gros fichiers.

L'une consiste à ne travailler qu'avec ce dont ils ont besoin. Cela ne signifie pas essayer d'analyser le fichier entier pour des choses telles que le comptage des lignes, des mesures de largeur, enveloppe de texte, mise en évidence de la syntaxe, la validation XML, le rendu HTML, Annuler, etc. Il est le Largefile Plugin disponible pour VIM qui désactivera un certain nombre de fonctionnalités de Vim lorsqu'un fichier "grand" (tel que défini par l'utilisateur) est ouvert. La page de chargement plus rapide de fichiers volumineux sur le wiki de Vim mentionne certaines des fonctionnalités désactivées: ignorer le type de fichier (pour la mise en évidence / l'analyse syntaxique), désactiver l'annulation, passer en mode lecture seule. Il y a aussi d'autres changements, mais ils semblent viser la conservation de la mémoire plutôt que la vitesse.

Un autre est le mappage de la mémoire. Au lieu de lire l'intégralité du fichier en mémoire, indiquez au système d'exploitation sous-jacent de mapper une vue du fichier directement dans l'espace mémoire du processus. Je ne sais pas si Vim en particulier le fait, mais d'autres éditeurs le peuvent et le font.

Ce sont probablement les 2 plus gros, mais il y en a certainement plus.

afrazier
la source
Avez-vous une référence pour vim utilisant l'une de ces techniques?
slhck
Je ne peux pas commenter le mappage de la mémoire en particulier, mais le premier peut certainement être fait. Modifier à venir.
afrazier