2011-12-12 242 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