Wie kann ich die Pufferliste von Vim so aufteilen, dass nur aktive Puffer enthalten sind?

8

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.

Erläuterung

Sagen wir, dass ich in meiner Vim-Sitzung 4 Dateien geöffnet habe. Der Befehl :ls gibt aus:

%Vor%

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:

%Vor%

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.

    
nelstrom 04.06.2010, 12:42
quelle

5 Antworten

11

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.

    
nelstrom 05.07.2010, 16:13
quelle
7

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:

abgerufen werden %Vor%

( 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%     
Luc Hermitte 04.06.2010 13:35
quelle
1
%Vor%

z.

Von der Shell:

%Vor%

Inside vim:

%Vor%

Ausgabe:

%Vor%

Eine Datei schließen:

%Vor%

Ausgabe:

%Vor%

Öffnen Sie eine andere Datei:

%Vor%

Ausgabe:

%Vor%     
Andrew 29.03.2011 17:05
quelle
0

Wenn Sie sagen, dass 4 Puffer geöffnet sind:

%Vor%

und Sie möchten den Puffer 3 "xyz.c" schließen:

%Vor%

Ergebnisse nach dem Löschen von Puffer 3:

%Vor%     
hacintosh 04.06.2010 13:49
quelle
0

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:

%Vor%

Aus diesem Nabble-Thread

    
Drew Stephens 18.05.2011 20:10
quelle

Tags und Links