Ich habe eine Lösung ohne externe Skripte. Fügen Sie Folgendes in Ihre .tmux.conf ein:
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;"'
Drücken Sie [PREFIX] -i und geben Sie die gewünschte Einfügeposition an. Die letzten beiden Auswahlfensterbefehle stellen sicher, dass das 'vorherige' Fenster wie erwartet eingestellt ist und Sie zum eingefügten Fenster gehen.
EDIT: ok, ich habe zu früh gesprochen. Ich musste zu wechseln #I
, #{window_id}
da sich der Fensterindex für einige Fenster beim Einfügen ändert. Die neue Funktion (mit zusätzlichen Zeilenumbrüchen zur besseren Lesbarkeit):
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; \
"'
Ich habe mit der Verwendung einer vereinfachten Version über die folgenden 2 Befehle in .tmux.conf begonnen:
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'
Präfix-i fügt ein neues Fenster an Position x ein, wenn Fenster x vorhanden ist, und verschiebt Fenster darüber. Präfix I erstellt ein neues Fenster an Position x, wenn Fenster x nicht vorhanden ist.