web-dev-qa-db-ja.com

tmuxでウィンドウの番号を付け直す

私はしばしばtmuxに10個を超えるウィンドウを表示します。後で、古いものをいくつか閉じます。ウィンドウ15、ウィンドウ3(もう存在しない)に番号を付け直す方法はありますか?または、それらすべてを再度packにして、空のスロットがないようにしますか? Ctrl+B, 15を実行できないため、より大きな番号のウィンドウにジャンプすることが難しいため、これを実行したいと思います。 Ctrl+B, wを使用してウィンドウを一覧表示し、開きたいウィンドウに対応する文字を入力する必要があります。

ウィンドウを交換できることは知っています。たとえば、空のスロット3で開く新しいウィンドウ(Ctrl+B, c)を作成できます。次に、swapwウィンドウ15とウィンドウ3を開いてウィンドウ15を閉じます。明らかに、これは面倒なアプローチ。

Tmuxで多くのウィンドウをどのように管理しますか?

138
dogbane

これが必要なようです:

move-window [-rdk] [-s src-window] [-t dst-window]
              (alias: movew)
        This is similar to link-window, except the window at src-window
        is moved to dst-window.  With -r, all windows in the session are
        renumbered in sequential order, respecting the base-index option.

パラメータなしでmovewを呼び出すと、現在のウィンドウが最初の空いている位置に移動します。 movew -rは、一度にすべてのウィンドウの番号を付け直します。

136
gelraen

tmux 1.7には、ギャップレス/パックされたウィンドウ番号の確立と維持に役立つ機能がいくつかあります。

  • move-windowコマンドは、セッション内のすべてのウィンドウ(現在のセッション、または-rオプションで指定されたウィンドウ)の番号を付け直す新しい-tオプションを学習しました。

    {1:A、4:B、15:C}のようなウィンドウのセットがある場合は、move-window -rを実行して、それらを{1:A、2:B、3:C}に再番号付けできます( base-index;で始まります(この例では1)。

  • renumber-windowsセッションオプションが有効になっている場合、tmuxは、ウィンドウが閉じられた後、セッションのウィンドウに自動的に番号を付け直します(move-window -rと同様)。

    この動作が好きな場合は、それをグローバル値でオンにして、オーバーライドしないすべてのセッションで自動的に有効になるようにすることができます。

    set-option -g renumber-windows on
    
101
Chris Johnsen

ウィンドウとのセッションなど、ウィンドウ番号の間にギャップがある状況に自分がいることがよくあります。

1 3 4 8 9 13

それぞれの順序を変更したり、「renumbering-windows」オプションをアクティブにしたりせずにそれらを並べ替えるtmuxスクリプトを作成しました。結果:

1 2 3 4 5 6

以下を.tmux.confに入れてください:

bind R                                      \
    set -g renumber-windows on\;            \
    new-window\; kill-window\;              \
    set -g renumber-windows off\;           \
    display-message "Windows reordered..."

[PREFIX] -Rを押してウィンドウを並べ替えます(またはバインディングを変更します)。

現在、tmux 1.9aを実行しています。

上記はもっと簡単なものに置き換えることができます:

bind R                                      \
    move-window -r\;                        \
    display-message "Windows reordered..."
16
gospes

以前の回答はすべて問題ありませんが、少数のウィンドウを時々シャッフルするだけの場合は、ここに簡潔な解決策があります。

move-window -t <number>

現在のウィンドウを新しいウィンドウ番号に移動します(まだ使用されていない必要があります)。 2つのウィンドウを交換するには、まず1つのウィンドウを新しい番号に一時的に移動します。例えばウィンドウ3と5を交換するには:

move-window -s 3 -t 99
move-window -s 5 -t 3
move-window -s 99 -t 5
6
Pistos

ウィンドウが削除されたときに常に番号を付け直す必要がある場合は、これを.tmux.confで使用できます。

set-option -g renumber-windows on
4
jojman