Wie kann ich die Position / Reihenfolge meiner aktuellen Registerkarte ändern Vim
? Wenn ich beispielsweise meine aktuelle Registerkarte als erste Registerkarte neu positionieren möchte?
200
Sie können eine Registerkarte mit :tabm
relativen oder absoluten Nullindexargumenten verschieben.
absolut:
:tabm i
relativ:
:tabm +i
:tabm -i
Es ist eine relativ neue Funktion. Wenn es nicht funktioniert, aktualisieren Sie Ihr vim.
:tabm
in vim 7.3 relative Argumente akzeptiert werden.Meinen Sie damit, die aktuelle Registerkarte zu verschieben? Dies funktioniert mit tabmove.
Ich habe zwei Tastenkombinationen, die meine aktuelle Registerkarte nach links oder rechts verschieben. Sehr praktisch!
EDIT: Hier ist mein VIM-Makro. Ich bin kein großer ViM- Codierer, also könnte es vielleicht besser gemacht werden, aber so funktioniert es bei mir:
Danach können Sie Schlüssel binden, zum Beispiel wie folgt in
.vimrc
:Jetzt können Sie Ihre aktuelle Registerkarte verschieben, indem Sie F9 oder F10 drücken.
quelle
Ich habe nach dem gleichen gesucht und nach einigen Beiträgen einen einfacheren Weg als eine Funktion gefunden:
Die tabpagenr () gibt die aktuelle Registerkarte Position, und tabmove verwendet Indizes.
Ich habe rechts Strg + L und links Strg + H zugeordnet:
quelle
:execute "tabmove" tabpagenr() + 1 <CR>
nach rechts bewegen. Für MacVim 8.0.1420 (144) .Bewegen Sie die Registerkarte Aktuell an die n- te Position
Wo
n
ist eine Zahl, die die Position bezeichnet (beginnend bei Null)?Bewegen Sie die Registerkarten nach links / rechts
Ich denke, eine bessere Lösung besteht darin, die Registerkarte nach links oder rechts an ihre aktuelle Position zu verschieben, anstatt den numerischen Wert der neuen Position herauszufinden, an der Sie sie haben möchten.
Mit den obigen Keymaps können Sie die aktuelle Registerkarte verschieben:
quelle
+tabmove
undtabmove+
? Ist die Position wichtig?Zusätzlich zu den feinen Vorschlägen in anderen Antworten können Sie Tabs auch einfach mit der Maus ziehen, um sie zu verschieben, wenn Sie die Mausunterstützung aktiviert haben.
Dies ist in MacVim und anderen GUI vim-Implementierungen standardmäßig aktiviert, unabhängig davon, ob Sie die GUI-Widget-Registerkarten oder die Registerkarten im Terminalstil im GUI-Modus verwenden.
Es funktioniert auch im reinen tty-Modus Vim, wenn Sie
set mouse=a
ein geeignetes Terminal haben und haben (xterm und die meisten Emulatoren davon, wie gnome-terminal, Terminal.app, iTerm2 und PuTTY / KiTTY, um eine Ansicht zu benennen). Beachten Sie, dass auch Mausklicks über Spalte 222 hinaus erforderlich sindset ttymouse=sgr
. siehe In Vim, warum funktioniert meine Maus nicht über die 220. Spalte hinaus? für den Hintergrund dazu.Ich habe ein Plugin namens vim-tabber geschrieben , das einige zusätzliche Funktionen zum Vertauschen, Verschieben und Verschieben von Registerkarten bietet und die Funktionen der integrierten Befehle zur Manipulation von Registerkarten erweitert, während es weitgehend mit den integrierten Funktionen kompatibel bleibt. Selbst wenn Sie das Plugin nicht verwenden, finden Sie in der README-Datei einige allgemeine Informationen zur Verwendung von Registerkarten.
quelle
Aus irgendeinem Grund funktionierte die Funktionsantwort bei mir nicht mehr. Ich vermute einen Konflikt mit vim-ctrlspace . Unabhängig davon ist die Mathematik in der Funktionsantwort nicht erforderlich, da Vim die Registerkarten mit integrierten Funktionen nach links und rechts verschieben kann. Wir müssen uns nur um den Verpackungskoffer kümmern , da Vim nicht benutzerfreundlich ist.
quelle
-tabm
und+tabm
in meinem vim 7.4 verschieben Tabs nicht richtig. Auch my:help tabm
listet dies nicht als gültige Syntax auf. So ersetzen ich die letzteelse execute ...endif
mitelseif a:direction == 1 execute "tabmove" s:current_tab else execute "tabmove" s:current_tab - 2 endif
mit Pablos Antworttabmove
und das-
/+
-Zeichen in derexecute
Zeile umgekehrt .Hier ist mein Makro mit relativen Argumenten aus der Antwort von @ maybeshewill:
Es behandelt den Verpackungskoffer.
quelle