偏好设置

Tmux 状态栏配置 & 基本配置 #

tmux 2.3 及以上

tmux 启动后,会调用 ~/.tmux.conf 文件,此文件包含了 tmux 命令的一系列配置,如需要配置,都需要修改此文件。

更改 文件后,需要在 tmux 中执行相关命令,以刷新配置

1
2
3
4
5
# c+b 之后,输入 :
:source ~/.tmux.conf

# 成功之后左下角能看到
tmux reload ok

一、状态栏 #

Tmux 用户打交道最多的还是状态栏,一个好的状态栏配置,能改善不少操作体验,以下是状态栏的一个示例:

1.1 样式 #

1
2
3
4
5
6
7
8
9
# 右下角类似效果:21:58:48 12-12
set -g status-right "%H:%M:%S %d-%b"

# 设置整个状态栏背景颜色 bg(背景色) fg(前景色)
set -g status-style "bg=#882244"

# 分别设置状态栏左右颜色
set -g status-left "bg=#3a3a3a"
set -g status-left "fg=#bcbcbc"

1.2 窗口列表样式(window list) #

1
2
3
4
# 会话计数:从 1 开始(Setting base-index assures newly created windows start at 1 and count upwards)
set -g base-index 1
# 窗口计数:从 1 开始编号,而不是从 0 开始
set -g pane-base-index 1

1.3 状态栏交互行为 #

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
set -g status-interval 1    # 状态栏刷新时间(右下角秒针会跳动)
set -g status-justify left  # 状态栏窗口列表(window list)左对齐

set -g visual-activity on # 启用活动警告
set -wg monitor-activity on # 非当前窗口有内容更新时在状态栏通知
set -g message-style "bg=#202529, fg=#91A8BA" # 指定消息通知的前景、后景色

set -wg window-status-current-format " #I:#W#F " # 状态栏当前窗口名称格式(#I:序号,#w:窗口名 称,#F:间隔符)
set -wg window-status-current-style "fg=#d7fcaf,bg=#60875f" # 状态栏当前窗口名称的样式
set -wg window-status-separator "" # 状态栏窗口名称之间的间隔

二、鼠标、交互 #

2.1 开启鼠标 #

1
2
# 鼠标支持 - 设置为 on 来启用鼠标(与 2.1 之前的版本有区别,请自行查阅 man page)
* set -g mouse on

2.2 命令历史数量、时间限制 #

1
2
3
4
5
# 命令回滚/历史数量限制
set -g history-limit 20480
set -sg escape-time 0
set -g display-time 1500
set -g remain-on-exit off

2.3 Vim 风格的快捷键实现窗格间移动 #

1
2
3
4
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R

三、其他 #

3.1 编码 #

1
2
3
4
5
6
# 设置默认终端模式为 256color
set -g default-terminal "screen-256color"

# 启用 UTF-8 编码
setw -g utf8 on
set -g status-utf8 on
1
2
3
4
# 最大化/恢复窗格
unbind Up bind Up new-window -d -n tmp \; swap-pane -s tmp.1 \; select-window -t tmp
unbind Down
bind Down last-window \; swap-pane -s tmp.1 \; kill-window -t tmp

3.2 tmux 内容复制(依赖插件) #

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
# 更改复制模式的默认行为为熟悉的vi风格
# tmux中复制模式通常使用复制模式的步骤如下:
#   1. 输入 <[>      进入复制模式
#   2. 按下 <空格键> 开始复制,移动光标选择复制区域
#   3. 按下 <回车键> 复制选中文本并退出复制模式
#   4. 按下 <]>      粘贴文本
# 开启vi风格后,支持vi的C-d、C-u、hjkl等快捷键
setw -g mode-keys vi

# 存在于 tmux 进程中的 buffer 缓存,剪贴可以在会话间共享,但无法与系统粘贴板直接共享
# 我们可以使用一个包装程序reattach-to-user-namespace来重新连接到合适的命名空间,然后执行访问用户级命名空间的粘贴板服务

# 加载复制插件
#   1. 将命令行文本复制到剪贴板          <prefix+y>
#   2. 将当前面板的工作目录复制到剪贴板  <prefix+Y>
set -g @plugin 'tmux-plugins/tmux-yank'

# 配置开启剪贴板功能
set -g set-clipboard on
# set-option -g default-command "reattach-to-user-namespace -l $SHELL"

四、插件及插件配置 #

插件名称 描述
tpm 插件管理器系统
resurrect 保存恢复会话
continuum 持续自动保存和恢复 Tmux 会话
copycat 终端中快速搜索内容
urlview 终端中搜寻URL链接
yank 终端便捷剪切板功能
cpu 状态栏显示CPU信息
battery 状态栏显示电池信息
sidebar 文件目录树
logging 窗口信息输出
pain-control 标准操作绑定键
prefix-highlight 窗口信息输出

五、参考配置文件(~/.tmux.conf) #

精简后的配置,请自取。tmux 下记得重置配置文件 :source-file ~/.tmux.conf

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# -----------------------------------------------------------------------------
# Tmux 基本配置 - 要求 Tmux >= 2.3
# 如果不想使用插件,只需要将此节的内容写入 ~/.tmux.conf 即可
# -----------------------------------------------------------------------------

# C-b 和 VIM 冲突,修改 Prefix 组合键为 Control-Z,按键距离近
set -g prefix C-z

set -g base-index         1     # 窗口编号从 1 开始计数
set -g display-panes-time 10000 # PREFIX-Q 显示编号的驻留时长,单位 ms
set -g mouse              on    # 开启鼠标
set -g pane-base-index    1     # 窗格编号从 1 开始计数
set -g renumber-windows   on    # 关掉某个窗口后,编号重排

setw -g allow-rename      off   # 禁止活动进程修改窗口名
setw -g automatic-rename  off   # 禁止自动命名新窗口
setw -g mode-keys         vi    # 进入复制模式的时候使用 vi 键位(默认是 EMACS)

# -----------------------------------------------------------------------------
# 使用插件 - via tpm
#   1. 执行 git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
#   2. 执行 bash ~/.tmux/plugins/tpm/bin/install_plugins
# -----------------------------------------------------------------------------

setenv -g TMUX_PLUGIN_MANAGER_PATH '~/.tmux/plugins'

# 推荐的插件(请去每个插件的仓库下读一读使用教程)
set -g @plugin 'seebi/tmux-colors-solarized'
set -g @plugin 'tmux-plugins/tmux-pain-control'
set -g @plugin 'tmux-plugins/tmux-prefix-highlight'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-yank'
set -g @plugin 'tmux-plugins/tpm'

# tmux-resurrect
set -g @resurrect-dir '~/.tmux/resurrect'

# tmux-prefix-highlight
set -g status-right '#{prefix_highlight} #H | %a %Y-%m-%d %H:%M'
set -g @prefix_highlight_show_copy_mode 'on'
set -g @prefix_highlight_copy_mode_attr 'fg=white,bg=blue'

# 初始化 TPM 插件管理器 (放在配置文件的最后)
run '~/.tmux/plugins/tpm/tpm'

# -----------------------------------------------------------------------------
# 结束
# -----------------------------------------------------------------------------

reference:

  1. the config file

  2. tmux plugins

  3. tmux 插件拓展

  4. tao of tmux