我有三个窗口:如何删除一个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)。 –