J'ai un fichier de sauvegarde de base de données MySQL de 100 Mo et j'ai du mal à l'ouvrir dans Vim sur ma machine Linux qui dispose de 16 Go de RAM.
Vim se bloque (au moins inutilisable). C'est quelque chose que je ne comprends pas. J'ai 16 Go de RAM, pourquoi ne puis-je pas charger un fichier de 100 Mo dans un éditeur?
Est-ce à cause de Vim? Je pensais que toute la gestion de la mémoire est gérée par le système d'exploitation.
hexer
.Réponses:
Vim a parfois des problèmes avec les fichiers comportant des lignes particulièrement longues. C'est un éditeur de texte, il est donc conçu pour les fichiers texte, avec des lignes d'une longueur maximale de quelques centaines de caractères.
Un fichier de base de données peut ne pas contenir beaucoup de caractères de nouvelle ligne, il pourrait donc s'agir d'une seule ligne longue de 100 Mo. Vim ne sera pas satisfait de cela, et bien que cela fonctionne probablement, le chargement du fichier risque de prendre un certain temps.
J'ai certainement ouvert des fichiers texte beaucoup plus gros que 100 Mo avec Vim. Le fichier n'a même pas besoin de tenir dans la mémoire en une fois (puisque Vim peut échanger les modifications sur le disque si nécessaire).
la source
set synmaxcol=120
(ou un autre numéro approprié). J'ai remarqué des progrès énormes dans le passé.D'après mon expérience, Vim n'étouffe pas les fichiers volumineux , mais les longues lignes . Utilisez cette commande pour
mysqldump
utiliser des lignes plus courtes au détriment d'un fichier plus volumineux :De plus, vous pouvez ouvrir Vim et lui demander de ne pas analyser votre
.vimrc
fichier ou de charger des plugins avec cette commande:Le chargement de Vim de cette manière utilisera moins de mémoire et ne nécessitera pas que Vim analyse le fichier entier comme le font de nombreux plugins.
la source
"chargez VIM sans .vimrc et plugins (VIM propre), par exemple pour des fichiers énormes
la source
Essayez d'utiliser
less
au lieu devim
si vous voulez voir un fichier volumineux directement. Vim essaie de faire beaucoup de choses différentes lors de son premier chargement - en analysant le fichier (éventuellement en plusieurs passes) pour essayer de déterminer la syntaxe à utiliser, en mettant en évidence la syntaxe et en recherchant des modèles en haut et en bas du fichier. Ensuite, lorsque vous éditez le fichier, vim enregistre les fichiers swap et conserve les arborescences défaites (l'historique des annulations dans vim est une branche, pas linéaire comme dans tout (?) Autre éditeur), et réévalue constamment la coloration syntaxique lorsque le texte change, etc.Rien de tout cela ne justifie nécessairement pourquoi il doit être si inutilisable avec des fichiers géants, mais c'est plutôt une explication de certaines des raisons pour lesquelles c'est.
la source
Vim ne charge pas simplement le fichier tel quel dans la mémoire. Il le convertit en structures internes (lignes, mots, etc.), met en évidence la syntaxe à l'aide d'un langage de script interne, etc. tout cela consomme de la mémoire (beaucoup plus qu'un octet pour un caractère) et du temps CPU.
la source
Vous pouvez essayer de le charger en tant que binaire. J'ai eu de la chance avec ça pour de très gros fichiers non-textuels
Il est également possible que l'IIRC utilise vim comme éditeur hexadécimal, voir: http://usevim.com/2012/06/20/vim-binary-files/
la source
J'espère que votre problème est davantage lié au besoin des fichiers VIM (tels que les fichiers d'échange) que de la RAM.
Dans de nombreux cas, les fichiers temporaires créés par VIM se trouvent dans le même répertoire que le fichier que vous ouvrez. Si tel est le cas pour vous, vous pouvez alors vérifier en vérifiant l'espace disque disponible dans le répertoire en cours.
Heureusement, il existe une bonne documentation sur la manière de spécifier un emplacement différent pour les fichiers d'indexation / swap de VIM:
Vous pouvez également désactiver le fichier d'échange
la source
J'ouvre parfois de grandes sauvegardes de bases de données au format texte .sql. Les fichiers très volumineux, ou les fichiers avec de très longues lignes, semblent souvent mettre longtemps à s'ouvrir dans vim. Cela pourrait être lié au traitement de la syntaxe et à la mise en surbrillance des couleurs, comme mentionné dans les réponses de @zzapper et @demonkoryu.
Une solution rapide pourrait consister à appuyer sur "control-G" pendant le chargement du fichier pour annuler la pré-traitement mettant en surbrillance la syntaxe.
la source