tmux 终端复用器,终端窗口管理神器

一、tmux 是什么

1.1 会话与进程

命令行的使用方式是,打开一个终端窗口,在里面输入命令。用户与计算机的这种交互,称为一次”会话”(session)

会话的一个重要特点是,窗口与其中启动的进程是连在一起的。关闭窗口,会话结束,会话内部的进程也会随之终止,不管有没有运行完。一个常见的使用场景是,使用SSH远程管理服务器,打开一个远程窗口执行命令。这时,网络突然断线,再次登录的时候,是找不回上一次执行的命令的。

Tmux 就是为了解决这个问题,窗口关闭时,会话并不终止,需要的时候再让会话”绑定”链接,这就是终端复用。

1.2 Tmux 的作用

Tmux 就是会话与窗口的”解绑”工具,将它们彻底分离。

(1)它允许在单个窗口中,同时访问多个会话。这对于同时运行多个命令行程序很有用。

(2) 它可以让新窗口”接入”已经存在的会话。

(3)它允许每个会话有多个连接窗口,因此可以多人实时共享会话。

(4)它还支持窗口任意的垂直和水平拆分。

类似的终端复用器还有 GNU Screen。Tmux 与它功能相似,但是更易用,也更强大。

二、 Tmux 的使用

2.1 安装

tmux使用c语言实现的,支持linux、Macos系统。

使用包管理器安装

1
2
3
4
5
6
# debian系linux如ubuntu
sudo apt install tmux
# redhut系linux如centos
sudo yun install tmux
# mac
brew install tmux

使用源码包编译安装

1
2
3
4
5
6
7
8
9
# 从github下载源码包https://github.com/tmux/tmux
./configure && make
sudo make install

# 使用git安装
git clone https://github.com/tmux/tmux.git
cd tmux
sh autogen.sh
./configure && make

2.2 使用

tmux 基本概念

会话:类似打开一个终端窗口,也可以打开多个终端,一般使用一个就够用了

窗口:类似终端的标签页,一个回话可以打开多个标签页,也和浏览器的标签页类似

窗格:一个标签页可以分屏多个窗格,如果你的屏幕够大,也可以分很多窗格。

2.1.1 会话

1
2
3
4
5
6
7
8
9
10
11
12
# 启动
tmux
tmux new -s 会话名

# 列出所有会话
tmux ls

# 恢复会话
tmux at
tmux at -t 会话名


1
2
3
4
5
6
7
8
9
# 断开当前会话,不会退出
Ctrl+b d

# 退出会话
exit
Ctrl+d

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

Tmux 系统指令

前缀 指令 描述
Ctrl+b ? 显示快捷键帮助文档
Ctrl+b d 断开当前会话
Ctrl+b D 选择要断开的会话
Ctrl+b Ctrl+z 挂起当前会话
Ctrl+b r 强制重载当前会话
Ctrl+b s 显示会话列表用于选择并切换
Ctrl+b : 进入命令行模式,此时可直接输入ls等命令
Ctrl+b [ 进入复制模式,按q退出
Ctrl+b ] 粘贴复制模式中复制的文本
Ctrl+b ~ 列出提示信息缓存

2.1.2 窗口(window)指令

前缀 指令 描述
Ctrl+b c 新建窗口
Ctrl+b & 关闭当前窗口(关闭前需输入y or n确认)
Ctrl+b 0~9 切换到指定窗口
Ctrl+b p 切换到上一窗口
Ctrl+b n 切换到下一窗口
Ctrl+b w 打开窗口列表,用于且切换窗口
Ctrl+b , 重命名当前窗口
Ctrl+b . 修改当前窗口编号(适用于窗口重新排序)
Ctrl+b f 快速定位到窗口(输入关键字匹配窗口名称)

2.1.3 窗格(pane)指令

前缀 指令 描述
Ctrl+b 当前面板上下一分为二,下侧新建面板
Ctrl+b % 当前面板左右一分为二,右侧新建面板
Ctrl+b x 关闭当前面板(关闭前需输入y or n确认)
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个单元格为单位调整当前面板边缘(Mac下被系统快捷键覆盖)
Ctrl+b t 显示时钟

三、个性化设置

tmux的用户级配置文件为~/.tmux.conf(没有的话就创建一个)。

这个可以参考其他人的配置,工具是拿来用的,越简单越好,切勿折腾。

https://github.com/gpakosz/.tmux

参考资料


tmux 终端复用器,终端窗口管理神器
http://www.keker.top/2018/11/22/tools/tmux/
作者
Keker
发布于
2018年11月22日
许可协议