У меня есть решение без необходимости использования внешних скриптов. Поместите следующее в ваш .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 команды select-window убедитесь, что «предыдущее» окно установлено в соответствии с ожиданиями, и вы переходите к вставленному окну.
РЕДАКТИРОВАТЬ: хорошо, я говорил слишком рано. Мне пришлось изменить #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; \
"'
Я начал использовать упрощенную версию с помощью следующих 2 команд в .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'
Prefix-i вставляет новое окно в положение x, когда окно x существует, и перемещает окна выше этого. Префикс-I создает новое окно в позиции x, когда окно x не существует.