为了在每次 shell 登录时启动tmux
,将以下内容添加到~/.bashrc
(在服务器上):
if [ $TERM != "screen-256color" ] && [ $TERM != "screen" ]; then
tmux attach || tmux new; exit
fi
我还想在 ssh 进入主机时将窗口标题更改为类似user@server
(而不是)的内容。user@localhost
这是我的~/.tmux.conf
:
set -g prefix C-a
unbind C-b
bind C-a send-prefix
set -g set-titles on
set -g set-titles-string "#T"
bind-key o split-window -v
bind-key e split-window -h
bind-key w kill-pane
set -g terminal-overrides 'xterm*:smcup@:rmcup@'
正如您所看到的,set-titles
已设置为on
,但它没有按预期工作。
更多信息:
在 tmux 之外:
$ echo $TERM
xterm
tmux 内部:
$ echo $TERM
screen
show -g
:https://clbin.com/h7oDh
tmux info
:http://sprunge.us/XHCB
tmux -vvvvv
这是运行一段时间后的日志:
- tmux-client-8441.log:https://clbin.com/eFwFF
- tmux-out-8443.log:https://clbin.com/MSKZv
- tmux-server-8443.log:https://clbin.com/JXwRN
如果我注释掉 中的行~/.bashrc
,从我的笔记本电脑,ssh 到服务器,标题栏会正确显示 ( quanta@server
),然后tmux
从那里开始也按预期工作。
但如果我想tmux
在登录后立即启动,标题栏仍然在quanta@Ubuntu
ssh之后。
更新 5 月 10 日星期五 07:51:23 ICT 2013
我删除了该exit
命令,以便在tmux
关闭最后一个窗口时不关闭 shell 会话:
if [ $TERM != "screen-256color" ] && [ $TERM != "screen" ]; then
tmux attach || tmux new
fi
奇怪的是:
- ssh 到服务器 -> 标题栏:
quanta@Ubuntu
- 分离
tmux
-> 标题栏切换到quanta@server
- 再次附加
tmux
-> 标题栏仍然正确显示quanta@server
不知道是否与PROMPT_COMMAND
环境变量有关:
在外面tmux
:
$ echo $PROMPT_COMMAND
echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\007"
代替tmux
:
$ echo $PROMPT_COMMAND
echo -ne "\033_${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\033\\"
答案1
答案2
从 tmux-users 邮件列表中发现了这个线程。该主题的标题是:设置标题不起作用。这个线程中有一些事情可以尝试。有一个线程的更干净版本这里也一样。
XTerm 资源
对于初学者来说,最终的修复是将以下行添加到您的 XTerm 资源文件中~/.Xresources
:
XTerm*allowSendEvents: true
调试 tmux 技巧
该线程中还有一些调试技巧也可能对您有所帮助。
详细的tmux
- 关闭所有 tmux 会话
- 运行命令:
tmux -vvvvv
- 运行命令:
vi foo
- 保存文件
- 退出tmux
执行此操作后,您应该有 3 个文件,如下所示:
- tmux-out-21594.log
- tmux-client-21592.log
- tmux-server-21594.log
多路复用信息
$ tmux info
tmux 1.4, pid 22182, started Fri May 10 04:00:37 2013
socket path /var/run/tmux/tmux-500/default, debug level 0
system is Linux 2.6.35.14-106.fc14.x86_64 #1 SMP Wed Nov 23 13:07:52 UTC 2011 x86_64
configuration file is /home/saml/.tmux.conf
protocol version is 6
Clients:
0: /dev/pts/12 (8, 11): 0 [132x24 xterm] [flags=0x1/0x38, references=0]
Sessions: [5/10]
0: 0: 1 windows (created Fri May 10 04:00:37 2013) [132x23] [flags=0x0]
0: bash [132x23] [flags=0x8, references=1, last layout=-1]
0: /dev/pts/48 22183 13 1/23, 135 bytes; UTF-8 0/23, 0 bytes
Terminals:
xterm [references=1, flags=0x0]:
1: acsc: (string) ``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~
0: AX: (flag) true
2: bel: (string) \007
...
...
144: smul: (string) \033[4m
145: vpa: (string) \033[%i%p1%dd
146: xenl: (flag) true
Jobs: