Kann ich mit vim eine große Datei effektiv öffnen?

17

Manchmal muss ich eine Protokolldatei mit mehreren GB öffnen, jetzt muss ich den Schwanz verwenden, um das passende Teil zu erhalten, aber das ist sehr mühsam.

Kann ich vim verwenden, um es direkt zu öffnen? Derzeit belegt vim viel Speicher, wenn eine große Datei geöffnet wird. Fragen Sie sich nur, warum dies erforderlich ist. Kann eine Option verhindern, dass der Speicher geladen wird?

Carfield Yim
quelle

Antworten:

13

Wenn Sie sich nur eine Datei ansehen möchten, verwenden Sie weniger .

Wenn Sie einen bestimmten Teil der Datei ausschneiden müssen, gehen Sie wie folgt vor (innerhalb von weniger ):

  1. Gehen Sie zur ersten Seite, die Sie interessiert

  2. Drücken Sie die Tasten mund a- das bedeutet: Position a markieren .

  3. Gehen Sie zur letzten Position der Datei, an der Sie interessiert sind

  4. Drücken Sie die Tasten |(Pipe) und a- das bedeutet: Pipe alles zwischen hier und Position a zu einem Befehl

  5. Geben Sie den Befehl ein, an den die Daten gesendet werden sollen. Wenn Sie diese Daten in den Editorpuffer kopieren möchten, verwenden Sie einfach den vim -Befehl (das Minuszeichen als Dateiname bedeutet , dass die zu bearbeitende Datei von stdin gelesen werden soll ).

Wenn Sie wissen, dass Sie alle Daten von einer bestimmten Position bis zum Ende der Datei benötigen, können Sie dies auch tun:

  1. Gehen Sie zur ersten Seite, die Sie interessiert

  2. Drücken Sie die Tasten |(Pipe) und $- das bedeutet: Leiten Sie alles zwischen hier und dem Ende der Datei zu einem Befehl

  3. Geben Sie den Befehl ein, an den die Daten gesendet werden sollen (z . B. cat >/tmp/myfileoder vim -).

ktf
quelle
1
Ich wusste nicht, dass ich lessdas tun könnte. Danke :)
icedwater
4

Schauen Sie sich dies und das an .

Grundsätzlich haben Sie folgende Möglichkeiten:

  1. Probieren Sie das Vim- Skript für große Dateien aus . Es deaktiviert bestimmte Funktionen, um die Reaktionsfähigkeit von Vim beim Bearbeiten großer Dateien zu verbessern.
  2. Teilen Sie die Datei in kleinere Abschnitte auf, bearbeiten Sie den gewünschten Abschnitt und verknüpfen Sie sie wieder miteinander.
Dan Cruz
quelle
3

Ja, Vim kann sehr große Dateien öffnen . Um das Gedächtnis zu bewahren, sollten Sie jedoch einige Dinge beachten:

  • ignorieren Sie den Dateityp (keine Syntaxhervorhebung usw.), obwohl höchstwahrscheinlich keine Syntaxhervorhebung für Protokolldateien vorhanden ist, aber nur um sicherzugehen, dass er diese nicht durchläuft
  • noswapfile (Sie möchten definitiv keine Kopie einer Datei dieser Größe)
  • bufhidden = unload (speichere Speicher, wenn andere Dateien angesehen werden)
  • buftype = nowritefile (ist schreibgeschützt)
  • undolevels = -1 (kein rückgängig machen möglich)

Vielleicht gibt es eine oder zwei Optionen, die ich verpasst habe, aber diese sind bisher in meinem _vimrc enthalten.

Turm
quelle
Beachten Sie, dass (1) es ein Plugin ( vim.org/scripts/script.php?script_id=1506 ) gibt, mit dem Sie mehrere dieser Optionen automatisch aktivieren können, wenn eine große Datei geöffnet wird, und (2) selbst mit diesem Programm Dateien öffnen können, die Sind
Kyle Strand