Je pensais que Déplacer le volet tmux vers la fenêtre était la même question, mais cela ne semble pas être le cas.
Venant d’utiliser GNU screen régulièrement, je recherche tmux pour faire la même chose. Parmi les choses que je fais régulièrement, il y a plusieurs fenêtres ouvertes, une avec un code ouvert dans vim, et deux fenêtres de terminaux ouvertes pour tester le code, et parfois une fenêtre ou deux pour diverses autres choses. Je divise l'écran verticalement et la fenêtre vim apparaît souvent dans le volet supérieur, puis l'une des autres fenêtres dans le volet inférieur.
Les principales commandes I puis l' utilisation figurent Ctrla, Tabpour faire pivoter entre les vitres et Ctrla, npour une rotation entre les fenêtres à l' intérieur d' une vitre. Par exemple, avec vim dans le volet supérieur, je bascule vers le volet inférieur, puis je fais pivoter les autres terminaux, en faisant tout ce dont j'ai besoin. L'écran reste divisé tout le temps.
Le problème est que je ne trouve pas de capacité comparable à celle de screen Ctrla, ndans tmux. Changer de fenêtre ne semble pas fonctionner dans un volet, mais saute complètement. Si l'écran est divisé, les deux seules options semblent être de passer à une fenêtre qui n'est pas divisée, puis de la scinder ou de créer une sous-division d'un volet. Ni ce que je cherchais.
Suggestions (en plus de coller avec l'écran)?
la source
tmux
une fenêtre peut être divisé en plusieurs volets. Essayez-vous de parcourir les volets d'une fenêtre avec un raccourci clavier?swap-pane
? Si vous cherchez à émuler des écransCtrl-a n
, l'équivalent de tmux est alorsCtrl-b n
.Réponses:
tmux et screen ont des modèles différents, il n’existe donc pas d’équivalent exact.
En termes d' écran , un fractionnement vous permet d'afficher plusieurs fenêtres en même temps.
next
(C-a n
) fait pivoter les fenêtres à travers la partie active de la scission; Cela vous permet de faire pivoter les fenêtres «cachées» dans la région active de la scission.En termes de tmux , une scission divise une fenêtre en un ou plusieurs volets. Chaque partie d’une fenêtre divisée est un volet individuel, les volets ne sont jamais masqués (si une fenêtre est sélectionnée (visible), tous ses volets le sont également), et un volet ne peut être utilisé que dans une seule division de la fenêtre (un volet peut être utilisé). ne pas être dans plusieurs fenêtres, et il ne peut pas être dans plusieurs divisions de la même fenêtre). Il existe des commandes permettant de déplacer les volets dans (ou entre) des fenêtres, mais pas de la même manière que
next
dans l' écran .Vous pouvez utiliser une liaison comme celle-ci pour obtenir un effet similaire:
Vous voudrez probablement le mettre dans votre
~/.tmux.conf
fichier, mais vous pouvez simplement le saisir / le coller après Prefix :pour le lier à votre instance de serveur actuelle.Pour utiliser la liaison, choisissez votre «fenêtre principale», divisez-la, créez une fenêtre «Conteneur de volet» immédiatement après la «fenêtre principale», puis utilisez la liaison pour faire pivoter n’importe quel volet de la «fenêtre principale» dans le groupe « conteneur "fenêtre".
Voici comment vous pouvez créer la configuration:
Choisissez une fenêtre à utiliser comme «fenêtre principale». Commencez (par exemple) Vim dedans.
Divisez votre "fenêtre principale" en deux volets.
Exemples : Prefix "(
:split-window
)Vous pouvez utiliser ce volet comme fenêtre de test (ou visionneuse de journal, ou autre).
Créez une nouvelle fenêtre (le «conteneur de volet») immédiatement après votre fenêtre principale.
Exemples : Prefix c(
:new-window
)Il est important qu'aucune autre fenêtre ne se place entre les index de la "fenêtre principale" et de la fenêtre "Conteneur de volet" (
+
les spécificateurs de fenêtre utilisés dans les commandes liées signifient "la fenêtre suivante numérotée plus haut").Divisez cette fenêtre en un certain nombre de volets. Pour faire une rotation dans trois volets, divisez cette fenêtre en deux (le troisième volet est celui de la «fenêtre principale»).
Peut-être avez-vous besoin d'un shell pour git et d'un shell pour l'exécution d'une interface de base de données. Placez chacun dans un volet séparé de cette fenêtre «Conteneur de volet».
Revenez à votre "fenêtre principale". Sélectionnez le volet que vous souhaitez «faire pivoter».
Vous pouvez utiliser Prefix Up/ Down/ Left/ Rightpour vous déplacer parmi les volets.
Appelez la liaison pour permuter le volet actuel avec le premier volet de la fenêtre «Conteneur de volet» et («en coulisse») faire pivoter les volets à l'intérieur de la fenêtre «Conteneur de volet» (pour que la première commande soit exécutée la prochaine fois. bascule avec le volet «suivant» de la séquence).
Prefix Control- n(la liaison utilise Cn, mais vous pouvez changer cela en ce que vous voulez).
Pour faire défiler les volets vers l’arrière, vous pouvez utiliser ce qui suit:
la source
resize-pane -Z
(par défaut, lié à Prefix + z) qui "agrandit" temporairement un volet pour qu'il soit à la taille de la fenêtre. Pour les versions antérieures à 1.8, il n'y avait pas de moyen intégré de le faire; d'autres ont conçu des solutions scriptées à partir d'autres commandes intégrées (par exemple, certaines des réponses à la question du SU «Maximiser» un volet dans tmux ).C-b o
cycles vitres.Je crois que ce que vous recherchez est Ctrlb+ ( →, ←, ↑, ↓). Ceux-ci vous permettront de vous déplacer entre les panneaux.
la source
Ctrl-b+{
ouCtrl-b+}
? C'est à peu près aussi proche que possible de cette fonctionnalité. Les volets ne sont pas réalisés de la même manière dans tmux car ils sont gérés à l'écran.^b↑
. Comment puis-je alors focaliser le volet en surbrillance de manière à ce qu'un autre↑
soit capturé par le shell, pas par tmux?utilisez
bind -r
pour pouvoir appuyerprefix
une fois sur la touche , puis sur les autres touches de la séquence pour localiser votre volet. Le délai d'attente pourrait être ajusté parrepeat-time
. Vérifierman tmux
Si vous préférez
hjkl
,la source
Voici une petite conf qui vous permet de vous déplacer dans une autre fenêtre en utilisant les raccourcis clavier ALT ou SHIFT + flèche. Pas besoin d'utiliser le préfixe de clé, c'est confortable.
Si vous êtes plus paresseux que moi, vous pourriez également être intéressé par le code suivant qui permet la navigation entre les volets à la souris. (utilisation: préfixe clé + m pour l'allumer, M pour l'éteindre)
cette configuration devrait fonctionner pour tmux 1.6 à 1.9.
la source
Cette réponse vous donne deux panneaux, où les deux panneaux contiennent le même ensemble de fenêtres, mais chaque panneau peut basculer indépendamment d'une fenêtre à l'autre.
L’approche tmux consiste à utiliser trois sessions:
Oui, c’est la philosophie UNIX devenue folle. Commençons:
Vous pouvez maintenant passer au volet supérieur et ouvrir Vim comme d’habitude. Pour parcourir les fenêtres de la session interne (le volet inférieur), vous devez utiliser Ctrl-b Ctrl-b net p.
OK maintenant, au lieu d'ouvrir Vim dans le volet supérieur, connectons-nous à nouveau à votre session interne. Quittez vim et utilisez cette fois une
new-session
commande (avec-t
not not not-s
):Voila! Vous pouvez maintenant parcourir les fenêtres des panneaux supérieur et inférieur.
La raison pour laquelle nous devons utiliser
new-session -t
la deuxième fois est que si nous répétions simplement l'opérationattach -t
, les volets supérieur et inférieur seraient synchronisés, affichant toujours la même fenêtre, ce qui n'est pas ce que vous voulez. Pour laisser ce volet se déplacer d’une fenêtre à l’autre indépendamment de l’autre volet, nous créons une nouvelle session "vue" mais connectons son back-end directement à la session existante qui contient les fenêtres. Ceci est également appelé " sessions groupées ". (D'ailleurs, ce lien suggère également d'utiliser[un]link-window
pour déplacer des fenêtres entre les sessions.)Bien sûr, pour des raisons de symétrie, vous auriez également pu exécuter
tmux new-session -t inner
le volet inférieur au lieu deattach
. Dans ce cas, vous exécuteriez 4 instances de tmux (plus un processus tmux supplémentaire pour le serveur)!la source
Mettez le code suivant dans votre
.tmux.conf
:Reload config, puis vous pouvez appuyer (directement sans touche de préfixe) Shift+ →pour faire défiler les volets dans le sens des aiguilles d’une montre, et Shift+ ←pour faire défiler en sens inverse.
Testé dans Tmux 2.8.
Si vous ne souhaitez pas modifier la configuration, prefix+ oest la liaison de clé par défaut pour un cycle dans le sens des aiguilles d'une montre. J'ai parfois trouvé cette liaison de clé, puis je récupère la commande
tmux list-keys
et l'utilise pour mes propres liaisons de clé:la source