Was passiert, wenn ich vi für große Dateien verwende?

16

Obwohl wir angewiesen wurden, dies nicht zu tun, verwendete ein Kollege von mir vi, um eine große Textdatei (server.log 3.5 GB) anzuzeigen. Dies füllte / var / tmp und verursachte einige Probleme auf dem Server.

Was hat das verursacht? Warum sollten wir vi nicht für große Dateien verwenden?

atripathi
quelle
3
vi(oder im vimÜbrigen) ist bei großen Dateien verdammt langsam und kann sogar unbrauchbar werden, wenn nicht viele Zeilenenden vorhanden sind. Außerdem muss die Datei in den Speicher passen. Verwenden Sie lessfür große Dateien, es ist viel schneller und oft ausreichend zum Lesen / beobachtet Log - Dateien.
Marco
@Marco Warum nicht als Antwort?
Bernhard
1
weil es nicht die antwort auf die frage ist, sondern ein kommentar, lautet die frage "was hat das verursacht? warum sollten wir vi nicht für große dateien verwenden?"
Kiwy
schau dir den Kommentar mit meiner Antwort an.
Donnerstag,

Antworten:

7

Das Standardverzeichnis (/ var / tmp) für den vi-Bearbeitungspuffer benötigt ungefähr doppelt so viel Speicherplatz wie die Datei, mit der Sie arbeiten, da vi die zusätzlichen Zeilen für die Pufferbearbeitung verwendet.

Wenn im Verzeichnis / var / tmp nicht genügend Speicherplatz für den Bearbeitungspuffer vorhanden ist (z. B. wenn Sie mit einer großen Datei arbeiten oder auf dem System nicht genügend Speicherplatz vorhanden ist)

In einigen Fällen wird möglicherweise auch die folgende Fehlermeldung angezeigt

Not enough space in /var/tmp.

Informationen zur Fehlerbehebung finden Sie hier: http://kb.iu.edu/data/akqv.html

rɑːdʒɑ
quelle
"vi-Bearbeitungspuffer benötigt ungefähr doppelt so viel Speicherplatz wie die Datei, mit der Sie arbeiten" Quelle?
Atripathi
1
Vor langer Zeit habe ich von kb.iu.edu/data/akqv.html gelesen . also habe ich es dir gegeben
r 19dʒɑ
20

Vim wurde nicht für große Dateien entwickelt. Es hat bestimmte Funktionen, die die Benutzererfahrung drastisch verlangsamen. Beispielsweise wird die Datei in den Arbeitsspeicher geladen, wodurch grundsätzlich nur Dateien bearbeitet werden können, die kleiner als Ihre Arbeitsspeichergröße sind. Darüber hinaus sind Funktionen wie Syntaxhervorhebung, Auslagerung von Dateien und Rückgängigmachen bei großen Dateien sehr ineffizient und verlangsamen die Verarbeitung noch mehr. Ein weiteres Problem ist, vimdass man nicht zu lange Schlangen erwartet. Wenn eine Datei nur wenige Zeilenumbrüche enthält, vimwird sie unbrauchbar.

Trotzdem gibt es Plugins wie vim-largefile , die bestimmte Einstellungen so ändern, dass sie bei großen Dateien effizienter sind. Am Ende vimwird es jedoch nie bissig, wenn Sie mehrere GiBs darauf werfen.

Unterm Strich nicht vimfür große Dateien verwenden. Wenn Sie (im Gegensatz zum Bearbeiten) große Dateien anzeigen möchten, verwenden Sie less. Wenn Sie nach einem Muster suchen möchten, geben Sie einen Schrägstrich ein, um die Suche nach einem Muster zu starten:

/<pattern>  # forward search
?<pattern>  # backward search

Wenn Sie die Ausgabe filtern möchten, verwenden Sie ein kaufmännisches Und:

&<pattern>

Starten Sie dann die kontinuierliche Ausgabe mit shift-f. Sie können die Dauerausgabeanzeige mit verlassen ctrl-cund Ihr Filtermuster verfeinern oder abbrechen oder eine Suche starten.

Um große Dateien zu bearbeiten, verwenden Sie Tools wie sed, sie sind effizient und genau für diesen Zweck konzipiert.

Marco
quelle