Mit dem VIM-Editor können Sie häufig nach Puffern suchen. Ich benutze jetzt Standardbefehle wie :ls
oder a :bnext
. In der Tat habe ich in meinem .vimrc eingestellt:
"move amongs buffers with CTRL
map <C-J> :bnext<CR>
map <C-K> :bprev<CR>
Ich möchte die Puffer als Liste im Quickfix-Fenster durchsuchen, wie es das MRU-Plugin auf einfache (= hervorragende) Weise implementiert.
Gibt es ein Plugin, das so einfach wie MRU ist, aber auf Puffern arbeitet?
OK, eine mögliche Lösung könnte sein, einen :CtrlpBuffers
Befehl zu verwenden , der Teil des Ctrlp-Plugins ist, aber ich bin kein großer Fan von Ctrlp, weil ich manchmal seltsame Verhaltensweisen habe, die ich nicht vollständig verstehe (die Auswahl im Fuzzy-Modus ...); Ich suche also etwas wirklich Einfaches als MRU-Plugin.
BTW, ich scherzte mit dem :cexpr {expr}
Befehl und versuchte, die Quickfix-Fenster mit dem Inhalt der :buffers
Liste zu füllen , ohne Erfolg
Irgendein Vorschlag ?
:bnext
statt:cnext
?Antworten:
Sie können die Quickfix-Liste wie folgt mit jedem Puffer füllen:
setqflist()
Es wird eine Liste mit Wörterbuchelementen erstellt, die jeden Fehler beschreiben (Dateiname, Zeilennummer, Position usw.). In diesem Fall geben wir eine minimale Menge an Informationen an: die Puffernummermap()
Nimmt eine Liste und einen Ausdruck (eine Zeichenfolge) und gibt eine neue Liste des Ausdrucks zurück, der auf jedes Element der Eingabeliste angewendet wird. Hier nehmen wir eine Liste der aufgelisteten Puffernummern und formatieren sie zur Verwendung insetqflist()
('{"bufnr": v:val}'
wov:val
ist der Wert des Elements in der Liste)filter()
filtert eine Liste und entfernt Elemente, die einem bestimmten Ausdruck nicht entsprechen. Hier ist der Ausdruckbuflisted(v:val)
, dh die Puffernummer existiert und ist aufgelistet, dh erscheint in der:ls
Ausgaberange(a, b)
generiert eine Nummernliste vona
bisb
bufnr()
Gibt die Nummer eines gegebenen Puffernamens zurück. Wenn das Argument ist'$'
, gibt es die höchste Puffernummer zurückDas ist eine Menge zu schreiben und nicht sehr einprägsam, so dass Sie es in einen Befehl in Ihrem vimrc einschließen können:
Jetzt können Sie nur noch
:Qbuffers
die Quickfix-Liste füllen.Wenn dies automatisch aktualisiert werden soll, wenn neue Puffer hinzugefügt werden, können Sie folgendermaßen vorgehen:
Ich würde dies jedoch nicht empfehlen, da dadurch die Quickfix-Liste für Dinge wie
:make
oder ziemlich unbrauchbar wird:grep
.quelle
Sie sollten dieses Mapping ausprobieren:
Geben Sie an der Eingabeaufforderung die gewünschte Puffernummer ein und drücken Sie die Eingabetaste.
quelle
Schauen Sie sich das Bufexplorer-Plugin an . Es öffnet sich eine durchsuchbare Liste aller Puffer in einer Seitenleiste, ähnlich dem erwähnten MRU-Plugin. Auf vim.org gibt es noch einige weitere Plugins .
PS: Sie haben dieselbe Frage zum Stack Overflow gestellt . Bitte senden Sie die identische Frage nicht an mehrere Sites gleichzeitig!
quelle