Was ist ein verlassener Puffer in vim?

7

Ich benutze vim seit mehr als 5 Jahren und war überrascht, als ich nicht wusste, was ein verlassener Puffer ist. Die nächste Antwort, die ich gefunden habe, war in dieser SO-Antwort .

Ist also ein verlassener Puffer geladen, der aber nicht mehr angezeigt wird? Was ist, wenn mehrere Registerkarten vorhanden sind? Werden die in diese Registerkarten geladenen Puffer aufgegeben oder nicht?

stanm
quelle

Antworten:

8

Ein "verlassener" Puffer ist ein Puffer, den Sie verlassen haben, ohne Änderungen zu speichern.

Wenn Sie set nohidden(den Standardwert) haben, warnt Vim Sie im Allgemeinen vor nicht gespeicherten Änderungen, wenn Sie versuchen, einen geänderten Puffer zu belassen. Wenn Sie sich mit einem Knall durchschlagen, wird der vorherige Puffer "verlassen" und Sie verlieren alle nicht gespeicherten Änderungen.

Wenn set hiddenja, werden modifizierte Puffer beim Verlassen in ihrem aktuellen Zustand gehalten, sodass sie - technisch gesehen - niemals "aufgegeben" werden. Sie erhalten weiterhin eine Warnung, wenn Sie versuchen, Vim mit nicht gespeicherten Änderungen zu beenden.

Solange es noch in einem Fenster angezeigt wird, kann ein Puffer nicht als "versteckt" oder "verlassen" betrachtet werden, sodass Ihre Puffer, die derzeit in einem anderen Fenster auf einer anderen Registerkarte angezeigt werden, weder "versteckt" noch "verlassen" sind.

romainl
quelle
In diesem Fall habe ich möglicherweise einen Fehler entdeckt (oder nur ein seltsames Verhalten): 1. Bearbeiten Sie einen Puffer, speichern Sie ihn nicht. 2. versteckt setzen; 3. zu einem anderen Puffer wechseln; 4. set nohidden; 5. gehe zurück zum versteckten Puffer; 6. Gehen Sie zurück zum nicht versteckten Puffer: Das Ergebnis ist, dass der versteckte Puffer automatisch gespeichert wird. Funktioniert das wie erwartet?
Stanm
@stamm, kann nicht reproduzieren
Christian Brabandt
1
@stanm: kann auch nicht reproduzieren, nach dem 5. wird der erste Puffer noch geändert, aber jetzt kann ich nicht zum zweiten Puffer zurückkehren (weil nohiddengesetzt ist). Was ist deine Konfiguration?
nobe4
@ Nobe4: Okay, das habe ich als Verhalten erwartet. Meine Konfiguration bezieht mehrere externe RC-Dateien (corp), also gibt es vielleicht irgendwo den Grund dafür. Vielen Dank für die Hilfe!
Stanm
@stanm mischt sich vielleicht ein autowrite? set autowrite?und set autowriteall?was zeigen sie?
Jason Hu