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

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

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

решение1

Эта swap-windowкоманда наиболее близка к тому, что вам нужно.

"Prefix :" (то есть Ctrl+ Bпо :умолчанию) переносит вас в командную строку tmux. Там вы вводите:

swap-window -s 3 -t 1

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

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

swap-window -t 0

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

move-window -t 0

(если base-index равен 0, как по умолчанию). Команда move-window -t <NUMBER>по умолчанию привязана к Ctrl+ B, ..

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

bind-key T swap-window -t 0

решение2

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

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

Нажатие Ctrl+Shift+Left (переместит текущее окно влево. Аналогично вправо. Не нужно использовать модификатор (Cb).

Для версии tmux 3.0 следует использовать следующие сочетания клавиш

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

решение3

Эквивалент tmux :number 42:move-window -t 42.

решение4

Вы можете реализовать эквивалент команды 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

Связанный контент