Вопрос Как изменить порядок окон tmux?


В screen, Я могу просто набрать C-a :number 0 для перемещения окна в верхнюю часть списка окон и нажатия всех остальных окон вниз. Какова эквивалентная последовательность команд для tmux? Я посмотрел на страницу руководства, но я нахожу это сбивающим с толку.


357
2018-02-02 19:53


происхождения


C-b, . позволяет изменить нумерацию окна. - isomorphismes
Читая все многочисленные ответы, я все еще не вижу легкого решения вопроса OP: как переместить данное окно в положение 0 и сдвинуть все остальное вправо. Нужно ли мне вручную менять каждый из них, чтобы сделать это? Я просто хочу отменить ход, который я сделал по ошибке (и я не уверен, что именно), который, я думаю, переместил окно 0 в окно 8 и переместил все остальные влево. - nealmcb
@nealmcb самый легкий, который я мог бы придумать, - установить базовый индекс на 1, перенумеровать, а затем переместить окно в пустой 0 слот: superuser.com/a/1155999/674549 - eMBee
Для различия swap-window -s number а также swap-window -t number для замены текущего окна, см. мой ответ здесь, - qeatzy
Видеть этот ответ для функции bash для переключения диапазона окон tmux, например [2-5] из окон [0-6]. - qeatzy


ответы:


swap-window команда ближе всего к тому, что вы хотите.

«Префикс:» (то есть «Ctrl-B:» по умолчанию) приводит вас в командную строку tmux. Там вы вводите:

swap-window -s 3 -t 1

чтобы окна номер 3 и номер окна 1 заменяли свои позиции.

Чтобы поменять текущее окно на верхнее окно, выполните следующие действия:

swap-window -t 0

В маловероятном случае отсутствия окна с индексом 0 выполните:

move-window -t 0

(если базовый индекс равен 0, как и по умолчанию).

Вы можете связать эту команду с ключом (например, для «сверху»), добавив следующее к вашему ~/.tmux.conf:

bind-key T swap-window -t 0

397
2018-03-01 09:39



Спасибо за ваше редактирование, но move-window работает только, если в данном индексе нет другого окна. Поэтому в большинстве случаев, move-window -t 0 не будет работать, так как обычно уже будет другое окно на этой позиции. - matlehmann
Правильно, я улучшу его. - zakkak
Вы можете взглянуть на movew, - Marcello Romani
Также, bind-key L swap-window -t -1 чтобы сделать это последним окном. - w17t
Для различия swapw -s number а также swapw -t number для замены текущего окна, см. мой ответ здесь, - qeatzy


Добавляя к ответу Гарета, вы можете использовать следующие привязки клавиш

bind-key -n C-S-Left swap-window -t -1
bind-key -n C-S-Right swap-window -t +1

Нажатие Ctrl + Shift + Left (перемещает текущее окно влево. Точно так же. Нет необходимости использовать модификатор (C-b).


210
2018-02-15 11:18



Эта -1 а также +1 синтаксис помогает решить проблему занятых индексов. tmux переместит другие окна для вас и автоматически перенесет событие в конец / начало. Это лучший ответ. - brianpeiris
Это благочестиво! Благодарю. - Bruno Buccolo
Моя неспособность легко перемещать окна tmux вызывала меня в течение нескольких недель. Это облегчает работу с окнами! Большое спасибо из недавнего преобразования tmux. - calvinf
Большой намек, предпочитайте bind-key S-Left swap-window -t -1, поэтому я могу сделать <префикс> shift + стрелка, так как мне не нравится испортить привязки клавиш для программ. - demure
Если вы используете буквы, вам нужно использовать заглавную букву, а не C-S, например: bind-key -n C-H swap-window -t -1 - Matthew Mitchell


Tmux эквивалентно :number 42 является :move-window -t 42,


60
2018-04-05 22:12



Это связано с C-b. - vedang
Благодаря! Это намного лучше, чем принятый ответ imo. - Ashe
@ArlenCuss На самом деле оба ответа хороши и полезны. Вы видите, используя экран: номер, вы можете менять окна, используя tmux's: move-window, вы можете перемещать только окно, если целевой индекс не используется. Итак, imo, оба: swap-window и: move-window необходимы, чтобы захватить контроль над окнами. :) - Victor Farazdagi
+1 для получения ответа от гуру программирования (также за правильность). Это единственный способ заставить его работать в активном окне - engineerDave
tmux-х :move-window является не эквивалентно экрану :number, :number свопы, если пункт назначения существует, :move-window в этом случае не выполняется. Вы должны выбирать между :move-window а также :swap-window - piec


Вы можете реализовать эквивалент screen«s number команды с использованием внешнего сценария оболочки, который выбирает между swap-window а также move-window, Вы можете привязать его к ключу следующим образом:

bind < command-prompt -p index "run-shell '~/.tmux.number.sh %%'"

~/.tmux.number.sh:

#!/bin/bash
if [ $# -ne 1 -o -z "$1" ]; then
    exit 1
fi
if tmux list-windows | grep -q "^$1:"; then
    tmux swap-window -t $1
else
    tmux move-window -t $1
fi

12
2018-04-16 15:42



Очень приятное решение, отлично работает! Я просто сделал небольшие изменения для очистки и удалил -F вариант, который не был принят моей версией tmux. - haridsv


Я нумерую окна следующим образом:

Ctrl+б, ., 222

будет tmux окно (все панели) номер 222.


Связано: Когда я перетасовываю вещи вокруг, я, как правило, хочу сделать

Ctrl+б  :new-session -d -s "reading"

и оттуда я также могу использовать Ctrl+б, ., reading для перемещения текущего окна (все панели одновременно) до сеанса чтения. Вы можете просматривать сеансы с помощью Ctrl+б, s способ просмотра в сеансе с использованием Ctrl+б, w,

НТН


10
2017-07-09 22:16





Использование swap-окна для перехода к любому id: [ближе к экрану: номер]

# window movement / renumbering like in screen's :number
bind-key m command-prompt -p "move window to:"  "swap-window -t '%%'"

[m для перемещения -> нажмите префикс-m и введите say 3. . изменить нумеру на 3]


8
2017-12-12 03:13



Это уже хорошо, но даже лучше было бы: сделать swap-окно, и если он не сработает, вернитесь в окно перемещения - nisc


Поскольку ответ Ашиша Ариги не работает на версии 1.9a и ниже. я использую < а также > для замены окна слева и справа, соответственно, добавив строку ниже .tmux.conf,

# swap window to left or right
bind-key -r < swap-window -t -1
bind-key -r > swap-window -t +1

5
2018-03-18 17:08





Для тех из вас, кто использует byobu как ваш обертку для tmux, вы можете поменять текущее окно на предыдущее или следующее окно с помощью:

Ctrl-Shift-F3
Ctrl-Shift-F4

Связывание ключей, определяемое byobu для этих ключей могут представлять интерес:

bind-key -n    C-S-F3 swap-window -t :-1
bind-key -n    C-S-F4 swap-window -t :+1

3
2018-01-26 00:48



Было бы здорово ярлык для перемещения вокруг расколов в определенное окно. - Pablo Bianchi