Wie kann ich meine Pufferliste so aufteilen, dass nur Puffer enthalten sind, die gerade in einem Fenster / Tab geöffnet sind?
Wenn ich Vim für eine lange Zeit ausgeführt habe, ist die Liste der Puffer, die durch den Befehl :ls
angezeigt wird, zu groß, um damit zu arbeiten. Im Idealfall möchte ich alle Puffer löschen, die derzeit nicht in einer Registerkarte oder einem Fenster angezeigt werden, indem Sie einen benutzerdefinierten Befehl wie :Only
ausführen. Kann jemand vorschlagen, wie man das erreicht?
Es sieht so aus, als ob der :bdelete
Befehl eine Liste von Puffernummern akzeptieren kann, aber ich bin mir nicht sicher, wie man die Ausgabe von :ls
in ein Format übersetzt, das vom Befehl :bdelete
konsumiert werden kann. Jede Hilfe wäre willkommen.
Sagen wir, dass ich in meiner Vim-Sitzung 4 Dateien geöffnet habe. Der Befehl :ls
gibt aus:
Puffer 1 befindet sich in der aktuellen Registerkarte und Puffer 4 befindet sich in einer separaten Registerkarte, aber
Puffer 2 und 3 sind beide versteckt. Ich möchte den Befehl :Only
ausführen, und
Es würde die Puffer 2 und 3 löschen, so dass der Befehl :ls
ausgeben würde:
Dieses Beispiel lässt den vorgeschlagenen Befehl :Only
nicht sehr nützlich erscheinen, aber
Wenn Sie eine Liste von 40 Puffern haben, wäre es sehr willkommen.
Ich habe Laurence Gonslaves Lösung .
%Vor% Ich habe es geändert, um bwipeout
anstelle von bdelete
zu verwenden, und habe die Nachricht hinzugefügt, um anzuzeigen, wie viele Puffer entfernt wurden.
Suchen Sie:
%Vor%oder genauer:
%Vor%?
EDIT: Die vorherige Antwort berücksichtigte nicht mehrere Registerkarten.
Es scheint, dass ich einen komplexen Ansatz verwendet habe. Die Liste der geöffneten und angezeigten Puffer kann dank tabpagebuflist()
mit:
( lh#list#unique_sort()
stammt aus lh-vim-lib , definiert die Sortierung + einzigartige Funktion, die vim nicht bietet)
Um die nicht geöffneten Puffer zu haben, wird es ein wenig komplizierter. Entweder verwenden wir eine Schleife von jeder Registerkarte, um die nicht angezeigten Puffer zu erhalten, oder wir machen einen Unterschied zwischen dem vorherigen Ergebnis und den Pufferpuffern:
%Vor% Ich benutze set hidden
nicht, also möchte ich die Puffer, die in keinem Fenster angezeigt werden, schließen, um die Ausgabe von :ls
zu bereinigen. Diese Funktion macht genau das:
Tags und Links vim