Tmux 基础知识
50+
快捷键命令
6
核心功能模块
100%
终端解放
📚 什么是Tmux?
Tmux (terminal multiplexer) 是一个终端复用器,允许在单个终端窗口中创建多个终端会话。它可以保持会话在后台运行,即使断开SSH连接也不会丢失工作状态。
💡 核心优势: Tmux最大的特点是会话持久化和窗口管理。特别适合远程开发、服务器管理和多任务处理场景。
安装和启动
| 操作 | 命令 | 说明 | 频率 |
|---|---|---|---|
| 安装Tmux | brew install tmux | 在macOS上安装Tmux | 高频 |
| 安装Tmux | apt install tmux | 在Ubuntu/Debian上安装 | 中频 |
| 启动Tmux | tmux | 创建新的Tmux会话 | 高频 |
| 退出Tmux | exit | 退出当前会话 | 高频 |
前缀键说明
默认前缀键:Ctrl + b
Tmux使用前缀键机制,所有快捷键都需要先按下前缀键,然后再按对应的命令键。默认前缀是Ctrl+b,可以自定义修改。
- 前缀键作用: 区分Tmux命令和其他终端命令
- 常用替代: 很多开发者喜欢改为Ctrl+a
- 按键顺序: 先按住Ctrl不放,按b,然后松开所有键,再按命令键
会话管理
💡 会话的重要性: 会话是Tmux的最高级别概念,可以包含多个窗口。即使断开连接,会话仍然在后台运行。
会话创建和管理
| 操作 | 命令 | 说明 | 频率 |
|---|---|---|---|
| 创建命名会话 | tmux new -s name | 创建指定名称的会话 | 高频 |
| 列出会话 | tmux ls | 显示所有活动会话 | 高频 |
| 连接会话 | tmux a -t name | 重新连接到指定会话 | 高频 |
| 分离会话 | prefix + d | 从当前会话中分离 | 中频 |
| 杀死会话 | tmux kill-ses -t name | 删除指定会话 | 中频 |
| 重命名会话 | prefix + $ | 重命名当前会话 | 低频 |
会话内快捷键
| 快捷键 | 功能 | 说明 | 频率 |
|---|---|---|---|
| prefix + d | 分离会话 | 保持会话运行,返回终端 | 高频 |
| prefix + s | 会话列表 | 显示所有会话列表 | 中频 |
| prefix + $ | 重命名会话 | 重新命名当前会话 | 中频 |
窗口操作
📑 窗口概念: 窗口相当于浏览器中的标签页,每个窗口可以运行不同的程序或命令,是Tmux的主要工作单元。
窗口创建和导航
| 快捷键 | 功能 | 说明 | 频率 |
|---|---|---|---|
| prefix + c | 创建新窗口 | 在当前会话中创建新窗口 | 高频 |
| prefix + w | 窗口列表 | 显示所有窗口的缩略图 | 高频 |
| prefix + n | 下一个窗口 | 切换到下一个窗口 | 高频 |
| prefix + p | 上一个窗口 | 切换到上一个窗口 | 高频 |
| prefix + 0-9 | 数字切换 | 直接跳转到指定编号窗口 | 中频 |
| prefix + , | 重命名窗口 | 为当前窗口设置名称 | 中频 |
| prefix + & | 关闭窗口 | 关闭当前窗口 | 低频 |
窗口管理和搜索
| 快捷键 | 功能 | 说明 | 频率 |
|---|---|---|---|
| prefix + f | 查找窗口 | 通过窗口名称搜索 | 中频 |
| prefix + . | 移动窗口 | 改变窗口的顺序位置 | 低频 |
| prefix + ! | 窗口转会话 | 将窗口移动到新会话 | 低频 |
面板分割
⚡ 面板的强大功能: 面板是Tmux最有用的功能之一,可以在单个窗口中创建多个终端面板,实现真正的多任务并行操作。
面板分割操作
| 快捷键 | 功能 | 说明 | 频率 |
|---|---|---|---|
| prefix + % | 垂直分割 | 将当前面板垂直分割为两个 | 高频 |
| prefix + " | 水平分割 | 将当前面板水平分割为两个 | 高频 |
| prefix + x | 关闭面板 | 关闭当前面板 | 高频 |
| prefix + o | 循环切换 | 在面板间循环切换焦点 | 高频 |
面板导航和调整
| 快捷键 | 功能 | 说明 | 频率 |
|---|---|---|---|
| prefix + 方向键 | 方向切换 | 按方向键切换到相邻面板 | 中频 |
| prefix + q | 显示编号 | 短暂显示各面板编号 | 中频 |
| prefix + q + 数字 | 编号切换 | 按编号快速跳转到面板 | 中频 |
| prefix + z | 缩放面板 | 最大化/恢复当前面板 | 中频 |
| prefix + { | 向前交换 | 与前一个面板交换位置 | 低频 |
| prefix + } | 向后交换 | 与后一个面板交换位置 | 低频 |
面板布局调整
| 快捷键 | 功能 | 说明 | 频率 |
|---|---|---|---|
| prefix + 空格 | 切换布局 | 循环切换预定义布局 | 中频 |
| prefix + Meta + 方向 | 调整大小 | 调整当前面板大小 | 低频 |
配置文件
⚙️ 配置文件位置: Tmux的配置文件位于
~/.tmux.conf,通过配置可以大幅提升使用体验。
基础配置示例
推荐基础配置
# 设置前缀键为Ctrl+a
set -g prefix C-a
unbind C-b
bind C-a send-prefix
# 启用鼠标支持
set -g mouse on
# 设置256色支持
set -g default-terminal "screen-256color"
# 设置状态栏
set -g status-bg '#1e293b'
set -g status-fg '#f8fafc'
set -g status-left-length 20
set -g status-right-length 50
# 窗口状态设置
set -g window-status-current-bg '#3b82f6'
set -g window-status-current-fg 'white'
set -g window-status-current-attr bold
# 面板边框颜色
set -g pane-border-fg '#475569'
set -g pane-active-border-fg '#3b82f6'
# 消息显示时间
set -g display-time 3000
# 基础快捷键绑定
bind r source-file ~/.tmux.conf \; display "Config reloaded!"
bind | split-window -h
bind - split-window -v
高级配置选项
| 配置项 | 示例 | 说明 | 频率 |
|---|---|---|---|
| 历史记录 | set -g history-limit 50000 | 设置每个面板的历史记录行数 | 中频 |
| 自动重命名 | set -g automatic-rename on | 根据当前命令自动重命名窗口 | 中频 |
| 活动监控 | set -g monitor-activity on | 监控其他面板的活动 | 低频 |
| 复制模式 | setw -g mode-keys vi | 使用vi风格的复制模式 | 低频 |
高级功能
🚀 高级技巧: 掌握这些高级功能可以让你的Tmux使用效率提升一个档次!
复制和粘贴模式
| 快捷键 | 功能 | 说明 | 频率 |
|---|---|---|---|
| prefix + [ | 进入复制模式 | 进入历史浏览和文本选择模式 | 中频 |
| prefix + ] | 粘贴内容 | 粘贴最近复制的文本 | 中频 |
| space/v | 开始选择 | 在复制模式下开始文本选择 | 低频 |
| enter/y | 复制选择 | 复制选中的文本到缓冲区 | 低频 |
多会话管理
| 命令 | 功能 | 说明 | 频率 |
|---|---|---|---|
| tmux new -s session1 -n window1 command | 定制启动 | 创建指定名称和命令的会话 | 中频 |
| tmux attach -t session1 \; new-window | 连接并操作 | 连接会话并执行命令 | 低频 |
| tmux list-sessions | 列出会话 | 显示所有会话详细信息 | 低频 |
脚本化和自动化
自动化工作流
#!/bin/bash
# Tmux工作环境自动设置脚本
# 检查tmux是否已安装
if ! command -v tmux &> /dev/null; then
echo "Tmux未安装,请先安装tmux"
exit 1
fi
# 创建开发环境会话
SESSION_NAME="dev"
# 检查会话是否已存在
if tmux has-session -t $SESSION_NAME 2>/dev/null; then
echo "会话 $SESSION_NAME 已存在,正在连接..."
tmux attach -t $SESSION_NAME
else
# 创建新会话
tmux new-session -d -s $SESSION_NAME
# 创建开发相关窗口
tmux new-window -t $SESSION_NAME:1 -n "编辑器"
tmux send-keys "vim" C-m
tmux new-window -t $SESSION_NAME:2 -n "终端"
tmux send-keys "ls -la" C-m
tmux new-window -t $SESSION_NAME:3 -n "服务器"
tmux send-keys "ssh user@server" C-m
# 在第一个窗口中创建面板布局
tmux select-window -t $SESSION_NAME:1
tmux split-window -h
tmux split-window -v
tmux select-pane -t 0
# 连接到会话
tmux attach -t $SESSION_NAME
fi
常用组合命令
| 命令组合 | 用途 | 说明 | 频率 |
|---|---|---|---|
| tmux a -t dev \; neww -n logs | 连接并创建 | 连接到dev会话并创建logs窗口 | 中频 |
| tmux send-keys -t session1:window1.0 "command" C-m | 远程执行 | 在指定面板中执行命令 | 低频 |
| tmux capture-pane -t session1:window1.0 -p | 捕获输出 | 捕获指定面板的内容 | 低频 |
⚠️ 性能提示: 虽然Tmux很强大,但不要创建过多的会话和窗口,这可能会影响系统性能。建议根据实际需要合理规划会话结构。