Изменение порядка окон tmux

Как я могу эффективно переупорядочить окна в tmux? Например, имея этот набор окон:

0:zsh  1:elinks  2:mutt  3:irssi  4:emacs  5:rss  6:htop

Что мне нужно сделать, чтобы переместить rss между elinks и mutt, в итоге:

0:zsh  1:elinks  2:rss  3:mutt  4:irssi  5:emacs  6:htop

Я знаю, как использовать move-window, чтобы переместить окно в еще неиспользованный индекс, и я мог бы использовать их ряд достичь этого, но, очевидно, это очень утомительно.

16 голосов | спросил igor 21 AM000000110000005631 2014, 11:49:56

3 ответа


32

swap-window может помочь вам:

swap-window -t -1

Он перемещает текущее окно влево на одну позицию.

От человек tmux :

swap-window [-d] [-s src-window] [-t dst-window]
             (alias: swapw)
This is similar to link-window, except the source and destination windows are swapped. 
It is an error if no window exists at src-window.

Вы можете привязать его к ключу:

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

Затем вы можете использовать Shift+Left и Shift+Right, чтобы изменить текущее положение окна.

ответил cuonglm 21 PM000000120000004131 2014, 12:03:41
0

Вот рабочее решение, завернутое в функцию bash.

list=$(tmux lsw -F '#I');                           # for shift left, could be moved inside function
list=$(tmux lsw -F '#I'); list=$(echo $list|rev);   # for shift right, list reversed
shift_tmux_window_range() {  # depend on `list`
    local started=0 beg=$1 end=$2
    for i in $list; do
        if (($i == $beg)); then
            started=1; h=$beg; tmux linkw -s $beg && tmux unlinkw -t $beg;
        elif (($i == $end)); then
            tmux movew -d -s $i -t $h; tmux movew -d -t $end; break;
        elif [ $started = 1 ]; then
            tmux movew -d -s $i -t $h; h=$i;
        fi;
    done
}

shift_tmux_window_range 5 2

Бонус: оставайтесь в том же окне, если не повлияло текущее активное окно.

ответил qeatzy 7 +03002017-10-07T15:58:54+03:00312017bEurope/MoscowSat, 07 Oct 2017 15:58:54 +0300 2017, 15:58:54
-1

Если tmux - версия 1.7 или выше

move-window -r

или

set-option -g renumber-windows on

в .tmux.conf для автоматического выполнения в будущем.

ответил gaurav 21 Jpm1000000pmThu, 21 Jan 2016 15:32:19 +030016 2016, 15:32:19

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132