Ich habe eine 100-MB-MySQL-Datenbank-Sicherungsdatei und habe Probleme, sie in Vim auf meiner Linux-Box mit 16 GB RAM zu öffnen.
Vim hängt nur (zumindest unbrauchbar). Das verstehe ich nicht. Ich habe 16 GB RAM. Warum kann ich keine 100-MB-Datei in einen Editor laden?
Liegt es an Vim? Ich dachte, die gesamte Speicherverwaltung wird vom Betriebssystem übernommen.
hexer
.Antworten:
Vim hat manchmal Probleme mit Dateien, die ungewöhnlich lange Zeilen haben. Da es sich um einen Texteditor handelt, ist er für Textdateien mit Zeilenlängen von in der Regel höchstens einigen hundert Zeichen konzipiert.
Eine Datenbankdatei enthält möglicherweise nicht viele Zeilenumbrüche. Es ist daher denkbar, dass es sich um eine einzelne Zeile mit einer Länge von 100 MB handelt. Vim wird damit nicht zufrieden sein, und obwohl es wahrscheinlich funktionieren wird, kann es ziemlich lange dauern, bis die Datei geladen ist.
Ich habe mit Vim sicherlich Textdateien geöffnet , die viel größer als 100 MB sind. Die Datei muss nicht einmal auf einmal in den Arbeitsspeicher passen (da Vim Änderungen nach Bedarf auf die Festplatte übertragen kann).
quelle
set synmaxcol=120
(oder einer anderen geeigneten Anzahl) eine Leistungssteigerung auftreten . Ich habe in der Vergangenheit große Geschwindigkeitssteigerungen festgestellt.Meiner Erfahrung nach verschluckt sich Vim nicht an großen Dateien , sondern an langen Warteschlangen . Verwenden Sie diesen Befehl,
mysqldump
um kürzere Zeilen auf Kosten einer größeren Datei zu verwenden :Zusätzlich können Sie Vim öffnen und es bitten, Ihre
.vimrc
Datei nicht zu analysieren oder Plugins mit diesem Befehl zu laden:Wenn Sie Vim auf diese Weise laden, wird weniger Speicherplatz benötigt, und es ist nicht erforderlich, dass Vim die gesamte Datei analysiert, wie dies bei vielen Plugins der Fall ist.
quelle
msgstr "VIM ohne .vimrc und Plugins (sauberes VIM) laden, zB für GROSSE Dateien
quelle
Verwenden Sie
less
statt,vim
wenn Sie eine große Datei direkt anzeigen möchten. Vim versucht beim ersten Laden, eine Menge verschiedener Aufgaben zu erledigen: Durchsuchen der Datei (möglicherweise in mehreren Durchläufen), um festzustellen, welche Syntax verwendet werden soll, und Syntaxhervorhebung durchzuführen und nach Modelines oben und unten in der Datei zu suchen. Während Sie die Datei bearbeiten, speichert vim Swap-Dateien und behält die Undo-Bäume bei (der Undo-Verlauf in vim verzweigt sich, nicht linear wie in jedem (?) Anderen Editor), und überprüft die Syntaxhervorhebung ständig, wenn sich der Text ändert usw.Nichts davon ist notwendigerweise eine Rechtfertigung dafür, warum es mit riesigen Dateien so unbrauchbar sein muss, aber es ist eher eine Erklärung für einige der Gründe, warum es so ist.
quelle
Vim lädt die Datei nicht einfach so wie sie ist in den Speicher. Es konvertiert es in interne Strukturen (Zeilen, Wörter usw.), führt Syntaxhervorhebungen mithilfe einer internen Skriptsprache durch und so weiter. All dies verbraucht Speicher (viel mehr als ein Byte für ein Zeichen) und CPU-Zeit.
quelle
Sie können versuchen, es als Binärdatei zu laden. Ich hatte Glück damit für wirklich große Nicht-Text-Dateien
Es ist auch möglich, vim als Hex-Editor zu verwenden. Siehe: http://usevim.com/2012/06/20/vim-binary-files/
quelle
Hoffentlich hat Ihr Problem mehr mit VIMs zu tun, die für temporäre Dateien (wie zum Beispiel Swap) mehr als RAM benötigen.
In vielen Fällen befinden sich die von VIM erstellten temporären Dateien im selben Verzeichnis wie die Datei, die Sie öffnen. Wenn dies bei Ihnen der Fall ist, können Sie dies überprüfen, indem Sie den verfügbaren Speicherplatz im aktuellen Verzeichnis überprüfen.
Zum Glück gibt es eine gute Dokumentation, wie Sie einen anderen Speicherort für die Index- / Auslagerungsdateien von VIM angeben können:
Sie können die Auslagerungsdatei auch deaktivieren
quelle
Ich öffne gelegentlich große Datenbanksicherungen im .sql-Textformat. Sehr große Dateien oder Dateien mit sehr langen Zeilen scheinen manchmal lange zu dauern, bis sie in vim geöffnet werden. Dies könnte mit der Syntaxverarbeitung und der Hervorhebung von Farben zusammenhängen, wie in den Antworten von @zzapper und @demonkoryu erwähnt.
Eine schnelle Problemumgehung kann darin bestehen, während des Ladens der Datei "Strg-G" zu drücken, um die Syntaxhervorhebung abzubrechen.
quelle