tmux basic usage

tmux 基础

普通模式

进入 tmux 后的正常的模式,大部分的操作都在普通模式下完成。

快捷键

tmux 的一些快捷键(省略Prefix),如果存在相同功能的原生按键,则会说明原生按键是什么。如果存在对原生按键的修改,则会在备注说明原生按键的作用。当前使用配置的前缀键为 C-a

窗格相关

按键 原生按键 命令 作用 备注
h/j/k/l 方向键 select-pane -(L/D/U/R) 切换到上下左右的窗格 窗格是循环的,到顶后再往上就会落到最下面
H/J/K/L C-方向键 resize-pane -(L/D/U/R) 1 调整窗格大小 原生按键可能会和系统按键冲突
|/- “/% split-window -(h/v) 水平或垂直分割当前窗格
x kill-pane 销毁当前窗格
z resize-pane -Z 最大化当前窗格 再按一次取消最大化
! break-pane 将当前窗格分离到一个新的窗口中
; last-pane 回到上次使用窗格 只能跳回当前窗口内的上衣次使用的窗格。
如果是从其他窗口的窗格跳过来的是没法跳回去的
m select-pane -m 标记窗格 一次只能标记一个
对于(当前/标记)的窗格会有(高亮/阴影)提示。
只有一条横线左边代表上面窗格。
只有一条竖线上面代表左边窗格
M select-pane -M 取消窗格标记 重复一次Prefix-m也可以取消标记
g swap-pane 标记窗格与当前窗格互换位置
q display-panes 显示窗格的序号和大小
o select-pane -t :.+ 按照窗格序号跳到下一个窗格
c-o rotate-window 旋转移动窗格
{/} swap-pane -(s|D) 当前窗格与(前/后)一序号窗格互换 序号也会随之互换
空格 next-layout 调节当前窗格的布局
E select-layout -E 将当前窗格水平均匀分布
c-s set-window-option synchronize-panes 配置各个窗格间同步输入
Q clear && tmux clear-history 清空窗格缓冲区内容,包括滚动条
f find-window 根据内容查找窗格

窗口相关

按键 原生按键 命令 作用 备注
c new-window 创建新的窗口
& kill-window 关闭当前窗口
数字 select-window -t :=2 跳到对应数字的窗口
n next-window 跳到下一个窗口
w choose-tree -Zw 进入树模式
select-window -t :2 跳到对应下标窗口
. move-window 移动窗口到指定下标
, rename-window 重命名窗口
i display-message 显示窗口信息
~ show-messages 显示刚才的按键提示
b last-window 跳到最近活跃的窗口
G swap-window 标记窗口与当前窗口互换位置

会话相关

按键 原生按键 命令 作用 备注
s choose-tree -sZ -O name 显示会话列表 自定义为按照名称排序
( switch-client -p 上一个会话
) switch-client -n 下一个会话
B switch-client -l 跳到上一个活跃会话
d 断开当前会话的关联
D choose-client -Z 进入客户端模式
$ rename-session test-kqf 修改会话名称

会话没有索引,但是有名称,名称是必须且唯一的,默认按照创建先后排序,可以自定义按照 会话名称排序

其他快捷键

按键 原生按键 命令 作用 备注
r 重新载入配置文件
/ 显示指定按键的绑定命令
: 进入命令行模式
? 显示快捷键列表
C 显示配置列表
t 显示时钟
< 显示窗口相关的右键提示 类似于鼠标右键的功能
> 显示窗格相关的右键提示
F 保存会话信息 使用插件实现
R 恢复会话信息 使用插件实现

使用标记

mark 标记附加在窗格及其父窗口上面,用于对窗格或者窗口进行快速操作。例如,标记窗格与当前窗格快速互换,标记窗口和当前窗口快速互换。

理解窗口符号

窗口名字的右边有些情况下会带上符号用于显示终端状态的状态栏,支持以下符号:

1
2
3
4
5
6
7
8
Symbol    Meaning
* 当前窗口
- 上一个使用的窗口
# 窗口有活跃事件
! Window bells are monitored and a bell has occurred in the window.
~ The window has been silent for the monitor-silence interval.
M 窗口时标记窗口
Z 窗口中的窗格被最大化了

可以配置是不是显示这部分内容 set -wg window-status-format "#I:#W#F" 配置为 Index:WindowName Flag; 如果flag太多影响专注的话可以删除 #F

命令行模式

命令行模式可以实现快捷键的所有操作,类似于把快捷键的按键重新输入一遍:

1
:neww -t 8 -d -n winname  # 指定下标为 8  并且 不设置为当前活动窗口(后台新建) 命名为 winname

缓冲区模式

进入缓冲区模式后进行复制粘贴相关的操作,例如这里复制指定内容 git status

image-20240115232812451

快捷键

按键 原生按键 命令 作用 备注
[ 进入复制模式
v 空格 开始选择
Enter 复制选择内容并退出复制模式
y 复制选择内容
p ] 粘贴剪贴板内容 原生按键为上一个窗口
o 切换选择方向
q 退出缓冲区模式
# list-buffer 显示buffer列表 show-buffer 只显示一条
= choose-buffer 从buffer列表中选择内容

复制过程按住 Shift 然后便能使用鼠标进行复制粘贴,如果使用vi 的模式 可以在选择的过程中使用vi的各种快捷键 包括 j w e b / :

树模式

树模式可以用于快速预览并跳转到指定窗格,也可以用于批量操作窗口或窗格

image-20240204014054803

快捷键如下:

按键 作用 备注
上下左右(hjkl) 上下移动目标会话,左右收起展开会话
t 给目标打上标签 打上标签的会在索引后面带上*,
注意与前面名称后面的符号区分开
T 取消所有标签
c-t 标记所有目标
x 快速关闭目标
X 关闭有标签的目标
<|> 在预览内容太多一屏放不下的时候左右移动
O 改变排序方式
r 反向排序
v 预览目标
Enter 选中目标
m 标记目标
M 取消标记
: 对打标记的目标执行操作
c-s 查找目标
n 再次触发查找

控制树模式的键不需要前缀。

客户端模式

和树模式类似的,目前使用场景有限暂不研究

配置文件参考

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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
################################ 全局设置
# 设置默认的shell
set -g default-shell /bin/zsh
# 设置前缀键
set -g prefix C-a
# 设置前缀键与命令键的最长的间隔
set -s escape-time 1000
# 设置可重复按键时 两个重复按键之间的最长重复时长 例如在调整窗口大小时
set -g repeat-time 1000
# 释放初始的前缀键
unbind C-b
# 设置向其他应用发送 C-a 的方式为按两次 C-a
bind C-a send-prefix
# 设置重载配置的快捷键 其中 \; 是多个命令之间的分隔符
bind r source-file ~/.tmux.conf \; display "./.tmux.conf Reloaded!"
# 开启鼠标
set -g mouse on
# 设置终端为 256 色模式
set -g default-terminal "screen-256color"
# 设置快捷键模式
set -g mode-keys vi
# 设置窗格同步操作的快捷键
bind C-s set-window-option synchronize-panes

################################ 复制粘贴 设置
## 复制粘贴设置
# Tab -> [
bind Tab copy-mode
# v -> space
bind-key -T copy-mode-vi v send-keys -X begin-selection
# y + q -> Enter
bind-key -T copy-mode-vi y send-keys -X copy-selection
# p -> ]
unbind p # 将窗口的前后切换换成了粘贴
bind p paste-buffer


################################ 配色设置
# 设置状态栏颜色
set -g status-style fg=white,bold,bg=black
# 设置窗口列表配色
set -wg window-status-style fg=cyan,bg=black
# 设置激活的窗口的颜色
set -wg window-status-current-style fg=white,bold,bg=red
# 设置 窗格的边框
set -wg pane-border-style fg=white,bg=black
# 设置激活窗格的边框
set -wg pane-active-border-style fg=red,bg=black
# 高显激活窗格模糊其它窗格
set -wg window-style fg=colour241,bg=colour235
set -wg window-active-style fg=white,bg=black
# 设置命令行的外观
set -g message-style fg=white,bold,bg=black
# 设置左侧状态栏的文字外观
set -g status-left-length 40
set -g status-left "#[fg=colour119]#S #[fg=yellow] #W-#I #[fg=green] Pane-#P"
# 设置右侧状态栏文字
set -g status-right "#[fg=colour220]%y-%m-%d %A %R "
# 设置状态栏刷新频率
set -g status-interval 60



################################ 窗口设置
# 设置窗口的起始下标是 1 而不是 0
set -g base-index 1
# 设置在窗口中移动的快捷键
bind -r C-h select-window -t :-
bind -r C-l select-window -t :+
# 设置窗口列表居中
set -g status-justify centre
# 允许来自其他窗口的警告
set -wg monitor-activity on
set -g visual-activity on
set -wg window-status-activity-style fg=colour226
# 禁止窗口自动重命名
set -wg allow-rename off
set -wg automatic-rename off
# 设置窗口列表显示的内容
set -wg window-status-format "#I:#W#F" ## 中间状态栏配置 Index :WindowName Flag; 如果flag太多影响专注的话可以删除 #F
# 设置窗格的起始下标是1而不是0
set -wg pane-base-index 1
# 设置分隔窗格的快捷键
bind | split-window -h
bind - split-window -v
# 设置窗格中移动的快捷键
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# 设置重新设置窗格大小的快捷键
bind -r H resize-pane -L 1
bind -r J resize-pane -D 1
bind -r K resize-pane -U 1
bind -r L resize-pane -R 1
# 设置标记窗格或窗口与当前窗格或窗口互换位置快捷键
bind g swap-pane
bind G swap-window
# 跳到之前的窗口 l -> b
bind b last-window
# 跳到之前的会话
bind-key -n B switch-client -l


################################ 插件配置
## resurrect 相关配置
#设置保存和恢复的快捷键
set -g @resurrect-save 'F'
set -g @resurrect-restore 'R'
set -g @resurrect-dir '~/tools/tmux-resurrect/resurrect/session'
# 保留 vim 会话
set -g @resurrect-strategy-vim 'session'
# 保存窗格内容
set -g @resurrect-capture-pane-contents 'on'
# 使用resurrect插件
run-shell ~/tools/tmux-resurrect/resurrect.tmux

################################ 其他配置
# 自定义会话排序方式
bind s choose-tree -sZ -O name
# 使用会话组且当前窗口不同时,各自最大化当前窗口
set -g aggressive-resize off
# 清除缓冲区,包括滚动条
bind-key Q send-keys 'clear && tmux clear-history'\; 'Enter'

参考文档

T B
站点访问量: / , 本页阅读量:
T B