我有三個窗口:如何刪除一個tmux重新排序窗口?
1:zsh 2:vim* 3:htop
當我刪除當前窗口(#2),我這些窗口離開:
1:zsh 3:htop
我怎樣才能讓這個它會自動重新編號,它們作爲
1:zsh 2:htop
如果我沒記錯的話,這是GNU Screen的默認行爲。我知道我總是可以用:swap-window
,但我想知道這是否可以自動執行。
我有三個窗口:如何刪除一個tmux重新排序窗口?
1:zsh 2:vim* 3:htop
當我刪除當前窗口(#2),我這些窗口離開:
1:zsh 3:htop
我怎樣才能讓這個它會自動重新編號,它們作爲
1:zsh 2:htop
如果我沒記錯的話,這是GNU Screen的默認行爲。我知道我總是可以用:swap-window
,但我想知道這是否可以自動執行。
讓我們更簡單地做。
如果您正在使用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
這裏的bind-key選項在tmux 1.6下無法正常工作。第一個窗口總是被重新編號到最後,其餘的被移動下來,所以窗口的行爲就像一個循環列表,每次運行時都會旋轉,並可能將它們完全重新排序。克里斯的答案更可靠。 – papercrane
下面的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
此問題現已用C語言實現,並提交給TMUX CVS在OpenBSD。即將發佈Sourceforge便攜版。
https://github.com/ThomasAdam/tmux-obsd/commit/c42e9b038dcdd36944e76954258a484387bd988f
ThomasAdam的鏈接現在已經死了,但是這個特性作爲'move-window -r'命令存在於當前的tmux(1.9a)中。詳情請參閱man tmux。 –
應該有個註釋 – bschlueter
因爲TMUX 1.7,你可以只輸入一個命令這樣做:
tmux movew -r
這對http://superuser.com或http://unix.stackexchange.com會是一個更好的問題。 – ziesemer
像這樣的功能的修補程序已經[浮動在* 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'綁定)。 –
最近發佈的* tmux * 1.7包含'renumber-windows'會話選項(保持窗口號碼無間隙)和'move-window -r'命令(對窗口進行一次重新編號)。如果你想在所有會話中使用「無間隙」數字,那麼你可以在配置文件中放置'set -g renumber-windows on'(一旦你有* tmux * 1.7)。 –