如何灵巧的使用 Tmux 工具呢?
如果我们用终端连接远程主机的时候,如果发生一些不可抗力,导致终端关了的话,估计想死的心都有了。但是有了tmux
的话就不一样了,即使你关闭了tmux
,下次重新attch
的时候,你会发现之前的东西都还在。这是因为即使你关闭了tmux
,它也还在服务器的后台运行。
1. Tmux 工具介绍
如果你使用命令行却不使用
Tmux
工具,那么你就又完美的错过了一次在同事和家人面前装逼的机会。它是一个老牌又经典的终端复用工具,相信命令行的程序员们以及运维同学们都对它赞不绝口。
功能特点
- 提供基于命令行的功能强大的界面
- 支持插件,通过配置不同插件实现界面可定制化
- 完整的快捷键系统,可以完全脱离鼠标,通过键盘快捷键组合
- 基于会话的多终端窗口管理功能,可以随时存储和恢复终端会话
核心概念
- Session:会话为基础且可创建多个会话
- Window: 一个会话中可以包含多个窗口
- Panel:一个窗口中可以包含多个面板
2. Tmux 配置说明
主要介绍插件系统与常用插件,详细的请查看我的Github链接。
- 安装使用
Tmux
工具的安装非常方便,通常只需要一条命令就可以搞定。
# 在macOS中安装
brew install tmux
# 在CentOS下安装
$ sudo yum install tmux
# 在Ubuntu下安装
$ sudo apt-get install tmux
3. 快捷键的学习
3.1 基本操作
- [pane] 分割/切换/放大/关闭
# prefix默认按键
ctrl + b
# 水平分割/竖直分割pane
prefix + %
prefix + "
# 在pane之间switch
prefix + 上下左右的箭头
# 放大一个pane
prefix + z
# 关闭当前pane
prefix + x
# 直接在shell里输入即可退出一个pane
exit
- [window] 创建/移动/关闭/更名
# 创建window窗口,有*号表示当前所在
prefix + c
# 在不同的window间移动
prefix + 数字
# 关闭当前window窗口
prefix + &
# 重命名window
prefix + , window名称
- [session] 查看/更名/断开/进入/删除
# 查看所有的session列表
tmux ls
# 更名session名称,通常一个session对应一个项目
prefix + $
# 断开一个session会话
# 退出session,在只有一个window的状态下,直接输入exit也能退出
prefix + d
# 创建session会话的时候直接命名
# 新建一个名为py35的session会话
tmux new -s py35
# 重新连接某一个session会话
# 重新连接py35会话,这里的a是attach的意思
tmux a -t py35
# 重新进入之前的session会话
tmux attach
# 删除session会话
# 删除除了py35以外的所有session会话
tmux kill-session -a -t py35
3.2 系统使用
通过
<Ctrl+b>
激活控制台,此时以下按键生效
- [1] 系统操作 - System
快捷键命令 | 对应功能特性 |
---|---|
<prefix + ?> |
列出所有快捷键;按q 键返回 |
<prefix + d> |
脱离当前会话;输入tmux a 能够重新进入之前的会话 |
<prefix + D> |
选择要脱离的会话;在同时开启了多个会话时使用 |
<prefix + r> |
强制重绘未脱离的会话 |
<prefix + s> |
选择并切换会话;在同时开启了多个会话时使用 |
<prefix + :> |
进入命令行模式;此时可以输入支持的命令 |
<prefix + [> |
进入复制模式;此时的操作与vi 相同,按q 退出 |
<prefix + ~> |
列出提示信息缓存;包含了之前tmux 返回的提示信息 |
<prefix + Ctrl+z> |
挂起当前会话 |
- [2] 窗口操作 - Window
快捷键命令 | 对应功能特性 |
---|---|
<prefix + c> |
创建新窗口 |
<prefix + &> |
关闭当前窗口 |
<prefix + p> |
切换至上一窗口 |
<prefix + n> |
切换至下一窗口 |
<prefix + l> |
在前后两个窗口间互相切换 |
<prefix + w> |
通过窗口列表切换窗口 |
<prefix + f> |
在所有窗口中查找指定文本 |
<prefix + ,> |
重命名当前窗口;这样便于识别 |
<prefix + .> |
修改当前窗口编号;相当于窗口重新排序 |
<prefix + 数字键> |
切换至指定窗口 |
- [3] 面板操作 - Panel
快捷键命令 | 对应功能特性 |
---|---|
<prefix + ”> |
将当前面板平分为上下两块;我自己使用- 按键 |
<prefix + %> |
将当前面板平分为左右两块;我自己使用= 按键 |
<prefix + x> |
关闭当前面板 |
<prefix + q> |
显示面板编号 |
<prefix + o> |
在当前窗口中选择下一面板 |
<prefix + Space> |
在预置的面板布局中循环切换 |
<prefix + {> |
向前置换当前面板 |
<prefix + }> |
向后置换当前面板 |
<prefix + 方向键> |
移动光标以选择面板 |
<prefix + Ctrl+方向键> |
以 1 个单元格为单位移动边缘以调整当前面板大小 |
<prefix + Alt+方向键> |
以 5 个单元格为单位移动边缘以调整当前面板大小 |
<prefix + Alt+o > |
逆时针旋转当前窗口的面板 |
<prefix + Ctrl+o > |
顺时针旋转当前窗口的面板 |
<prefix + !> |
将当前面板置于新窗口;即新建一个窗口且仅只有面板 |
快捷键命令 | 对应功能特性 |
---|---|
<prefix + u> |
切换窗格最大化 |
<prefix + n> |
切换窗格最小化 |
<prefix + h> |
选择左边的窗格 |
<prefix + j> |
选择下面的窗格 |
<prefix + k> |
选择上面的窗格 |
<prefix + l> |
选择右边的窗格 |
<prefix + Ctrl-h> |
当前窗格向左扩大5 格 |
<prefix + Ctrl-j> |
当前窗格向下扩大5 格 |
<prefix + Ctrl-k> |
当前窗格向上扩大5 格 |
<prefix + Ctrl-l> |
当前窗格向右扩大5 格 |
- [4] 会话相关 - session
快捷键命令 | 对应功能特性 |
---|---|
<prefix + :new> |
启动新会话 |
<prefix + s> |
列出所有会话 |
<prefix + $> |
重命名当前会话 |
4. 快捷键的总结
OpenSource: 总结的快捷键使用文档