我有三个窗口:
1:zsh 2:vim* 3:htop
当我删除当前窗口(#2)时,我还剩下这些窗口:
1:zsh 3:htop
我怎样才能使它自动将它们重新编号为
1:zsh 2:htop
如果我没记错的话,这是 GNU Screen 的默认行为。我知道我总是可以:swap-window
,但我想知道这是否可以自动实现。
让我们做的更简单。
如果您使用低于 1.7 版本的 tmux,请将下一行附加到~/.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
从 tmux 1.7 开始,您只需键入一个命令即可:
tmux movew -r
This has now been implemented in C and submitted to tmux CVS on OpenBSD. Will hit the sourceforge portable release soon.
https://github.com/ThomasAdam/tmux-obsd/commit/c42e9b038dcdd36944e76954258a484387bd988f
下面的 bash 脚本([1] 的更新版本以反映 tmux API 的变化)重新排序 tmux 会话。我建议将此添加为 bash 函数,您可以从任何 shell 调用该函数。
# 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