Manchmal muss ich Fenster in eine bereits vorhandene Registerkarte verschieben, und ich habe mich gefragt, ob es eine Befehls- / Tastenkombination gibt, die dies ermöglicht. Ich weiß, dass ich das Fenster schließen, zum Tab wechseln und es dann in einem neuen Split öffnen kann, aber ich habe mich gefragt, ob es einen kürzeren Weg gibt, dies zu erreichen. Beachten Sie, dass ich es auf eine vorhandene Registerkarte verschieben möchte , nicht auf eine neue Registerkarte <C-w>T
.
vim-windows
tabbed-user-interface
Immergrüner Baum
quelle
quelle
Antworten:
Es gibt zwar Befehle zum Verschieben vorhandener Fenster auf der aktuellen Registerkarte (dh zum Beeinflussen des Fensterlayouts durch Drehen, Ändern der Größe und Verschieben), es gibt jedoch keine Befehle zum Verschieben eines Fensters auf eine andere Registerkarte.
Da ein Fenster nur ein Ansichtsfenster in einem geladenen Puffer ist, müssen Sie:
:close!
das Fenster.:sbuffer
die Puffernummer zum erneuten Öffnen.Sie verlieren dadurch alle fensterspezifischen Optionen. Sie können diese auch in einem Skript speichern und wiederherstellen.
quelle
:b ab
(Tab vervollständige den Rest)ab
Sind nur zufällige Buchstaben, ersetzen Sie diese durch den Anfang Ihres gewünschten Dateinamens.:b
Die Tab-Vervollständigung hat sich für mich als sehr gutTab
erwiesen. Normalerweise kann sie den richtigen Quellpuffer anhand von nur einem Buchstaben und 1-2 Tastendrücken finden.Der Vorteil dieses Ansatzes gegenüber Ingo besteht darin, dass nichts bemerkt oder erinnert wird, was eine geringere kognitive Belastung bedeutet. Dateiname kennst du sowieso schon.
quelle
Die beiden unten definierten Befehle verschieben alle Puffer von der rechten Registerkarte auf die aktuelle Registerkarte und schließen dann die rechte Registerkarte.
Mtabsp
Bewegt sie durch horizontales undMtabvsp
vertikales Teilen . Sie müssen die zusammengeführte Registerkarte verschieben, bevor Sie die Befehle verwenden können. Verwenden Sie+tabm
,-tabm
oder<n>tabm
.Installieren
Fügen Sie das folgende vim-Skript zu Ihrem hinzu
vimrc
:Technische Details
Die Funktion Mtab erhält einen Parameter
vert
. Hiermit wird festgelegt, ob die aktuelle Registerkarte horizontal oder vertikal geteilt wird.Das gewünschte Ergebnis wird mit den folgenden Schritten erreicht:
Wenn unser aktueller Tab der letzte ist, werden die Befehle ignoriert.
quelle
Wenn es eine ist Dateipuffer (wird nicht für Arbeit Kratzer Puffer etc.) können Sie:
:let @f=@%
ENTER - im Quellfenster;:echo @f
:e␣
Ctrl-RfENTERWichtiger Hinweis: Der letzte Schritt funktioniert nicht richtig, wenn der Pfad Leerzeichen oder einige Sonderzeichen enthält ! :-( Um dieses Problem zu umgehen, sollte der folgende, etwas längere Befehl für Pfade mit Leerzeichen funktionieren (obwohl er bei einigen anderen Sonderzeichen möglicherweise immer noch fehlschlägt):
:e␣"
Ctrl-Rf"
ENTER(das heißt, das Ergebnis von Strg-R, f zu zitieren )
Inspiriert von Antworten von lkraav und ingo-karkat .
quelle