2011-12-12 243 views
13

我有三个窗口:如何删除一个tmux重新排序窗口?

1:zsh 2:vim* 3:htop 

当我删除当前窗口(#2),我这些窗口离开:

1:zsh 3:htop 

我怎样才能让这个它会自动重新编号,它们作为

1:zsh 2:htop 

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

+0

这对http://superuser.com或http://unix.stackexchange.com会是一个更好的问题。 – ziesemer

+2

像这样的功能的修补程序已经[浮动在* tmux-users *邮件列表](http://search.gmane.org/?query=renumber&group=gmane.comp.terminal-emulators.tmux.user)上,但它们尚未被纳入主要代码。快速搜索“tmux重新编号窗口”会出现一个[执行此类重新编号的脚本](http://brainscraps.wikidot.com/tmux-renum),尽管您必须手动调用它(从shell或通过通过'run-shell'绑定)。 –

+4

最近发布的* tmux * 1.7包含'renumber-windows'会话选项(保持窗口号码无间隙)和'move-window -r'命令(对窗口进行一次重新编号)。如果你想在所有会话中使用“无间隙”数字,那么你可以在配置文件中放置'set -g renumber-windows on'(一旦你有* tmux * 1.7)。 –

回答

15

让我们更简单地做。

如果您正在使用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 +小号

否则,如果你正在使用TMUX 1.7版本或以上,如已经大家说,下一行追加到~/.tmux.conf

set-option -g renumber-windows on 
+0

这里的bind-key选项在tmux 1.6下无法正常工作。第一个窗口总是被重新编号到最后,其余的被移动下来,所以窗口的行为就像一个循环列表,每次运行时都会旋转,并可能将它们完全重新排序。克里斯的答案更可靠。 – papercrane

1

下面的bash脚本([1]的更新版本,以反映tmux API中的更改)重新排列tmux会话。我建议将此添加为可从任何shell调用的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

10

因为TMUX 1.7,你可以只输入一个命令这样做:

tmux movew -r