我有三个窗口:
1:zsh 2:vim* 3:htop
当我删除当前窗口(#2)时,我还剩下这些窗口:
1:zsh 3:htop
如何制作它以便将它们自动重新编号为
1:zsh 2:htop
如果我没记错,这是GNU Screen的默认行为。我知道我可以永远:swap-window
,但我想知道这是否可以自动实现。
答案 0 :(得分:24)
让我们更简单地做。
如果您使用的是版本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
答案 1 :(得分:16)
从tmux 1.7开始,您只需键入一个命令即可:
tmux movew -r
答案 2 :(得分:3)
现在已在C中实现,并在OpenBSD上提交给tmux CVS。即将推出sourceforge便携版本。
https://github.com/ThomasAdam/tmux-obsd/commit/c42e9b038dcdd36944e76954258a484387bd988f
答案 3 :(得分:1)
下面的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