Das LargeFile - Große Dateien bearbeiten- Plugin erkennt große Dateien und optimiert viele Optionen, um dies besser zu berücksichtigen . Es schaltet sich auch 'undolevels'
aus, um zu verhindern, dass Sie eine größere Speichererweiterung sehen.
Laden Sie die Undo-Datei nicht, wenn sie in Vim 7.3+ zu groß ist
Ich habe gerade eine riesige Menge Text (in der Größenordnung von Millionen Zeilen, glaube ich) in ein Vim-Register kopiert, eine neue Datei geöffnet, eingefügt und dann die neue Kopie des Ausschnitts bearbeitet. Vim war während des gesamten Prozesses ziemlich schnell; Es war ein schönes Schaufenster der Macht von Vim.
.... nur dass ich die permanente Rückgängig-Funktion verwende. Nach einiger Zeit des Editierens bemerkte ich, dass meine Vim-Sitzung eine enorme Menge an Speicher in Anspruch nahm (etwa dreimal so viel wie meine Chrome-Sitzung, was laut Vim-Standards viel ist). Zuerst dachte ich, es wäre so, weil sich meine massive Kopie noch in einem der Register befand, aber als ich zur Bearbeitung ging .viminfo
, betrug der längste Registerwert etwa 20 Zeilen. Ich habe versucht, Vim ein paar Mal neu zu starten, aber jedes Mal, wenn die betreffende Datei geladen wurde, blieb sie für eine inakzeptable Zeit hängen (wiederum nach Vim-Standards).
Also wurde mir klar, dass ich meine Undo-Datei für die problematische Datei löschen musste. Dies hat mein unmittelbares Problem gelöst, aber ich möchte vermeiden, es erneut zu begegnen. Ich möchte also eine Autocmd in meinem VimRC, die Folgendes tut:
- Überprüfen Sie nach dem Laden einer Datei die Größe der entsprechenden Undo-Datei (falls vorhanden).
- Führen
x Mb
Sie einen der folgenden Schritte aus, wenn die Rückgängig-Datei größer ist (oder eine andere Größe).- Lösche es
- Wenn Sie nur die letzten Änderungen beibehalten, löschen Sie die Änderungen, bis die Datei eine angemessene Größe hat (dies wäre das bevorzugte Verhalten).
Irgendwelche Gedanken, wie das geht?
2 Antworten auf die Frage
Von undo-persistence
:
The 'undofile' option is checked after writing a file, before the BufWritePost autocommands. If you want to control what files to write undo information for, you can use a BufWritePre autocommand: > au BufWritePre /tmp/* setlocal noundofile
Ich wollte vorschlagen, dass Sie vor dem Schreiben der Undo-Datei entscheiden, wie groß sie sein wird, und dann entscheiden, ob Sie die Einstellung vornehmen möchten 'undofile'
. Es ist wahrscheinlich einfacher, vim die Datei schreiben zu lassen, dann BufWritePost
die Größe der neu geschriebenen Datei mit einem Autocommand zu überprüfen und sie zu löschen, wenn sie zu groß ist.
Verwandte Probleme
-
13
Welche Vim-Funktionen verwenden Sie?
-
8
Mit einem Tastendruck die mit "Leertaste" markierte "Registerkarte" in Vim löschen
-
2
Wie können Sie das rückgängig machen, nachdem Sie das Tethering auf Ihrem iPhone aktiviert haben?
-
1
Sie können nicht verstehen, warum ASCII- und HEX-Erkennungen in der Statuszeile von Vim benötigt wer...
-
3
Vim: Wie behandelt man Unicode-Dateien mit Text in mehreren (mehr als zwei) Sprachen?
-
9
Firefox Addons für Vimperator
-
3
Um PWD in Vims Echo zu bestätigen: -Modus für das Dokument
-
1
Gibt es trotzdem vim, dass Sonderzeichen nicht als Wörter gezählt werden?
-
8
Vimperator Kopieren / Einfügen
-
2
Farben in Vim LaTeX -Dateien haben, wie in Gvim