Manchmal sehe ich ein Fenster mit Namen geöffnet scratch
.
Ich weiß, dass es eine Art temporärer Puffer / Fenster ist.
Wie kann ich eine kisten?
:h scratch
gibt nichts zurück.
buffers
vim-windows
wizzup
quelle
quelle
:h
Befehl verwendet, um auf diese Hilfe zuzugreifen?:edit
Datei zum Bearbeiten einer Datei verwenden, wird automatisch ein neuer Puffer erstellt. Ein leerer Puffer kann durch Eingabe von:enew
oder:new
oder erstellt werden:vnew
. Von Vim Buffer FAQ: vim.fandom.com/wiki/Vim_buffer_FAQ:helpgrep scratch
es als eines von 10 (in meiner Installation) Ergebnissen an.Ich erinnere mich an einen vim-Tipp (der auf vim.wikia migriert wurde) zu diesem Thema.
Die neueste Version der Funktion, die ich zum Erstellen von Arbeitspuffern verwende, setzt außerdem:
'buflisted'
zu falsch'readonly'
(Aus meinem VimL-Bibliotheks-Plugin: lh-vim-lib)
quelle
Ein "Scratch" -Puffer ist nur ein informeller Begriff für einen Ort, an dem beliebige temporäre Inhalte eingegeben werden können.
Nach der akzeptierten Antwort und einer weiteren Frage habe ich die folgende Funktion in meinem vimrc erstellt.
Die Funktion erstellt im aktuellen Fenster einen leeren Puffer und nennt ihn "Scratch". Der Arbeitspuffer ist nicht geschützt, wenn Sie versuchen, ihn zu beenden. Es wird auch bei nicht gespeicherten Änderungen ohne Aufforderung verworfen, wenn Sie Vim beenden oder es löschen (
:bw
).Fügen Sie diese Funktion in Ihr vimrc ein. Verwenden Sie zum Erstellen eines Arbeitspuffers
:call Scratch()
.Sie können dies schnell testen, indem Sie an den Linien ziehen und dann
:@"
. Sie können es dann versuchen:call Scratch()
.Ein Split wird verwendet, damit Ihr aktueller Puffer beim Erstellen des Arbeitspuffers nicht beeinflusst wird.
(Wenn Sie
split
die Funktion lieber weglassen möchten, wird Ihr aktueller Puffer beim Erstellen des Arbeitspuffers "ausgeblendet" (nicht mehr in einem Fenster). Vim stoppt weiterhin und fordert Sie auf, wenn Sie versuchen, mit nicht gespeicherten Änderungen daran zu beenden Puffer).Der Arbeitspuffer hat normalerweise das gleiche Arbeitsverzeichnis wie der Puffer, in dem Sie sich befinden, wenn Sie die Kratzfunktion aufrufen. Ich habe eine auskommentierte Zeile eingefügt, um das Arbeitsverzeichnis des Arbeitspuffers in "Home" zu ändern. Dies ist für diejenigen mit lustigen Statuszeilen, die möglicherweise den Pfad des aktuellen Verzeichnisses als Pufferpfad anzeigen. Oder nur für diejenigen, die es bevorzugen.
Sie können den Arbeitspuffer so einstellen, dass er "aufgelistet" oder "nicht gelistet" ist (standardmäßig aufgelistet). Wenn Sie es nicht gelistet machen, wird es nicht in Ihrer
:buffers
Liste angezeigt , aber es wird angezeigt:buffers!
. Kommentieren Sie dienobuflisted
Zeile aus, wenn Sie möchten, dass sie nicht aufgeführt wird. Gelistet oder nicht gelistet, können Sie:b scratch
trotzdem jederzeit zu Ihrem Arbeitspuffer wechseln . Wenn Sie den Scratch-Puffer auflisten, ist er etwas leichter zugänglich. Zum Beispiel:sball
wird es in einem Split enthalten.Wenn Sie
:bw
(Pufferlöschung) für den Arbeitspuffer verwenden, löscht Vim den Inhalt und entfernt den Puffer ohne Vorwarnung. Wenn Sie:bd
(Puffer löschen) für den Arbeitspuffer verwenden, löscht Vim den Inhalt ohne Warnung und macht den Puffer nicht aufgelistet.Sie können mehrere Arbeitspuffer erstellen. Vim fängt an sich zu beschweren, aber Sie haben immer noch zusätzliche.
quelle
buftype=hide
vor dem Festlegen des Namens festlegen , ist das Ändern des Verzeichnisses nicht erforderlich, da der Puffername nicht "wie ein Dateiname behandelt" wird. Erwähnenswert ist auch'nobuflisted'
, dass der Puffer nicht in der Ausgabe von angezeigt wird:ls
. Sie haben irgendwie darauf angespielt, es aber nicht explizit erwähnt.buftype=hide
ist in der Tat Unsinn, und ja, ich habe tatsächlich darüber gesprochenbuftype=nofile
:). Aber ich kann das von Ihnen beschriebene Verhalten nicht reproduzieren und glaube immer noch, dass die AussageVim buffer names are always filenames
falsch ist. Wenn ich diecd
Zeile aus Ihrer Funktion entferne und sie dann ausführe, gibt es keinen Pfad in meiner Statuszeile oder in der Ausgabe vonecho bufname('%')
Ich frage mich, ob dies möglicherweise eher ein Problem mit Ihrer Statuszeile als mit dem Puffernamen ist. Was ist Ihre'statusline'
Option eingestellt?statusline
etwas wie verwendenexpand(&buftype == 'nofile' ? '%' : '%:p:~:h')
, aber ich denke, jetzt befinden wir uns in den Bereichen persönlicher Vorlieben. Wenn Sie sich für die Lösung des Änderungsverzeichnisses entscheiden, ist es möglicherweise besser,:lcd
die Änderungen auf das betreffende Fenster zu beschränken, aber auch dies liegt ganz bei Ihnen. Jedenfalls denke ich, dass dies eine großartige Antwort ist. +1!