通过Tmux开始你的表演


如何灵巧的使用 Tmux 工具呢?

如果我们用终端连接远程主机的时候,如果发生一些不可抗力,导致终端关了的话,估计想死的心都有了。但是有了tmux的话就不一样了,即使你关闭了tmux,下次重新attch的时候,你会发现之前的东西都还在。这是因为即使你关闭了tmux,它也还在服务器的后台运行。

通过Tmux开始你的表演


1. Tmux 工具介绍

如果你使用命令行却不使用 Tmux 工具,那么你就又完美的错过了一次在同事和家人面前装逼的机会。它是一个老牌又经典的终端复用工具,相信命令行的程序员们以及运维同学们都对它赞不绝口。

  • 功能特点

    • 提供基于命令行的功能强大的界面
    • 支持插件,通过配置不同插件实现界面可定制化
    • 完整的快捷键系统,可以完全脱离鼠标,通过键盘快捷键组合
    • 基于会话的多终端窗口管理功能,可以随时存储和恢复终端会话
  • 核心概念

    • Session:会话为基础且可创建多个会话
    • Window: 一个会话中可以包含多个窗口
    • Panel:一个窗口中可以包含多个面板

tmux


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: 总结的快捷键使用文档

通过Tmux开始你的表演


文章作者: Escape
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Escape !
  目录