J'ai essayé d'ouvrir un énorme fichier (~ 2 Go) dans VIM mais cela s'est étouffé. Je n'ai pas vraiment besoin d'éditer le fichier, il suffit de sauter efficacement.
Comment puis-je travailler avec des fichiers très volumineux dans VIM?
vim
large-files
hoju
la source
la source
:set binary
abord ...Réponses:
J'avais un fichier de 12 Go à éditer aujourd'hui. Le plugin vim LargeFile ne fonctionnait pas pour moi. Il a encore utilisé toute ma mémoire et a ensuite imprimé un message d'erreur :-(. Je ne pouvais pas utiliser hexedit pour l'un ou l'autre, car il ne peut rien insérer, juste écraser. Voici une approche alternative:
Vous divisez le fichier, modifiez les parties, puis vous le recombinez. Cependant, vous avez toujours besoin de deux fois plus d'espace disque.
Grep pour quelque chose entourant la ligne que vous souhaitez modifier:
Extrayez cette plage du fichier. Dites que les lignes que vous souhaitez modifier se trouvent aux lignes 4 et 5. Puis faites:
-n
option est requise pour supprimer le comportement par défaut de sed pour tout imprimer4,5p
imprime les lignes 4 et 55q
abandonne sed après la ligne de traitement 5Modifiez à l'
SMALLPART
aide de votre éditeur préféré.Combinez le fichier:
HUGEFILE.new
sera maintenant votre fichier édité, vous pouvez supprimer l'originalHUGEFILE
.la source
C'est une question récurrente depuis de nombreuses années. (Les chiffres changent constamment, mais le concept est le même: comment afficher ou modifier des fichiers plus volumineux que la mémoire?)
De toute évidence,
more
ouless
sont de bonnes approches pour simplement lire les fichiers ---less
même des offresvi
comme des raccourcis clavier pour le défilement et la recherche.Une recherche Freshmeat sur «gros fichiers» suggère que deux éditeurs seraient particulièrement adaptés à vos besoins.
L'un serait: lfhex ... un éditeur hexadécimal de gros fichiers (qui dépend de Qt). Celui-là, évidemment, implique l'utilisation d'une interface graphique.
Une autre semble convenir à une utilisation en console: hed ... et elle prétend avoir une
vim
interface de type-like (y compris unex
mode?).Je suis sûr que j'ai vu d'autres éditeurs pour Linux / UNIX capables de parcourir des fichiers sans charger leur intégralité en mémoire. Cependant, je ne me souviens d'aucun de leurs noms. Je fais de cette réponse une entrée "wiki" pour encourager les autres à ajouter leurs liens vers ces éditeurs. (Oui, je connais les moyens de contourner le problème en utilisant
split
etcat
; mais je pense aux éditeurs, en particulier aux éditeurs de console / curses qui peuvent se passer de cela et nous faire gagner du temps / des latences et de l'espace disque que ces approches impliquent) .la source
Comme vous n'avez pas besoin de modifier le fichier:
view
(ouvim -R
) devrait fonctionner raisonnablement bien sur des fichiers volumineux.more
ouless
la source
view
(juste essayé et chronométré). Certes, ce n'est pas exactement instantané, mais cela fonctionne.J'ai écrit un petit script basé sur la réponse de Florian qui utilise nano (mon éditeur préféré):
Utilisez-le comme ceci:
Dans cet exemple, nano ouvrira les lignes 3 à 8, vous pouvez les modifier, et lorsque vous enregistrez et quittez, ces lignes dans l'énorme fichier seront automatiquement écrasées par vos lignes enregistrées.
la source
J'ai eu le même problème, mais c'était un vidage mysql de 300 Go et je voulais me débarrasser de
DROP
et changerCREATE TABLE
enCREATE TABLE IF NOT EXISTS
donc je ne voulais pas exécuter deux invocations desed
. J'ai écrit ce script Ruby rapide pour duper le fichier avec ces modifications:Invoqué comme
la source
chmod +x mreplace.rb
abord, vous pouvez aussi simplementruby mreplace.rb ..
Pour les gros one-liners (imprime les caractères de
1
à99
):la source
Il est déjà tard, mais si vous souhaitez simplement naviguer dans le fichier sans le modifier, vous
cat
pouvez également faire le travail.ou bien simple:
la source
cat
le fait de commencer par le fichier est incroyablement stupide, car cela signifie soit que le fichier serait entièrement en mémoire (doncless
peut rechercher le fichier) ou qu'il ne peut pas être recherché du tout;cat
donne juste un flux de sortie statique.emacs fonctionne très bien avec des fichiers dans les 100 mégaoctets, je l'ai utilisé sur des fichiers journaux sans trop de problèmes.
Mais généralement, lorsque j'ai une sorte de tâche d'analyse, je trouve que l'écriture d'un script perl est un meilleur choix.
la source
Vieux fil. Mais néanmoins (jeu de mots :)).
less fonctionne efficacement si vous ne voulez pas modifier et simplement regarder autour de vous ce qui est le cas pour examiner d'énormes fichiers journaux.
Rechercher dans moins d'œuvres comme vi
Mieux encore, il est disponible par défaut sur la plupart des distributions. Ce ne sera donc pas non plus un problème pour l'environnement de production.
la source
c'est vieux mais, utilisez nano, vim ou gvim
la source