Dans screen
, je peux simplement taper C-a :number 0
pour déplacer une fenêtre en haut de la liste des fenêtres et pousser toutes les autres fenêtres vers le bas. Quelle est la séquence de commande équivalente pour tmux
? J'ai regardé la page de manuel, mais je trouve cela déroutant sur ce point.
414
C-b
,.
vous permet de renuméroter une fenêtre.swap-window -s number
etswap-window -t number
pour échanger la fenêtre courante, voyez ma réponse ici .Réponses:
La
swap-window
commande est la plus proche de ce que vous voulez.« Prefix: » (c'est Ctrl+ B, :par défaut) vous amène à l'invite tmux-commande. Là vous entrez:
de laisser la fenêtre numéro 3 et la fenêtre numéro 1 échanger leurs positions.
Pour échanger la fenêtre actuelle avec la fenêtre supérieure, procédez comme suit:
Dans le cas peu probable où aucune fenêtre ne serait présente à l'indice 0, procédez comme suit:
(si base-index est 0, comme c'est le cas par défaut).
Vous pouvez lier cette commande à une clé (T pour "top" par exemple) en ajoutant ce qui suit à votre
~/.tmux.conf
:la source
move-window
ne fonctionne que s'il n'y a pas une autre fenêtre à l'index donné. Donc, dans la plupart des cas,move-window -t 0
cela ne fonctionnera pas, car habituellement, il y aura déjà une autre fenêtre à cette position.movew
.bind-key L swap-window -t -1
pour en faire la dernière fenêtre.swapw -s number
etswapw -t number
pour échanger la fenêtre courante, voyez ma réponse ici .En ajoutant à la réponse de Gareth, vous pouvez utiliser les raccourcis clavier suivants
Appuyez sur Ctrl + Maj + Gauche (pour déplacer la fenêtre actuelle vers la gauche. De même pour la droite. Inutile d'utiliser le modificateur (Cb).
la source
-1
et la+1
syntaxe aident à résoudre le problème des indices occupés. tmux changera les autres fenêtres pour vous et l’événement se déroulera automatiquement jusqu’à la fin. C'est la meilleure réponse.bind-key S-Left swap-window -t -1
, afin que je puisse faire <préfixe> Maj + flèche, car je n'aime pas gâcher les raccourcis clavier des programmes.bind-key -n C-H swap-window -t -1
bind-key -n C-S-Left swap-window -t -1
mais cela fonctionne correctement lorsque vous utilisez le préfixe suggéré par @MatthewMitchellL'équivalent de tmux
:number 42
est:move-window -t 42
.la source
:move-window
n'est pas équivalent à screen:number
.:number
échange si la destination existe,:move-window
échoue dans ce cas. Vous devez choisir entre:move-window
et:swap-window
Je renumérote les fenêtres comme ceci:
Ctrl+ b,
.
,222
rendrait la
tmux
fenêtre en cours (tous les volets) numéro 222.Relativement: quand je remue les choses j'ai tendance à vouloir faire
Ctrl+b
:new-session -d -s "reading"
et de là , je peux aussi utiliser Ctrl+ b,
.
,reading
pour déplacer la fenêtre en cours (toutes les vitres à la fois) au cours de la séance de lecture. Vous pouvez naviguer entre les sessions avec Ctrl+ b,s
la façon dont vous naviguer à l' intérieur session en utilisant Ctrl+ b,w
.HTH
la source
Vous pouvez mettre en œuvre un équivalent à
screen
l »number
commande en utilisant un script shell externe qui choisit entreswap-window
etmove-window
. Vous pouvez le lier à une clé de cette façon:~/.tmux.number.sh
:la source
-F
option qui n’est pas acceptée par ma version de tmux.Utiliser la fenêtre d'échange pour passer à n'importe quel identifiant: [le plus proche de: numéro de l'écran]
[m pour le déplacement -> appuyez sur prefix-m et entrez say 3. . renuméroter la fenêtre en 3]
la source
Depuis la réponse de Ashish Ariga ne fonctionne pas sur la version 1.9a et inférieure. J'utilise
<
et>
permute la fenêtre à gauche et à droite, respectivement, en ajoutant la ligne ci-dessous à.tmux.conf
.la source
La solution la plus simple de
man
, consiste à utiliser les liaisons par défaut:la source
Pour ceux d'entre vous qui utilisent
byobu
votre wrapper pour tmux, vous pouvez échanger la fenêtre actuelle avec la fenêtre précédente ou suivante avec:La liaison de clé définie par
byobu
pour ces clés peut être intéressante:la source
L'approche que j'utilise combine un peu de la réponse d'Ashish à celle de morceaux; Les flèches alt gauche et droite sont liées à une petite légende de shell rapide qui déplace la fenêtre vers la gauche ou la droite, à moins que ce ne soit la première ou la dernière fenêtre, avec respect. Je l'ai fait parce que, lorsque vous émettez un échange +1 à la dernière fenêtre (ou -1 à la première fenêtre), il sera toujours échangé au lieu de revenir en boucle comme vous le souhaitiez:
Devient
Au lieu de
Ainsi, les commandes que j'utilise cessent de fonctionner lorsque la fenêtre a atteint le bord de la liste:
Cela peut facilement être combiné avec windows -index et renumber-windows pour obtenir une liste de fenêtres qui commencent à un nombre arbitraire et qui ne présentent jamais de lacunes.
Si vous utilisez l' indice de base 1 comme moi et que vous ne pensez pas aller au-delà de 999 fenêtres, vous pouvez utiliser un petit truc pour le faire rouler correctement, même si les commandes sont un peu trop lourdes:
Cela fonctionne en déplaçant temporairement la dernière fenêtre vers l'index-0 non utilisé, puis en appelant move-window -r pour les renuméroter à partir de 1. Cela fonctionne de la même manière lorsque vous déplacez la première fenêtre à la fin. en choisissant un nombre énorme que vous n'utiliserez jamais, cela garantira que lorsque move-window -r se déclenchera à nouveau, tout sera numéroté comme vous le souhaitiez. Si vous vous interrogez sur refresh-client -S , cela est nécessaire car, parfois, même si la réorganisation à partir de la fenêtre de déplacement fonctionne correctement, la barre d'état ne se met pas à jour tant que d'autres modifications ne sont pas apportées. En évitant d'actualiser uniquement la barre d'état (-S), vous évitez cela.
Le seul problème que je puisse trouver avec cette approche est que swap-window modifiera implicitement la dernière fenêtre utilisée par celle avec laquelle vous avez échangé. Ainsi, si vous êtes sur la fenêtre n ° 1, passez à la fenêtre quatre et déplacez-la d'une seconde, vous constaterez que votre dernière fenêtre utilisée est la nouvelle n ° 4 (anciennement n ° 3) au lieu de la n ° 1. Il ne semble pas y avoir de solution.
la source
vous pouvez utiliser
base-index
pour changer le numéro de départ de vos fenêtres. si vous réglezbase-index
sur1
, alorsmove-window -r
renumérotera toutes les fenêtres à partir de1
, libérant ainsi0
une fenêtre dans son emplacement:Lorsque vous avez terminé, vous pouvez réinitialiser
base-index
à0
si vous souhaitez utilisermove-window -r
plus tard sans déplacer votre fenêtre à0
la source
tmux-pain-control fournit
ctrl-b >
et permetctrl-b <
de déplacer la fenêtre focalisée vers la droite et la gauche, en l’enveloppant.la source
Les deux
swap-window -s 5
etswap-window -t 5
échanger la fenêtre actuelle avec la fenêtre 5, mais avec une sémantique différente.swap-window -s 5
swap-window -t 5
le
number
dansswap-window -s number
et-t number
pourrait être à la fois absolu , par exemple 5, et relatif , par exemple -1, +2.PS ci-dessous est un extrait de tmux statusline illustrant l’effet de
swap-window -s 5
récent:
[0] 0:vim- 1:mpl 2:py2* 3:numpy 4:plot 5:mc
maintenant, après
last-window
:[0] 0:vim* 1:mpl 2:py2- 3:numpy 4:plot 5:mc
après
swapw -s 5
:[0] 0:mc* 1:mpl 2:py2- 3:numpy 4:plot 5:vim
un autre
swapw -s 5
:[0] 0:vim* 1:mpl 2:py2- 3:numpy 4:plot 5:mc
un autre
last-window
:[0] 0:vim- 1:mpl 2:py2* 3:numpy 4:plot 5:mc
la source
Dans la fenêtre tmux, essayez ce qui suit pour échanger la fenêtre 0 avec 1:
$ tmux swap-window -d -s 0 -t 1
la source
Je pense que vous souhaitez lier une nouvelle combinaison de touches à la commande 'choisir une fenêtre'.
Je sais que vous avez dit que vous avez déjà lu la page de manuel, mais vous devriez vous y reporter. vous devez modifier votre fichier ~ / .tmux.conf pour ajouter une commande bind-key.
Plus précisément, regardez à la page 4 de ce qui suit.
Page de manuel de tmux
la source
choose-window
ne semble pas déplacer la fenêtre actuelle vers une nouvelle position.choose-window
est déjà lié àC-B w
.C'est la méthode que j'utilise. Vous ne pouvez toujours pas déplacer une fenêtre vers un index occupé, mais vous pouvez en déplacer une vers un index supérieur (index non utilisé) et le réorganiser dans l'espace où se trouvait l'index précédent.
Supposons que vous ayez 3 fenêtres et que vous vouliez en ajouter une quatrième, mais à l’endroit où elles étaient auparavant.
Avant d’ajouter une nouvelle fenêtre: préfixe Tmux alors. ouvrira la commande de déplacement. Tapez 4 et l'index de 3 deviendra 4, puis ajoutez simplement une autre fenêtre et ce sera à l'index 3 et votre ancienne fenêtre sera toujours à l'index 4.
la source
Tout d’abord, ouvrez la commande tmux, puis appuyez sur et relâchez:
Et pour changer la fenêtre actuelle dans la fenêtre de droite (dans un ordre circulaire), il suffit de faire:
Pour changer la fenêtre réelle à gauche:
SHIFT
quand presse}
ou{
.la source
Pour ce que ça vaut:
J'ai piraté ce script pour pouvoir commander toutes les fenêtres dans un "TUI". Il répertorie toutes vos fenêtres dans un fichier temporaire, l'ouvre avec votre éditeur par défaut (en supposant que vous ayez défini $ EDITOR). Après cela, vous pouvez réorganiser les lignes et après avoir enregistré et fermé le fichier, les fenêtres sont réorganisées en conséquence. (Ceci est similaire à la commande commet quand on fait
git rebase -i
)Il pourrait probablement être beaucoup amélioré, en particulier:
REMARQUE : vous pourriez être déplacé vers une autre fenêtre après avoir exécuté la commande.
Un gif en action (github)
la source
Aucune des réponses ici ne m'a satisfait, alors j'ai écrit un script qui imite (en quelque sorte) le
screen
comportement de déplacement de fenêtretmux
.Il détecte si le numéro de la fenêtre de destination est plus petit que le numéro de la fenêtre le plus petit ou est supérieur au numéro de la fenêtre le plus grand. . Ceci est fait avec la
move-window
commande.Si le numéro de fenêtre se situe entre les plus petits / plus grands nombres (c'est-à-dire, correspond probablement à un numéro de fenêtre existant), il les échange simplement avec la
swap-window
commande.Voici le script:
Ensuite, ajoutez simplement cette liaison de clé simple à votre
.tmux.conf
:Remarque : pour imiter parfaitement le
screen
comportement de permutation de fenêtre, je pense que lorsque vous déplacez une fenêtre vers un numéro de fenêtre existant , elle doit prendre la place de cette fenêtre et toutes les autres fenêtres sont décalées vers la droite . Il serait assez simple de modifier ce script pour le faire.la source
Pas besoin de la ligne de commande (qui est Ctrl+ bet ensuite :)
Il suffit de déplacer vos fenêtres avec
Ctrl+ b+:
puis entrez le nouveau numéro de fenêtre (libre) et appuyez sur Enter
S'il y a maintenant un numéro de fenêtre libre, utilisez Ctrl+ b+ .pour renuméroter une fenêtre.
(Astuce: nommez vos fenêtres avec Ctrl+ b+ ,si vous perdez la trace de laquelle)
la source