In letzter Zeit habe ich die Anzahl der von mir verwendeten Plugins drastisch reduziert, sodass ich nur mit den integrierten Vim-Funktionen nach Antworten suche.
Ich habe einen Fehler in meinem Workflow festgestellt, als ich viele Puffer bearbeite: Ich bin in einem Puffer und möchte zu einem anderen wechseln, von dem ich mich nicht an den Namen erinnere und bei dem es sich nicht um den alternativen Puffer handelt . Die Verwendung :b#
ist also nicht möglich und die Vervollständigung mit dem Befehl :b
ist auch nicht bequem.
Dazu habe ich folgendes gemacht:
- Verwenden Sie zuerst
:buffers
, um die Liste der offenen Puffer abzurufen - Merke dir die Nummer des Puffers, den ich verwenden möchte
- Drücken Sie Enter, um die Liste der Puffer zu schließen
- Verwenden Sie
:bX
mitX
der Nummer des zu verwendenden Puffers.
Dieser Workflow schien mir ziemlich schwer zu sein, daher habe ich die folgenden Zeilen zu meinem hinzugefügt
.vimrc
:
" Improve the navigation in the buffers
nnoremap <Leader><S-b> :B<CR>
command! B call Buffers()
function! Buffers()
execute "buffers"
let buffer=input("Enter a buffer:")
execute "b" . buffer
endfunction
Dies gibt mir einen Befehl :B
(und ein Mapping), der die Funktion :buffers
auf eine Eingabe wartet und schließlich :b
gefolgt von der Eingabe aufruft .
Es funktioniert gut, aber ich bin überrascht, dass ich eine solche Funktion entwickeln musste: Normalerweise verfügt Vim über einen recht effizienten Standardworkflow, weshalb ich mich frage, ob es eine bessere Möglichkeit gibt, zu einem Puffer zu wechseln, von dem ich nichts Außergewöhnliches kenne dass es in meiner Editiersitzung schon geöffnet wurde.
:ls
gefolgt von:b#
(muss nicht zuerst Return oder Escape drücken, kann direkt aus der Pufferliste in 'ls' gehen.) (Als Kommentar posten, weil es nicht substanziell genug zu sein scheint, um eine Antwort zu sein? Ich frage mich auch, ob ich fehle etwas und beantworte die falsche:b#
ist nicht das, wonach ich suche, aber die Tatsache, dass Sie einen Tastenanschlag speichern können, indem Sie direkt eingeben,:b
ohneenter
vorher zu drücken, ist interessant. (In der Tat ist das vielleicht zu leicht, um eine Antwort zu geben, aber es war einen Kommentar wert :-))#
Zeichen eher als Ersatz für eine (Puffer-) Zahl als als das wörtliche#
Zeichen.Antworten:
Im Gegenteil, ich finde die Tab-Vervollständigung äußerst praktisch. Das Einstellen der richtigen Optionen auf Werte, die für Sie funktionieren, kann sehr hilfreich sein. Dies sind die relevanten Zeilen von mir
vimrc
(sie funktionieren für mich, aber sie funktionieren möglicherweise nicht für Sie, kopieren Sie sie also nicht einfach) :Damit ist der richtige Puffer selten mehr als fünf oder sechs Tastenanschläge entfernt:
Barry Arthur hat vor Jahren eine viel einfachere Lösung gefunden, die seitdem ziemlich populär geworden ist:
von denen ich vor ein paar Jahren eine etwas vielseitigere Variante vorgeschlagen habe:
Da es sich um Vimscript handelt, habe ich hier eine nette kleine Funktion geschrieben, die die Befehlszeile nach listenartigen Befehlen wie
:ls
oder "automatisch auffüllt":ilist
. Der Vorteil dieser Funktion gegenüber den obigen Zuordnungen ist, dass ich mich nicht an bestimmte Zuordnungen erinnern muss. Es funktioniert genau wie Vim, nur mit einem kleinen Dreh .Trotzdem bin ich ein großer Befürworter der "symbolbasierten Navigation" gegenüber der "dateibasierten Navigation". Gegebenenfalls ist die symbolbasierte Navigation viel schneller und wirtschaftlicher als die dateibasierte Navigation.
Das letzte GIF zeigt übrigens ein Mittel der symbolbasierten Navigation. Das Beispiel ist albern, aber ... na ja.
quelle
wild*
Optionen gespielt, ich werde versuchen, es auf meine Weise zu optimieren. Bezüglich der Barry Arthur-Lösung ist die Antwort von @ nobe4 ziemlich nahe, was interessant ist. Schließlich muss ich IhreCCR()
Funktion genauer betrachten, um sie wirklich zu verstehen, aber sie sieht vielversprechend aus. Danke für deine Antwort.Ich bin vor einiger Zeit auf das gleiche Problem gestoßen und habe eine Lösung gefunden:
Dadurch wird die Pufferliste geöffnet , und Sie haben die Möglichkeit, den Puffer zu wechseln, ohne ihn auszublenden.
Ich denke, dass es Sinn macht, dass Vim hier keine "List and Select" -Option hat, das sind zwei separate Aktionen. Aber Vim ist mächtig genug, um Befehle miteinander zu kombinieren.
Betrachten Sie es als die Unix-Philosophie: Machen Sie eine Sache und machen Sie es gut.
:buffers
listet die Puffer auf und:buffer xxx
ermöglicht die Auswahl eines Puffers.quelle
Aber in letzter Zeit habe ich die schnellste Methode mit den wenigsten Tastenanschlägen gefunden :
{count} CTRL-^
Das ist nicht so anders,
:b#<Enter>
aber wie Sie sagen, müssen Sie die Puffernummer kennen !Deshalb starte ich das MiniBufExplorer- Plugin, das eine Liste von Dateinamen oben anzeigt (wie fast jeder andere Editor). Ich bin sicher, es gibt zahlreiche Alternativen.
Schließlich habe Ctrl-^ich es , da meine Finger ein wenig gestreckt sind und dies eine sehr häufige Operation ist, auf verschoben Ctrl-E. Die Implementierung dafür ist nicht zu komplex:
Mein aktueller Buffer Switching-Prozess sieht also so aus:
Leider sind MBE und das obige Skript nicht Vim-integriert, wie Sie es gewünscht haben. Wenn ich auf einem entfernten Rechner ohne Konfiguration bin, benutze ich einfach
:b [partial]
und Tab-Vervollständigung.quelle