Как сделать tmux переупорядочивание окон при удалении?
У меня есть три окна:
1:zsh 2:vim* 3:htop
Когда я удаляю текущее окно (# 2), у меня есть эти окна:
1:zsh 3:htop
Как я могу сделать это так, чтобы он автоматически оценивал их как
1:zsh 2:htop
Если я правильно помню, это поведение по умолчанию экрана GNU. Я знаю, что всегда мог :swap-window
, но я хотел бы знать, возможно ли это автоматически.
Ответы
Ответ 1
Сделайте это проще.
Если вы используете tmux ниже версии 1.7, добавьте следующую строку в ~/.tmux.conf
:
bind-key C-s run "for i in $(tmux lsw|awk -F: '{print $1}'); do tmux movew -s \$i; done"
Вы можете отсортировать все окна, набрав PREFIX-KEY
, затем Ctrl + s.
Иначе, если вы используете tmux версии 1.7 или выше, как уже сказано всем, добавьте следующую строку в ~/.tmux.conf
:
set-option -g renumber-windows on
Ответ 2
Так как tmux 1.7, вы можете ввести только одну команду:
tmux movew -r
Ответ 3
Это теперь реализовано на C и представлено в CVS CVS на OpenBSD. Скоро выйдет на портативный релиз sourceforge.
https://github.com/ThomasAdam/tmux-obsd/commit/c42e9b038dcdd36944e76954258a484387bd988f
Ответ 4
Ниже приведено bash script (обновленная версия [1], чтобы отразить изменения в tmux API) переупорядочивает сеансы tmux. Я предлагаю добавить это как функцию bash, которую вы можете вызывать из любой оболочки.
# re-number tmux sessions
for session in $(tmux ls | awk -F: '{print $1}') ;do
inum=0
for window in $(tmux lsw -t 0 | awk -F: '/^[0-9*]/ {print $1}') ;do
if [ ${window} -gt ${inum} ] ;then
echo "${session}:${window} -> ${session}:${inum}"
tmux movew -d -s ${session}:${window} -t ${session}:${inum}
fi
inum=$((${inum}+1))
done
done
[1] http://brainscraps.wikidot.com/tmux-renum