Eine der neuen Funktionen in Vim 7.3 ist das permanente Rückgängigmachen, mit dem der Undotree beim Beenden eines Puffers in einer Datei gespeichert werden kann.
Leider konnte ich es nicht richtig aktivieren, oder ich muss es falsch verwenden. Folgendes habe ich bisher versucht:
Ich habe Folgendes zu ~ / .vimrc hinzugefügt
set undofile " Save undos after file closes
set undodir=$HOME/.vim/undo " where to save undo histories
set undolevels=1000 " How many undos
set undoreload=10000 " number of lines to save for undo
Danach sollte ich angeblich in der Lage sein, jede Datei zu öffnen, zu bearbeiten und dann zu speichern und zu schließen. Wenn ich sie erneut öffne, sollte ich sie rückgängig machen / wiederholen können, als wäre ich nie gegangen. Leider scheint dies nicht der Fall zu sein, da niemals eine Undofile geschrieben wird.
Anmerkungen:
Ich bin auf Win 7 mit Vim 7.3 aus dem Vim ohne Creme-Projekt. Anhaltendes Rückgängigmachen ist eingebrannt.
$ HOME / .vim / undo ist in meinem Dateisystem vorhanden
mkdir ~/.vim/undo
Antworten:
Fügen Sie dies in Ihre ein
.vimrc
, um eine zu erstellen,undodir
falls diese nicht vorhanden ist, und aktivieren Sie das dauerhafte Rückgängigmachen. Getestet unter Windows und Linux.quelle
:silent call system('mkdir -p ' . &undodir)
&
weil ichset
dasundodir
eher alslet
ting es. (In meinen Augen ist diese Unterscheidung zwischenlet
undset
eines der vielen, vielen, vielen umwerfend schrecklichen "Merkmale" von Vimscript, aber YMMV.).vim
wenn es nicht existiert. Leider ist das-p
Flag unter Windows nicht vorhanden, daher habe ich die Antwort so bearbeitet, dass siemkdir
zweimal aufgerufen wird, um die Windows-Kompatibilität sicherzustellen.-p
Flags besteht darin, einen Fehler zu vermeiden, wenn das Verzeichnis vorhanden ist. Ich habe meinen Befehl in einemif has('win32')
Block, so dass ich nurmkdir
ohne-p
auf Windows.mkdir()
? Dann kann dies werden :call mkdir(myUndoDir, 'p')
, was sich so verhältmkdir -p
.Ich habe dies in meinem _gvimrc versucht:
Es begann wie angekündigt zu funktionieren, als ich die Try-Catch-Klammer löschte, also:
Ich musste das Verzeichnis erstellen.
quelle
if has('persistent_undo')
silent !mkdir ~/.config/nvim/backups > /dev/null 2>&1
set undodir=~/.config/nvim/backups
endif
"Hinzufügen einer kommentierten Nachricht zur Erhöhung der NachrichtenlängeIch nehme an, $ HOME funktioniert nicht wie angekündigt.
:echo $HOME
Zeigt auf meinem System H: \ an,: e $HOME/
sagt aber :~/
ungültiger Dateiname.Sie könnten mit einem absoluten Pfad versuchen, um zu sehen, ob es es heilt
quelle
$TEMP
. Wenn ich schaueset undodir?
, zeigt es~/AppData/Local/Temp
. Datei rückgängig machen bleibt bestehen und lädt sich korrekt. Vielleicht$TEMP
wird zuverlässiger?Dies funktioniert jetzt wie erwartet:
file.txt
Öffnen Sie es in einem Vim 7.4-Puffer unter Windows 7,:setlocal undofile
speichern Sie dann eine Änderung am Puffer, und die Undofile.file.txt.un~
wird nebenbei erstellt, da:set undodir?
"undodir =" gemeldet wird. Standardmäßig - dh dies muss nicht manuell angegeben werden. Sie können auch:set undofile
in einem Modeline.quelle