1. 简介
Tmux 是一款优秀的终端复用工具,使用它最直观的好处就是,通过一个终端登录远程主机并运行 tmux
后,在其中可以开启多个控制台而无需再「浪费」多余的终端来连接这台远程主机。Tmux 提供了非常多的强劲功能:
提供了强劲的、易于使用的命令行界面。
可横向和纵向分割窗口。
窗格可以自由移动和调整大小,或直接利用四个预设布局之一。
支持 UTF-8 编码及 256 色终端。
可在多个缓冲区进行复制和粘贴。
可通过交互式菜单来选择窗口、会话及客户端。
支持跨窗口搜索。
支持自动及手动锁定窗口。
可以自由配置绑定快捷键。
在 Tmux 逻辑中,Server > Session > Window > Pane 这个大小和层级顺序是极其重要的,直接关系到工作效率:
Server :整个 tmux
的后台服务器。有时候更改配置不生效,就要使用 tmux kill-server
来重启 tmux
。
Session :每次使用 tmux
命令启动,便会建立一个会话 Session,一个服务器可以保持多个会话连接,同时我们也可以在多个会话之间切换。一个 Session 可以开启多个 Window,一般只要保存一个 Session 就足够了。
Window :一个 Session 可包含多个 Window,每个 Window 都以标签的形式显示在 Session 下面的状态栏里。可以针对每种任务分一个 Window。如下载一个 Window,编程一个 window。
Panel :每个 Window 可以划分多个 Panel,实现分屏显示。
2. 命令
2.1 外部命令
Tmux 的常用外部命令如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 tmux [new -s 会话名 -n 窗口名] tmux at [-t 会话名] tmux ls tmux kill-session -t 会话名 tmux kill-server
2.2 内部指令
所谓内部指令,就是进入 Tmux 后,并按下前缀键后的指令,一般前缀键为 Ctrl+b
。虽然 Ctrl
和 b
离得很远但是不建议改前缀键,因为别的键也不见得方便好记不冲突。还是记忆默认的比较可靠。
前缀
指令
描述
Ctrl+b
?
显示快捷键帮助文档
Ctrl+b
d
断开当前会话
Ctrl+b
D
选择要断开的会话
Ctrl+b
Ctrl+z
挂起当前会话
Ctrl+b
r
强制重载当前会话,刷新配置文件
Ctrl+b
I
下载和更新插件
Ctrl+b
s
显示会话列表用于选择并切换
Ctrl+b
:
进入命令行模式,此时可直接输入ls等命令
Ctrl+b
[
进入复制模式,按 q
退出
Ctrl+b
]
粘贴复制模式中复制的文本
Ctrl+b
~
列出提示信息缓存
前缀
指令
描述
Ctrl+b
c
新建窗口
Ctrl+b
&
关闭当前窗口
Ctrl+b
0~9
切换到指定窗口
Ctrl+b
p
切换到上一窗口
Ctrl+b
n
切换到下一窗口
Ctrl+b
w
打开窗口列表,用于且切换窗口
Ctrl+b
,
重命名当前窗口
Ctrl+b
.
修改当前窗口编号(适用于窗口重新排序)
Ctrl+b
f
快速定位到窗口(输入关键字匹配窗口名称)
前缀
指令
描述
Ctrl+b
"
当前面板上下一分为二,下侧新建面板
Ctrl+b
%
当前面板左右一分为二,右侧新建面板
Ctrl+b
x
关闭当前面板(关闭前需确认)
Ctrl+b
z
最大化当前面板,再重复一次按键后恢复正常(v1.8 版本新增)
Ctrl+b
!
将当前面板移动到新的窗口打开(原窗口中存在两个及以上面板有效)
Ctrl+b
;
切换到最后一次使用的面板
Ctrl+b
q
显示面板编号,在编号消失前输入对应的数字可切换到相应的面板
Ctrl+b
{
向前置换当前面板
Ctrl+b
}
向后置换当前面板
Ctrl+b
Ctrl+o
顺时针旋转当前窗口中的所有面板
Ctrl+b
方向键
移动光标切换面板
Ctrl+b
o
选择下一面板
Ctrl+b
空格键
在自带的面板布局中循环切换
Ctrl+b
Alt
+方向键
以 5 个单元格为单位调整当前面板边缘
Ctrl+b
Ctrl
+方向键
以 1 个单元格为单位调整当前面板边缘
Ctrl+b
t
显示时钟
3. 配置
Tmux 的系统配置文件为 /etc/tmux.conf
;用户配置文件路径为 ~/.tmux.conf
,一开始需要用户手动创建。当修改了 .tmux.conf
中的配置项后,需要重启 Tmux 使配置生效,即在 Tmux 中执行:
或者在 Tmux 窗口中,先按下 Ctrl+b
指令前缀,再按 :
后输入以下命令:
1 source-file ~/.tmux.conf
3.1 默认 Shell
Tmux 默认的 Shell 为 Bash Shell,可以添加以下配置项修改默认 Shell,比如修改为 Zsh Shell:
1 set-option -g default-shell /bin/zsh
或者使用以下配置项:
1 set-option -g default-command /bin/zsh
default-command
与 default-shell
的区别在于 default-command
的优先级更高,只有当 default-command
为空时,才会使用 default-shell
。
3.2 鼠标控制
Tmux 鼠标控制功能能够实现:
首先查看 Tmux 的版本:
根据不同的版本编缉配置文件:
1 2 3 4 setw -g mouse-resize-pane on setw -g mouse-select-pane on setw -g mouse-select-window on setw -g mode-mouse on
配置文件 .tmux.conf
对所有之后新建的 Tmux Session 都会起作用。如果只想对当前的 Session 启用,可以先按 Ctrl + B
,松开以后再输入冒号,然后输入上面的配置命令即可。
3.3 面板控制
1 2 3 4 unbind '"' bind - splitw -v -c '#{pane_current_path}' unbind '%' bind = splitw -h -c '#{pane_current_path}'
1 2 3 4 bind -r ^k resizep -U 10 bind -r ^j resizep -D 10 bind -r ^h resizep -L 10 bind -r ^l resizep -R 10
3.4 复制模式
修改 Tmux 的复制模式为 Vi 风格:
1 2 3 4 setw -g mode-keys vi bind -t vi-copy v begin-selection bind -t vi-copy y copy-selection bind p pasteb
3.5 更多优化
1 2 set -g base-index 1 set -g pane-base-index 1
1 2 3 4 5 6 7 8 set -g status-utf8 on set -g status-interval 1 set -g status-justify left setw -g monitor-activity on set -wg window-status-format " #I #W " set -wg window-status-current-format " #I:#W#F " set -wg window-status-separator ""
4. 速食
经典配置
说明
.tmux
🇫🇷 Oh my tmux! My self-contained, pretty & versatile tmux configuration made with ❤️
附录