tmuxには「move-window」コマンドがあり、次のようにウィンドウを指定した空のインデックスに移動できます。
move-window -t 3
ただし、インデックス3がすでに使用されている場合、現在のウィンドウを位置3に移動することはできません。
既に取得されている場合でも、ウィンドウを位置3に移動(挿入)し、他の後続のウィンドウのウィンドウ番号を増やすことができるオプションを探しています(たとえば、元々3だったウィンドウは、 4になると、次は5になります)
tmuxには「move-window」コマンドがあり、次のようにウィンドウを指定した空のインデックスに移動できます。
move-window -t 3
ただし、インデックス3がすでに使用されている場合、現在のウィンドウを位置3に移動することはできません。
既に取得されている場合でも、ウィンドウを位置3に移動(挿入)し、他の後続のウィンドウのウィンドウ番号を増やすことができるオプションを探しています(たとえば、元々3だったウィンドウは、 4になると、次は5になります)
回答:
以下のスクリプトを使用すると、必要な処理を実行できます。シェルプロンプトから実行するか、次の操作を実行できます。
: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
試してください: new-window -a
新しいウィンドウを作成するときに-aオプションを使用すると、次のインデックスに新しいウィンドウを挿入できますが、他のすべての後続ウィンドウのインデックスは自動的に増加します。
tmux 1.9a
、多分この機能は、以前のバージョンでは使用できませんでした。
私は外部スクリプトを必要としない解決策を持っています。.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に新しいウィンドウを作成します。