Comment déplacer une fenêtre existante vers un nouvel onglet?


151

Existe-t-il un moyen de prendre une fenêtre existante (fractionnée) et de la mettre dans un nouvel onglet?


Si jamais vous revenez sur cette question, veuillez changer la réponse acceptée, celle de DrAI est beaucoup plus correcte que celle de Mykola.
gbr

Réponses:


261

En plus de l' :tabeditapproche suggérée précédemment , un moyen plus rapide de le faire est (en mode normal) d'appuyer sur Ctrl- W Shift- T. Ctrl-W est le préfixe général pour une grande variété de commandes de manipulation de fenêtres.

Voir:

:help Ctrl-W_T
:help Ctrl-W

3
Notez que help Ctrl-W_Tvous amène à l'entrée d'aide de Ctrl-W_t(minuscules), cependant, plus bas dans la page se trouve l' Ctrl-W_Tentrée (avec un T majuscule), disant "Déplacer la fenêtre actuelle vers une nouvelle page à onglet ...."
Rabarberski

1
@DrAl et comment déplaçons-nous une nouvelle fenêtre d'onglet vers une fenêtre fractionnée?
Ramiz Uddin

@RamizUddin Il n'y a pas de moyen simple de faire cela (car il n'est pas évident dans quelle fenêtre vous voulez vous séparer). Cependant, vous pouvez trouver le numéro de tampon de votre page à onglet actuelle avec :echo bufnr("")et en utilisant ce numéro, vous pouvez diviser une fenêtre avec :sp #3ou :sb 3(en supposant que le nombre était 3). Vous pourrez peut-être proposer des mappages ou des fonctions pour simplifier cela.
DrAl

1
Comment déplacer le tampon vers un nouvel onglet, en conservant son état d'annulation / rétablissement. En d'autres termes, je ne veux pas ouvrir le même fichier dans un nouvel onglet, je veux littéralement déplacer le tampon vers un nouvel onglet, afin que l'historique des modifications puisse être utilisé dans le nouvel onglet. S'il n'y a pas de moyen par défaut de le faire, je parie qu'un plugin peut être créé qui ajoute un nouveau raccourci pour ce faire qui écrit l'historique des annulations dans le fichier d'échange pour le nouveau tampon.
trusktr

2
@trusktr J'imagine que l'ouverture du tampon dans un nouvel onglet avec :sbfonctionnerait, mais avec les versions récentes de Vim (> = 7.3), vous pouvez également utiliser l'annulation persistante en définissant set undodir=/path/to/diroù / chemin / vers / dir est un répertoire que vous créé à cet effet et ensuite set undofile. Cela vous permettra de quitter vim, puis de redémarrer et de conserver l'état d'annulation / rétablissement.
DrAl

103

Essayer

:tabedit %<CR>

3
Je suis simplement curieux de savoir pourquoi vous avez inclus le <CR> avec cela.
Suisse

17
Pour la même raison, j'ai inclus ":". Ceci est la combinaison complète de touches vim en mode normal et vous pouvez l'utiliser dans 'nnoremap' et dans 'nmap'
Mykola Golubyev

6
Cela fonctionne aussi bien sauf que cela clone / duplique la fenêtre dans un nouvel onglet au lieu de la fermer d'abord, puis de l'ouvrir dans un nouvel onglet. Pas grand-chose. Juste quelque chose dont il faut être conscient.
A-Dubb

6
Cela ne déplace pas le tampon vers un nouvel onglet, cela ouvre simplement le même fichier dans un nouvel onglet, mais vous n'aurez pas d'historique d'annulation / rétablissement, etc.
trusktr

5
C-w Test un moyen plus rapide de faire la même chose
Dylanthepiguy

3

Cela déplace le tampon le plus récent dans un nouvel onglet et restaure le tampon précédent dans l'onglet actuel. J'utilise ceci après avoir glissé un nouveau fichier dans mon Gvim

:sbp |wincmd p| wincmd T

Vous pouvez le mapper comme ça sur Ctrl-Backspace

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

il fonctionne particulièrement bien avec

:set switchbuf=usetab

0

J'utilise ceci qui vous donne deux fonctions qui peuvent être liées à une paire de raccourcis clavier ou de commandes, et qui fonctionne de manière assez intuitive. Je suis presque sûr qu'il offre un comportement encore plus convivial que par exemple Ctrl-W_T.

Par exemple, lorsque plusieurs fenêtres sont ouvertes dans plusieurs onglets, l'utilisation de cette fonction vous permet de déplacer spécifiquement la fenêtre actuelle vers l'onglet suivant ou précédent, et si vous déplacez quelque chose avant le premier onglet ou après le dernier onglet, il se transforme dans un tout nouvel onglet.

Cela signifie que si vous avez 2 onglets, chacun ayant une seule fenêtre, déplacer la fenêtre du premier onglet vers la droite le combinera avec le deuxième onglet pour donner un seul onglet avec deux fenêtres. Je ne sais pas à quel point cette opération est compliquée à réaliser en utilisant des commandes traditionnelles.

Cela signifie qu'une seule paire de commandes de déplacement permet à la fois de déplacer les fenêtres autour des onglets, de diviser les fenêtres en onglets (en poussant une fenêtre vers la fin) et de joindre des onglets séparés dans des fenêtres à l'intérieur d'un seul onglet, à peu près tout vous pourriez éventuellement vouloir, à court de disposition positionnelle (qui est un sujet séparé et pour lequel les commandes Ctrl-W+ intégrées Shift-HJKLfonctionnent bien).

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.