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很强大,但不要创建过多的会话和窗口,这可能会影响系统性能。建议根据实际需要合理规划会话结构。