У мене є рішення без необхідності зовнішніх скриптів. Помістіть у своєму .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:
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'
Префікс-i вставляє нове вікно у позицію x, коли вікно х існує, і переміщує вікна над цим. Префікс-I створює нове вікно в позиції x, коли вікно x не існує.