转 Tmux试用感想
转自http://roylez.heroku.com/2010/08/07/tmux-review.html
Tmux试用感想
不止听一个人在irc说tmux如何好如何好了,只不过说这些话的人,没有一个是我所熟知的朋友。即使他们全都是小白,三人成虎也几乎让我相信了tmux可以在hardstatus里面显示中文。一直懒得尝试tmux,一方面因为我的screenrc已经相当好了,另一方面对于定制下hardstatus都要老多行代码的设计不是太喜欢。不过心里总是痒痒,幻想着一朝配置好了tmux,就不用再费心了。
前些时候终于下定了决心来配一把,目标是达到跟我的screenrc效果一致。我的screen版本是4.00.03(用version命令查询),tmux的版本是1.3(用server-info查询)。

图里面,下面的一条是screen hardstatus的效果,上面一条是tmux的。效果基本一致了,配置在下面
screenrc
hardstatus alwayslastline hardstatus string "%{= B}:%{= b}: %{= r}[ %{G}%H%{= r} ] %= %{=b b}%-w%{=rb db}%>%n %t%{-}%+w %=%{= r}[ %{G}%c %{M}%D %m-%d %{r}] %{= b}:%{B}:" terminfo xterm*|rxvt ti@:te@ terminfo rxvt-unicode 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm' terminfo xterm* 'XT:hs:ts=\E]2;:fs=\007:ds=\E]2;screen\007' autodetach on # default: on altscreen on defscrollback 1000 msgwait 5 msgminwait 2 pow_detach_msg "Screen session of \$LOGNAME \$:cr:\$:nl:ended." startup_message off # default: on vbell off vbell_msg " Wuff ---- Wuff!! " nethack on defutf8 on shell /bin/zsh bindkey -k F1 prev bindkey -k F2 next screen screen
tmux.conf
set-option -g prefix C-a unbind-key C-b bind-key C-a send-prefix bind-key -n F11 previous-window bind-key -n F12 next-window bind-key C-c new-window setw -g mode-keys vi setw -g xterm-keys on unbind % bind | split-window -h bind h split-window -h unbind '"' bind - split-window -v bind v split-window -v set-option -g visual-activity on setw -g monitor-activity on setw -g automatic-rename off setw -g utf8 on set -g base-index 1 set -g terminal-overrides "*88col*:colors=88,*256col*:colors=256,xterm*:colors=256" set -g default-terminal "screen-256color" set -g status-utf8 on set -g status-justify centre set -g status-bg default set -g status-left "#[fg=cyan]:#[fg=blue]: #[fg=red][ #[fg=green]#H #[fg=red]]#[default]" set -g status-left-length 20 set -g status-right-length 25 set -g status-right "#[fg=red][ #[fg=green]%H:%M #[fg=magenta]%a %m-%d #[fg=red]] #[fg=blue]:#[fg=cyan]:#[default]" setw -g window-status-format '#[fg=blue,bold]#I #T#[default] ' setw -g window-status-current-format '#[fg=blue,bold,reverse]#I #T#[default] ' #setw -g window-status-alert-fg red
无疑从行数上来比较,screenrc就更加简洁。
tmux要做到跟我的screen一样自动变更标题栏显示程序名或者路径,需要把tmux自身的标题栏变更关掉,即automatic-rename off。至于说能够在标题栏里面显示utf8字符,对于拉丁字符确实可以,对于汉字来说,是个笑话。鄙视那些道听途说的人。不用不服气,我自己试过我知道,另外,在下面这个链接里面也有提到。
http://www.mail-archive.com/tmux-users@lists.sourceforge.net/msg00614.html
所幸的是tmux的作者已经明确表示这个已经在他的todo列表里面了,也许我们可以在一年半载之后用上真正支持中文字符的tmux吧。
下面说下个人对于screen和tmux的比较。
- tmux将会有中文标题支持,screen中文标题遥遥无期
- tmux的标题需要分开左中右分别定义,并且要指定左和右标题栏的宽度,screen一行代码就全部指定了。
- tmux的标题似乎只能有一行(欢迎纠错),但是screen可以有两行,分别是hardstatus和caption。
- tmux可以为有事件发生的窗口专门定义标题格式(alert-bg,alert-fg,alert-attr),这是1.3新加的功能,screen无此功能。
- tmux可以很方便的把第一个窗口序号改成1,screen不可以。
- tmux的窗口消息默认是按q之后才消失,screen里面则用msgwait定义消息显示时间。
- tmux不是在所有*nix平台上都有,而screen则到处可以找得到。
- tmux可以用server-info显示终端相关信息,screen里面没有类似功能。
- screen有nethack模式,tmux没有。
- tmux有if-shell命令,可以根据shell命令执行结果来执行tmux命令(这个才是screen killer阿)。
- tmux可以随便横着竖着分割窗口,screen只能一个方向(忘了哪个方向,反正我不用)。
综上所述,个人觉得,如果在tmux支持中文之后,在个人日常使用的电脑上使用tmux还是不错的。在工作的环境中,还是screen更加靠谱和可移植些。可以考虑在Shell的启动文件里面加一句
[[ -x /usr/bin/tmux ]] && alias screen=/usr/bin/tmux
目前,我还是只用screen。需要tmux动态更改标题栏代码的朋友,可以移步这里。
浙公网安备 33010602011771号
显示 8 评论