介绍

参考

命令

bash中操作命令

1
2
3
4
5
6
7
8
9
10
11
12
# 启动新会话
tmux [new -s 会话名 -n 窗口名]

# 恢复会话
tmux at [-t 会话名]
tmux attach [-t 会话名]

# 列出所有会话:
tmux ls

# 关闭会话
tmux kill-session -t 会话名

tmux窗口内部简单操作

在Tmux中,唤醒Tmux功能按键默认为 ctrl+b,下文写为前缀或者PREFIX
并且窗口内部所有命令默认先执行前缀

会话

命令 说明
:new<回车> 启动新会话
s 列出所有会话
$ 重命名当前会话

窗口 (标签页)

命令 说明
c 创建新窗口
w 列出所有窗口
n 后一个窗口
p 前一个窗口
f 查找窗口
, 重命名当前窗口
& 关闭当前窗口

窗格(分割窗口)

命令 说明
% 划分左右两个窗格
划分上下两个窗格
<arrow key> 光标切换到其他窗格。<arrow key>是指向要切换到的窗格的方向键,比如切换到下方窗格,就按方向键
; 光标切换到上一个窗格
o 光标切换到下一个窗格
{ 与上一个窗格交换位置
} 与下一个窗格交换位置
Ctrl+o 所有窗格向前移动一个位置,第一个窗格变成最后一个窗格
Alt+o 所有窗格向后移动一个位置,最后一个窗格变成第一个窗格
x 关闭窗格
! 将当前窗格拆分为一个独立窗口
左边这个符号代表空格键 - 切换布局
q 显示每个窗格是第几个,当数字出现的时候按数字几就选中第几个窗格
z 切换窗格最大化/最小化
Ctrl+<arrow key> 按箭头方向调整窗格大小

杂项

命令 说明
d 退出 tmux(tmux 仍在后台运行)
t 窗口中央显示一个数字时钟
? 列出所有快捷键
: 命令提示符

窗口内高级操作

调整窗口排序

命令 说明
swap-window -s 3 -t 1 交换 3 号和 1 号窗口
swap-window -t 1 交换当前和 1 号窗口
move-window -t 1 移动当前窗口到 1 号

同步窗格

此命令用来开关同步窗格,默认关闭,执行后打开,再次执行将关闭
效果是该窗口中所有窗格同步输入,详细内容可以查询帮助
这个选项值针对某个窗口有效,不会影响别的会话和窗口。

1
:setw synchronize-panes

调整窗格尺寸

命令 说明
:resize-pane -D 当前窗格向下扩大 1 格
:resize-pane -U 当前窗格向上扩大 1 格
:resize-pane -L 当前窗格向左扩大 1 格
:resize-pane -R 当前窗格向右扩大 1 格
:resize-pane -D 20 当前窗格向下扩大 20 格
:resize-pane -t 2 -L 20 编号为 2 的窗格向左扩大 20 格

文本复制模式

按下 PREFIX-[ 进入文本复制模式。可以使用方向键在屏幕中移动光标
移动到想要复制到文字上按下空格开始选择
按下回车会复制该选中内容,并且退出文本模式
然后按下 PREFIX-] 粘贴刚才复制的文本
在文本选择模式中按下ESC则是直接退出复制模式,不会复制任何内容

文本复制下的vi模式

Tmux 也支持vi模式,默认是emacs模式
在配置文件中启用 Vim 键盘布局来切换窗口、调整窗格大小
要是想启用vi模式,只需要把下面这一行添加到~/.tmux.conf中:

1
setw -g mode-keys vi

启用这条配置后,就可以使用 h、j、k、l 来移动光标了。

列举不同模式下的操作

| vi | emacs | 功能 |
| - | - |
| ^ | M-m | 反缩进 |
| Escape | C-g | 清除选定内容 |
| Enter | M-w | 复制选定内容 |
| j | Down | 光标下移 |
| h | Left | 光标左移 |
| l | Right | 光标右移 |
| L | | 光标移到尾行 |
| M | M-r | 光标移到中间行 |
| H | M-R | 光标移到首行 |
| k | Up | 光标上移 |
| d | C-u | 删除整行 |
| D | C-k | 删除到行末 |
| $ | C-e | 移到行尾 |
| : | g | 前往指定行 |
| C-d | M-Down | 向下滚动半屏 |
| C-u | M-Up | 向上滚动半屏 |
| C-f | Page down | 下一页 |
| w | M-f | 下一个词 |
| p | C-y | 粘贴 |
| C-b | Page up | 上一页 |
| b | M-b | 上一个词 |
| q | Escape | 退出 |
| C-Down or J | C-Down | 向下翻 |
| C-Up or K | C-Up | 向下翻 |
| n | n | 继续搜索 |
| ? | C-r | 向前搜索 |
| / | C-s | 向后搜索 |
| 0 | C-a | 移到行首 |
| Space | C-Space | 开始选中 |
| | C-t | 字符调序 |

配置选项:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 鼠标支持 - 设置为 on 来启用鼠标(与 2.1 之前的版本有区别,请自行查阅 man page)
* set -g mouse on

# 设置默认终端模式为 256color
set -g default-terminal "screen-256color"

# 启用活动警告
setw -g monitor-activity on
set -g visual-activity on

# 居中窗口列表
set -g status-justify centre

# 最大化/恢复窗格
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

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

我的配置文件(就很简单啦)
1
2
3
4
5
# 设置复制模式为vi模式
set-window-option -g mode-keys vi

# 设置可以使用鼠标操作
set-option -g mouse on
前辈的配置文件,原文见参考
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'

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