web-dev-qa-db-fra.com

Tmux: changer le style de partage de deux volets adjacents

Je me rends compte que le remodelage de la disposition des volets en général n'est pas trivial à décrire, mais je suis au moins intéressé à pouvoir échanger la disposition de deux volets adjacents.

Supposons que j'ai ces volets disposés comme ça

 _____________
|    |        |
|    |   2    |
|    |________|
| 0  |        |
|    |        |
|    |        |
|    |   3    |
|____|        |
| 1  |        |
|____|________|

Et je découvre maintenant que je veux encore plus d'espace vertical avec le volet 3. Ce n'est clairement pas trivial de considérer comment je pourrais le réorganiser avec le volet 0 ou 1, mais ce serait vraiment bien si je pouvais dire à 3 et 2 d'inverser l'axe de fractionnement:

 _____________
|    |     |  |
|    |     |  |
|    |     |  |
| 0  |     |  |
|    |  3  |2 |
|    |     |  |
|    |     |  |
|____|     |  |
| 1  |     |  |
|____|_____|__|

(notez ici que tmux le réorganisera probablement afin que l'ancien 3 devienne le nouveau volet # 2)

Actuellement, lorsque j'essaie d'exécuter join-pane -h pour le réorganiser il me dit "impossible de joindre le volet à sa propre fenêtre". Ouais, eh bien, j'essaie juste de le mélanger sans perturber la disposition entière.

Je suppose qu'une solution de contournement consiste à le répartir dans sa propre fenêtre nommée, puis à le rejoindre immédiatement, bien qu'il semble qu'il ne sera pas en mesure de déterminer l'orientation vers laquelle basculer (horizontal vs vertical).

Notez que ceci est différent de l'opération de permutation des emplacements de deux volets, pour lesquels il existe une commande prête à l'emploi. Je cherche à échanger l'axe de division.

35
Steven Lu
# Here is a jewel of a bind which does the task of flipping the
# orientation of the current pane with the pane before it (in the
# ordering) -- I had a SO question on this and nobody answered.
bind -n M-f move-pane -t '.-'
bind M-f move-pane -t '.-'
bind -n M-r move-pane -h -t '.-'
bind M-r move-pane -h -t '.-'

Le commentaire est un mensonge, cette fonctionnalité n'est pas intuitive et franchement nul, mais elle fonctionne à la rigueur.

Mise à jour: j'ai depuis mis à jour ceci pour supprimer le -n se lie dans ma config, en gros vous voulez laisser ouverte la possibilité de "passer" la frappe via tmux. Par exemple, après un certain temps, j'ai souhaité la même fonctionnalité exacte à l'intérieur de Vim, que j'ai liée à la même combinaison.

21
Steven Lu

Le préfixe + espace est lié à next layout

53
Brandon

C-b space (lié au modèle suivant par défaut) parcourt les modèles disponibles

9
R.F

Si vous voulez vraiment faire exactement ce que vous avez dit, je recommanderais de découper le volet dans une nouvelle fenêtre, puis de le réintégrer.

Par exemple...

Assurez-vous que l'un des deux volets est actif et décomposez-le:

préfixe break-pane

Retournez dans la fenêtre principale (préfixe w) et effectuez toutes les opérations sur les volets restants pour obtenir la mise en page souhaitée

Assurez-vous que le volet est actif et que l'autre volet doit être adjacent à

Assurez-vous que la fenêtre est nommée (ou que le nom attribué est connu)

Accédez à la nouvelle fenêtre dans laquelle le volet a été divisé (préfixe w à nouveau)

join-pane -t <Main Window Name> -h (ou -v si vous voulez une séparation verticale)

1
Steve