31

我有三个窗口:

1:zsh 2:vim* 3:htop

当我删除当前窗口(#2)时,我还剩下这些窗口:

1:zsh 3:htop

我怎样才能使它自动将它们重新编号为

1:zsh 2:htop

如果我没记错的话,这是 GNU Screen 的默认行为。我知道我总是可以:swap-window,但我想知道这是否可以自动实现。

4

4 回答 4

38

让我们做的更简单。

如果您使用低于 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
于 2013-09-23T06:41:30.017 回答
31

从 tmux 1.7 开始,您只需键入一个命令即可:

tmux movew -r
于 2015-11-23T09:53:23.070 回答
3

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

于 2012-04-29T20:10:56.480 回答
2

下面的 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

[1] http://brainscraps.wikidot.com/tmux-renum

于 2012-01-12T13:01:24.357 回答