Parfois, je dois déplacer des fenêtres dans un onglet déjà existant, et je me demandais s'il y avait un raccourci de commande / clavier qui pourrait le faire. Je sais que je peux fermer la fenêtre, basculer sur l'onglet, puis l'ouvrir dans une nouvelle division, mais je me demandais s'il y avait un moyen plus court d'accomplir cela. Notez que je veux le déplacer vers un onglet existant , pas un nouvel onglet comme le <C-w>T
fait.
vim-windows
tabbed-user-interface
Arbre à feuilles persistantes
la source
la source
Réponses:
Bien qu'il existe des commandes pour déplacer les fenêtres existantes dans la page à onglet actuelle (c'est-à-dire affecter la disposition des fenêtres en les faisant pivoter, les redimensionner et les déplacer), il n'y a pas de commandes pour déplacer une fenêtre vers un autre onglet.
Comme une fenêtre n'est qu'une fenêtre dans un tampon chargé, vous devez:
:close!
la fenêtre.:sbuffer
le numéro de tampon pour le rouvrir.Vous perdrez ainsi toutes les options spécifiques aux fenêtres. Vous pouvez également les enregistrer et les restaurer dans un script.
la source
:b ab
(tabuler le reste)ab
ne sont que des lettres aléatoires, remplacez-les par le début du nom de fichier souhaité.:b
la complétion de tabulation a très bien fonctionné pour moi, il peut généralement trouver le bon tampon source basé sur une seule lettre et 1-2Tab
touches.L'avantage de cette approche par rapport à Ingo est le manque de noter ou de se souvenir de quoi que ce soit, ce qui signifie moins de charge cognitive. Nom de fichier que vous connaissez déjà de toute façon.
la source
Les deux commandes définies ci-dessous déplacent tous les tampons de l'onglet de droite vers l'onglet actuel, puis ferment l'onglet de droite.
Mtabsp
les déplace en se divisant horizontalement et enMtabvsp
se divisant verticalement. Vous devez déplacer l'onglet fusionné avant d'utiliser les commandes. Utilisez+tabm
,-tabm
ou<n>tabm
.Installer
Ajoutez le script vim ci-dessous à votre
vimrc
:Détails techniques
La fonction Mtab reçoit un paramètre
vert
. Il détermine si l'onglet actuel est divisé horizontalement ou verticalement.Le résultat souhaité est atteint grâce aux étapes suivantes:
Si notre onglet actuel est le dernier, les commandes sont ignorées.
la source
Si c'est un fichier tampon (ne fonctionnera pas pour gratter les tampons etc.), vous pouvez:
:let @f=@%
ENTER - dans la fenêtre source;:echo @f
:e␣
Ctrl-RfENTERRemarque importante: l'étape finale ne fonctionnera pas correctement si le chemin contient des espaces ou des caractères spéciaux! :-( Comme solution de contournement, la commande suivante, légèrement plus longue, devrait fonctionner pour les chemins avec des espaces (bien qu'elle puisse toujours échouer pour certains autres caractères spéciaux):
:e␣"
Ctrl-Rf"
ENTER(c'est-à-dire en citant le résultat de Ctrl-R, f )
Inspiré par les réponses de lkraav et ingo-karkat .
la source