Wie verschiebe ich ein vorhandenes Fenster auf eine neue Registerkarte?

151

Gibt es eine Möglichkeit, ein vorhandenes Fenster (geteilt) in eine neue Registerkarte einzufügen?

Drew Stephens
quelle
Wenn Sie jemals auf diese Frage zurückkommen, ändern Sie bitte die akzeptierte Antwort. Die von DrAI ist viel korrekter als die von Mykola.
Gbr

Antworten:

261

Neben dem zuvor vorgeschlagenen :tabeditAnsatz besteht eine schnellere Möglichkeit (im normalen Modus) darin, Ctrl- W Shift- zu drücken.T . Strg-W ist das allgemeine Präfix für eine Vielzahl von Fenstermanipulationsbefehlen.

Sehen:

:help Ctrl-W_T
:help Ctrl-W
DrAl
quelle
3
Beachten help Ctrl-W_TSie, dass Sie zum Hilfeeintrag von Ctrl-W_t(Kleinbuchstaben) gelangen. Weiter unten auf der Seite befindet sich jedoch der Ctrl-W_TEintrag (mit Großbuchstaben T) mit der Aufschrift "Verschieben Sie das aktuelle Fenster auf eine neue Registerkarte ..."
Rabarberski
1
@DrAl und wie verschieben wir ein neues Registerkartenfenster in ein geteiltes Fenster?
Ramiz Uddin
@RamizUddin Es gibt keine einfache Möglichkeit, dies zu tun (da nicht klar ist, in welches Fenster Sie sich aufteilen möchten). Sie können jedoch die Puffernummer für Ihre aktuelle Registerkarte mit ermitteln :echo bufnr("")und mit dieser Nummer ein Fenster mit :sp #3oder teilen :sb 3(vorausgesetzt, die Nummer war 3). Möglicherweise können Sie einige Zuordnungen oder Funktionen erstellen, um dies zu vereinfachen.
DrAl
1
Wie Sie bewegen den Puffer in einem neuen Tab, es ist Undo / Redo - Zustand zu halten. Mit anderen Worten, ich mag nicht die gleiche Datei in einem neuen Tab öffnen, mag ich buchstäblich bewegen , den Puffer zu einem neuen Tab, so kann der Bearbeitungsverlauf in dem neuen Registerkarte verwendet werden. Wenn es keine Standardmethode gibt, kann ich wetten, dass ein Plugin erstellt werden kann, das eine neue Verknüpfung dazu hinzufügt, die den Rückgängig-Verlauf in die Auslagerungsdatei für den neuen Puffer schreibt.
Trusktr
2
@trusktr Ich würde mir vorstellen, dass das Öffnen des Puffers in einem neuen Tab mit :sbfunktionieren würde, aber mit neueren Versionen von Vim (> = 7.3) können Sie auch das dauerhafte Rückgängigmachen verwenden, indem Sie festlegen, set undodir=/path/to/dirwo / path / to / dir ein Verzeichnis ist, das Sie haben für den Zweck erstellt und dann set undofile. Auf diese Weise können Sie vim beenden und anschließend neu starten und den Status "Rückgängig / Wiederherstellen" beibehalten.
DrAl
103

Versuchen

:tabedit %<CR>
Mykola Golubyev
quelle
3
Nur neugierig, warum Sie die <CR> damit aufgenommen haben.
Schweizer
17
Aus dem gleichen Grund habe ich ":" eingefügt. Dies ist die vollständige Kombination der VIM-Tasten im normalen Modus. Sie können diese in 'nnoremap' und 'nmap' verwenden
Mykola Golubyev
6
Dies funktioniert auch, außer dass das Fenster auf eine neue Registerkarte geklont / dupliziert wird, anstatt es zuerst zu schließen und dann in einer neuen Registerkarte zu öffnen. Keine große Sache. Nur etwas zu beachten.
A-Dubb
6
Dadurch wird der Puffer nicht auf eine neue Registerkarte verschoben, sondern nur dieselbe Datei in einer neuen Registerkarte geöffnet, aber Sie haben keinen Rückgängig- /
Wiederherstellungsverlauf
5
C-w Tist schneller Weg, um das gleiche zu tun
Dylanthepiguy
3

Dadurch wird der neueste Puffer in eine neue Registerkarte verschoben und der vorherige Puffer in der aktuellen Registerkarte wiederhergestellt. Ich benutze dies, nachdem ich eine neue Datei in mein Gvim gezogen habe

:sbp |wincmd p| wincmd T

Sie können es so Strg-Rücktaste zuordnen

:nnoremap <C-BS> :sbp<bar>wincmd p<bar>wincmd T<CR>

es funktioniert besonders gut mit

:set switchbuf=usetab

quelle
0

Ich habe dies verwendet, das Ihnen zwei Funktionen bietet, die an ein Paar von Hotkeys oder Befehlen gebunden werden können und die sehr intuitiv funktionieren. Ich bin mir ziemlich sicher, dass es ein noch freundlicheres Verhalten bietet als z Ctrl-W_T.

Wenn beispielsweise mehrere Fenster in mehreren Registerkarten geöffnet sind, können Sie mit dieser Funktion das aktuelle Fenster gezielt auf die nächste oder vorherige Registerkarte verschieben. Wenn Sie etwas vor die erste Registerkarte oder nach die letzte Registerkarte verschieben, wird es gedreht in eine ganz neue Registerkarte.

Wenn Sie also zwei Registerkarten mit jeweils einem Fenster haben und das Fenster der ersten Registerkarte nach rechts verschieben, wird es mit der zweiten Registerkarte kombiniert, sodass eine einzelne Registerkarte mit zwei Fenstern entsteht. Ich weiß nicht, wie kompliziert diese Operation ist, um mit herkömmlichen Befehlen zu erreichen.

Dies bedeutet, dass ein einzelnes Paar von Verschiebungsbefehlen das Verschieben von Fenstern um die Registerkarten, das Aufteilen von Fenstern in Registerkarten (durch Herausschieben eines Fensters bis zum Ende) und das Zusammenfügen separater Registerkarten zu Fenstern innerhalb einer einzelnen Registerkarte ermöglicht, so ziemlich alles Möglicherweise möchten Sie nicht die Positionsanordnung (was ein separates Thema ist und für die die integrierten Ctrl-W+ Shift-HJKLBefehle gut funktionieren).

Steven Lu
quelle