今天发现tmux的status竟然可以展示CPU的负载,然后查了一下tmux手册,发现tmux还有这么多好玩的东西我从来都没接触过。这篇文章讲一下tmux的options(由于是外貌篇,所以会重点讲有关外观的部分)。本文“授之以渔”,会告诉你怎么设置,而不是提供一个conf。
本文所有命令皆为tmux命令,需要加上“tmux”前缀来运行。例如提到
set-option
,运行命令应该是tmux set-option
,或者在命令模式运行(按下prefix+:
)
Options可以控制tmux的行为和外观,tmux的options分为Sever options, Session options, Window options三种。设置option的命令可以说不少(很乱),比如设置Window option就可以用 setw
, set -w
, set-window-option
。作为一个Python程序员,简直不能忍受。建议只使用最后一种风格,因为“解决问题最直接的方法应该有一种,最好只有一种”,最后一种风格简洁明了,写到.tmux.conf
文件中的话,即使没怎么用过tmux的人也可以看明白。况且这些命令很少被直接执行,一般是写在conf文件中的。
- set-option -s 设置sever option
- set-option 设置session option
- set-window-option 设置window option
- set-option -g 设置全局option
tmux的外貌主要提现在status bar上,这里可以配置你想在status bar看到的东西,以及格式等。status bar主要有5个东西组成:
- window 列表
- 左侧显示区
- 右侧显示区 (1-3其实根据配置决定,比如右侧也可以不显示)
- message显示条(显示message的时候,会占据整个status bar)
- command输入的时候(这时也会占据整个status bar)
Message Style
上面这些东西显示的样式都可以通过style来指定。style是由逗号分割的一个list组成。fg
设置前景style,bg
设置背景style。
颜色可以使用三种方式来指定:
- black, red, green, yellow, blue, magenta, cyan, white
- 从colour0到colour255之间(注意不要打成color),查看所有的颜色
- 用css风格的那种 “#ffffff”
除了颜色之外还支持以下属性(前面加上no表示关掉,比如noblink
):
- bright(blob)
- dim
- underscore
- blink
- reverse
- hidden
- italics
- strikethrough
举个例子,下面的命令:
1 2 |
tmux set-option -g message-command-style fg=yellow,bold,underscore,blink tmux set-option -g message-command-style bg=black,fg=default,noreverse |
将会把命令模式的style设置为(其实是有闪烁效果的):
另外一般中间的status显示的是window的list,所以window的style也有必要设置。需要设置的style有以下几种:
- widnow-status-style window默认的style
- window-status-current-style 当前window的style
- window-status-bell-style 有bell的window的style
tmux的bell就是如果窗口有活动,窗口就会变成bell的style,来提醒你这个窗口有进程活动已经结束了。打开bell还需要下面的设置:
1 2 |
set-window-option -g monitor-activity on set-window-option -g bell-action any |
除此之外,上面的三个属性还可以设置format(但是我觉得用default的format就可以),默认的格式是#I:#W#F
,其中I是窗口序号,W是窗口名字,F是窗口标志(例如当前窗口标志是*
,最后打开的窗口标志是-
,Zoom的窗口标志是Z
)最后我的窗口样式如下。
Status Style
对于status(左侧status,右侧status,中间),可以使用FORMAT来指定。FORMAT是一个字符串,可以指定显示样式。其中#{}
包裹的部分会被替换。比如set status-left "#{session_name}"
将在左侧状态栏显示目前session的名字。支持alias缩写,这条命令也可以写成set status-left "#S"
。所有可用的变量见这里。
除了可以使用tmux的内部变量之外,还可以使用shell命令结果,#()
会解释成shell命令,例如set status-left "#(uptime)"
将在左侧状态栏显示uptime
命令的输出。tmux并不在执行括号内的命令的时候阻塞住。而是会展示最近一次的执行结果。刷新频率由status-interval
来控制。
上面介绍的style也可以使用,方法是将style描述#[]
中,会控制之后的FORMAT或者shell命令的格式。
举例,下面的这样设置将status-right的显示修改为如下:
1 |
set -g status-right '#[fg=green,bg=default,bright]#(uptime) #[fg=white,bg=default]%l:%M:%S %p#[default] #[fg=blue]%Y-%m-%d%a' |
我的.tmux.conf
: https://github.com/laixintao/myrc
最后推荐一些tmux插件(外貌向):
- tmux插件管理:https://github.com/tmux-plugins/tpm (Plugin集合)
- 显示cpu load的:https://github.com/thewtex/tmux-mem-cpu-load