当删除一个窗口时,如何使tmux重新排序?

时间:2011-12-12 03:21:57

标签: unix tmux

我有三个窗口:

1:zsh 2:vim* 3:htop

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

1:zsh 3:htop

如何制作它以便将它们自动重新编号为

1:zsh 2:htop

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

4 个答案:

答案 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

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