В 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