tmux-指定された位置にウィンドウを挿入します


13

tmuxには「move-window」コマンドがあり、次のようにウィンドウを指定した空のインデックスに移動できます。

move-window -t 3

ただし、インデックス3がすでに使用されている場合、現在のウィンドウを位置3に移動することはできません。

既に取得されている場合でも、ウィンドウを位置3に移動(挿入)し、他の後続のウィンドウのウィンドウ番号を増やすことができるオプションを探しています(たとえば、元々3だったウィンドウは、 4になると、次は5になります)

tmux 

回答:


2

以下のスクリプトを使用すると、必要な処理を実行できます。シェルプロンプトから実行するか、次の操作を実行できます。

:run "ins-move 2 5"

その例は、ウィンドウ2をウィンドウ5の前の位置に移動します。

#!/bin/bash
for ((i=$1; i<$2-1; i++))
do
    tmux swap-window -s :$i -t :$((i+1))
done

ありがとう!うまく動作します-「5 2」のような場合でも動作するように調整する必要があります。少なくとも今、私はそれがどのように行われたかを知っています。

@アンドレイ:始められたことがうれしいです。回答を受け入れたものとしてマークし、適切だと思うときに賛成することを忘れないでください。
追って通知があるまで一時停止しました。

私は今あなたの答えを支持しました。私は今、十分な評判ポイントを得たので、前にそれを行うことができませんでした。

25

試してください: new-window -a

新しいウィンドウを作成するときに-aオプションを使用すると、次のインデックスに新しいウィンドウを挿入できますが、他のすべての後続ウィンドウのインデックスは自動的に増加します。


@DennisWilliamsonより良い解決策のように見えますが、申し訳ありませんデニス:-)私が実行しているよtmux 1.9a、多分この機能は、以前のバージョンでは使用できませんでした。
ソニアハミルトン

驚くばかり。どうしてそれを見逃したのかわかりません。あなたは過去4年間のタイムトラベラーから私を救ってくれました!ありがとう!
RLD。

あなたはインデックス0で新しいウィンドウをしたい場合は動作しません
NCCC

1

私は外部スクリプトを必要としない解決策を持っています。.tmux.confに次を追加します。

bind i command-prompt -p 'Insert window at:' 'run-shell "if tmux select-window -t %1; then tmux new-window -a; tmux swap-window -s %1 -t \$((%1+1)); else tmux new-window; tmux move-window -t %1; fi; tmux select-window -t #I; tmux select-window -t %1;"'

[PREFIX] -iを押して、必要な挿入場所を指定します。最後の2つのウィンドウ選択コマンドは、「前の」ウィンドウが期待どおりに設定されていることを確認し、挿入されたウィンドウに移動します。

編集:わかりました、私はあまりにも早く話しました。挿入時にウィンドウのインデックスが変更さ#Iれる#{window_id}ため、変更する必要がありました。新機能(読みやすくするために改行を追加):

bind i command-prompt -p 'Insert window at:' '      \
    run-shell "                                     \
        if tmux select-window -t %1; then           \
            tmux new-window -a;                     \
            tmux swap-window -s %1 -t \$((%1+1));   \
        else                                        \
            tmux new-window;                        \
            tmux move-window -t %1;                 \
        fi;                                         \
        tmux select-window -t #{window_id};         \
        tmux select-window -t %1;                   \
    "'                                               

.tmux.confの次の2つのコマンドを使用して、簡易バージョンの使用を開始しました。

 bind i command-prompt -p 'Insert window at:' 'new-window -a -t %1; swap-window -t -1'
 bind I command-prompt -p 'New window at:'    'new-window -t %1'

Prefix-iは、ウィンドウxが存在する場合、位置xに新しいウィンドウを挿入し、その上にウィンドウを移動します。Prefix-Iは、ウィンドウxが存在しない場合、位置xに新しいウィンドウを作成します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.