1
20
2015
10

恢复 tmux 窗口名称的自动设置

本文来自依云's Blog,转载请注明。

tmux 我已经用了好几年了,然而从未使用得多么深入,偶尔有些小不满也一直没有去研究看看能不能解决,其中就包括这么一项:tmux 窗口名称(就是显示在状态栏上的那个)默认会随着前台所运行的命令的不同而自动变化。但是,如果窗口名称被设置过之后,不管是通过prefix A设置的,还是通过终端转义序列设置的,之后它就再也不会自动变化了。

本来这也不是多大的事。偶尔会因为不小心往终端输出了些二进制数据弄乱终端标题,我要么是把它重新设置成「zsh」,要么直接关掉再开一个窗口,反正是很容器的事情。可是呢,公司服务器的 zsh 会把终端标题设置成当前的工作目录,ssh 退出时也不会清除。本来呢,我是专门再开一个终端来跑,完事之后再关掉。可是,习惯的力量是巨大的,我还是会时不时地在 tmux 窗口里 ssh 连过去,然后 tmux 窗口名称就坏掉了。

今天我终于决定把此事查个水落石出。既然主动设置之后就不再变化,那么 tmux 肯定用某种方法把「主动设置过窗口名称」这个信息给记录了下来。然后我就去 tmux 源码里找啊找,结果很意外地看到一个叫「automatic-rename」选项!敢情 tmux 早知道有人会对此不爽,专门弄了个选项呀。然后直接在1500行的 man 文档里搜索这个选项名称就可以了。

默认,tmux 的「automatic-rename」选项的全局值为「on」,也就是根据正在前台运行的命令自动设置。一旦窗口获得了一个用户或者程序指定的标题,不管是创建窗口时指定的,还是后来通过「rename-window」改的,又或者是通过终端转义序列改的,窗口局部的「automatic-rename」值就会被设置为「off」,也就是不会再自动变化了。所以,想要恢复 tmux 窗口的这个行为,只要把这个选项再次打开即可:

tmux setw automatic-rename on

或者,取消设置此窗口的局部值,这样 tmux 会使用全局值:

tmux setw -u automatic-rename

终于又解决了一个困扰已久的小麻烦~话说,直接去源码里寻找,远比在比 wget 手册还要长的 manpage 里乱逛要高效呢=w=

Category: Linux | Tags: tmux | Read Count: 9064
Yichao Yu 说:
Jan 20, 2015 09:26:55 PM

主要是源码里面逻辑比较清晰吧....

Avatar_small
依云 说:
Jan 20, 2015 11:12:48 PM

不是。源码里的关键词比较好猜,也多,更容易命中~

Fwolf 说:
Jan 21, 2015 09:27:32 AM

我也遇到过这个问题,也是没有注意。

你说的这个 automatic-rename 选项,应该是新加的,Ubuntu 12.04 里面没有。

jiazhoulvke 说:
Jan 21, 2015 09:30:21 AM

有些软件的手册写得跟天书一样,又不给示例,一看就头大。

SpicyCat 说:
Jan 21, 2015 11:09:03 AM

我也用tmux。我现在是用byobu+tmuxinator, 感觉还不错。

Avatar_small
依云 说:
Jan 21, 2015 11:29:02 AM

好老的版本……是 tmux 1.6 吗?那个版本我观察到了内存泄漏呢。
我查了一下,这个选项是 20 January 2009 添加的,从 github 上取得的源码库里的 git 提交是 2d15f5985930f493d6df7f58399639ae64057c4a,tmux 0.8 就已经包含了的呀。

Fwolf 说:
Jan 22, 2015 09:20:29 AM

对,tmux 1.6,由于环境需要,暂时还不能升级,先凑合用吧,我另外有一个ArchLinux,回头再试试。

Jenkins 说:
Nov 16, 2015 09:49:30 AM

设置为on的时候,打开一个程序,自动变成程序名,而设置为off的时候,远程登陆服务器的时候,会变成远程服务器的名字,蛋疼

Jenkins 说:
Dec 16, 2015 02:34:50 PM

终于解决了,依云的方法只能解决部分


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter

部分静态文件存储由又拍云存储提供。 | Theme: Aeros 2.0 by TheBuckmaker.com