Gibt es Editoren, die Textdateien mit mehreren Gigabyte bearbeiten können, indem sie möglicherweise nur kleine Teile gleichzeitig in den Speicher laden? Es scheint nicht so, als ob Vim damit umgehen kann = (
Gibt es Editoren, die Textdateien mit mehreren Gigabyte bearbeiten können, indem sie möglicherweise nur kleine Teile gleichzeitig in den Speicher laden? Es scheint nicht so, als ob Vim damit umgehen kann = (
Antworten:
Wenn Sie auf * nix (und vorausgesetzt , Sie nur Teile der Datei (und selten) zu modifizieren haben), können Sie die Dateien aufgeteilt (mit dem split
Befehl), bearbeiten sie einzeln (mit awk
, sed
oder so ähnlich) und verketten sie , nachdem Sie sind fertig.
cat file2 file3 >> file1
Strg-C stoppt das Laden der Datei. Wenn die Datei klein genug ist, haben Sie möglicherweise das Glück gehabt, den gesamten Inhalt geladen und alle Schritte nach dem Laden beendet zu haben. Stellen Sie sicher, dass die gesamte Datei geladen wurde, wenn Sie diesen Tipp verwenden.
Vim kann ziemlich gut mit großen Dateien umgehen. Ich habe gerade eine 3,4-GB-Datei bearbeitet, Zeilen gelöscht usw. Drei Dinge, die Sie beachten sollten:
:115355
Wenn Sie tippen, gelangen Sie direkt zur Zeile 115355, die in diesen großen Dateien viel schneller ausgeführt wird. Vim scheint jedes Mal, wenn ein Zeilenpuffer geladen wird, von vorne zu scannen, und wenn Sie Strg-F gedrückt halten, um die Datei zu durchsuchen, wird es gegen Ende sehr langsam.Hinweis - Wenn Ihre Vim-Instanz schreibgeschützt ist, weil Sie Strg-C gedrückt haben, hat Vim möglicherweise nicht die gesamte Datei in den Puffer geladen. In diesem Fall wird beim Speichern nur das gespeichert, was sich im Puffer befindet, nicht die gesamte Datei . Sie können schnell mit einem überprüfen G
, um zum Ende zu springen, um sicherzustellen, dass alle Zeilen in Ihrer Datei vorhanden sind.
Es können Plugins sein, die dazu führen, dass es erstickt. (Syntaxhervorhebung, Falten usw.)
Sie können vim ohne Plugins ausführen.
vim -u "NONE" hugefile.log
Es ist minimalistisch, aber es gibt Ihnen zumindest die vi-Bewegungen, die Sie gewohnt sind.
syntax off
ist eine andere offensichtliche. Beschneiden Sie Ihre Installation und beschaffen Sie sich das, was Sie brauchen. Sie finden heraus, wozu es in der Lage ist und ob Sie eine Aufgabe auf andere Weise erledigen müssen.
Eine leichte Verbesserung gegenüber der Antwort von @Al pachio mit der Split + Vim-Lösung. Sie können die Dateien mit einem Glob einlesen, indem Sie Dateiblöcke effektiv als Puffer verwenden, z
$ split -l 5000 myBigFile
xaa
xab
xac
...
$ vim xa*
#edit the files
:nw #skip forward and write
:n! #skip forward and don't save
:Nw #skip back and write
:N! #skip back and don't save
Vielleicht möchten Sie dieses VIM-Plugin ausprobieren, das bestimmte Vim-Funktionen im Interesse der Geschwindigkeit beim Laden großer Dateien deaktiviert.
Ich habe versucht, dies zu tun, hauptsächlich mit Dateien um 1 GB, als ich eine kleine Änderung an einem SQL-Dump vornehmen musste. Ich bin auf Windows, was es sehr schmerzhaft macht. Es ist ernsthaft schwierig.
Die offensichtliche Frage ist: "Warum müssen Sie?" Ich kann Ihnen aus Erfahrung sagen, dass Sie dies mehr als einmal versuchen müssen. Sie möchten wahrscheinlich wirklich versuchen, einen anderen Weg zu finden.
Wie machst du das? Es gibt einige Möglichkeiten, wie ich es gemacht habe. Manchmal kann ich vim oder nano dazu bringen, die Datei zu öffnen, und ich kann sie verwenden. Das ist ein sehr harter Schmerz, aber es funktioniert.
Wenn das nicht funktioniert (wie in Ihrem Fall), haben Sie nur wenige Optionen. Sie können ein kleines Programm schreiben, um die erforderlichen Änderungen vorzunehmen (z. B. Suchen und Ersetzen). Sie könnten ein Befehlszeilenprogramm verwenden, das dies möglicherweise kann (möglicherweise kann es mit sed / awk / grep / etc ausgeführt werden?)
Wenn diese nicht funktionieren, können Sie die Datei jederzeit in Blöcke aufteilen (so etwas wie Aufteilen ist die naheliegende Wahl, aber Sie können Kopf / Schwanz verwenden, um das gewünschte Teil zu erhalten) und dann die Teile bearbeiten, die es benötigen. und später neu kombinieren.
Vertrauen Sie mir, versuchen Sie einen anderen Weg zu finden.
Ich denke, es ist ziemlich üblich, dass Hex-Editoren große Dateien verarbeiten. Unter Windows verwende ich HxD , das behauptet, Dateien mit bis zu 8 EB (8 Milliarden Gigabyte) zu verarbeiten.
hexedit
Ich verwende vim 7.3.3 unter Win7 x64 mit dem LargeFile-Plugin von Charles Campbell , um Multi-Gigabyte- Nur -Text-Dateien zu verarbeiten. Es funktioniert wirklich gut.
Ich hoffe du kommst richtig.
Wow, ich habe es nie geschafft, Vim zum Würgen zu bringen, selbst mit ein oder zwei GB. Ich habe gehört, dass UltraEdit (unter Windows) und BBEdit (unter Macs) noch besser für noch größere Dateien geeignet sind, habe aber keine persönlichen Erfahrungen.
In der Vergangenheit habe ich mit diesem Tool eine 3-Gig-Datei geöffnet: http://csved.sjfrancke.nl/
Persönlich mag ich UltraEdit . Hier ist ihr kleines Spiel mit großen Dateien .
Das einzige, was ich für so etwas verwenden konnte, ist mein Lieblings-Mac-Hex-Editor 0XED. Dies war jedoch bei Dateien der Fall, die ich mit zehn Megabyte als groß betrachtete. Ich bin mir nicht sicher, wie weit es gehen wird. Ich bin mir ziemlich sicher, dass nur Teile der Datei gleichzeitig in den Speicher geladen werden.