Linux tmux 使用完全指南

小飞兽 工具&效率 105 次阅读 2026-06-11

概述

tmux(Terminal Multiplexer)是一款在终端环境下广泛使用的多会话管理工具。它允许用户在单个终端窗口中创建多个会话、窗口和面板,每个面板可以运行独立的程序。tmux 还支持会话分离与重连(Detach/Attach),即使网络中断或终端关闭,运行中的任务也不会中断。本文详细介绍 tmux 的核心概念、常用命令以及实用配置,帮助你提升终端操作效率。

基础语法

tmux 的核心概念分为三层:Session(会话)、Window(窗口)、Pane(面板)。一个 Session 可以包含多个 Window,每个 Window 又可以分割成多个 Pane。他们的关系是:Session > Window > Pane。默认的前缀键是 Ctrl+b,按下后松开再按其他键执行具体操作。

    • Session:一组工作环境,可以包含多个窗口,常用于分离不同项目。
    • Window:相当于一个终端标签页,可以切换。
    • Pane:窗口内的分割区域,可以水平或垂直分割。

    常用的快捷键前缀说明:Ctrl+b d 表示分离当前会话,Ctrl+b c 表示创建新窗口,Ctrl+b % 表示垂直分割,Ctrl+b " 表示水平分割。

    完整代码示例+注释

    以下演示 tmux 的常用操作流程,从创建会话到配置自定义:

    # === 基础会话操作 ===
    

    创建名为 myproject 的新会话

    tmux new -s myproject

    分离当前会话(回到普通终端)

    按住 Ctrl+b,松开后再按 d

    等价命令:tmux detach

    列出所有会话

    tmux ls

    重新连接到 myproject 会话

    tmux attach -t myproject

    在会话内切换窗口

    Ctrl+b p — 上一个窗口(previous)

    Ctrl+b n — 下一个窗口(next)

    Ctrl+b 0~9 — 跳转到指定编号的窗口

    === 面板(Pane)操作 ===

    Ctrl+b % — 垂直分割(左边新建面板)

    Ctrl+b " — 水平分割(下方新建面板)

    Ctrl+b 方向键 — 切换到指定方向的面板

    Ctrl+b 空格 — 切换面板布局(垂直/水平/主面板等)

    调整当前面板大小

    Ctrl+b Alt+方向键 (按住 Alt 再按方向键)

    关闭当前面板

    Ctrl+b x (会提示是否确认)

    === 复制/粘贴 ===

    Ctrl+b [ — 进入复制模式

    q — 退出复制模式

    方向键/PageUp/PageDown — 滚动浏览

    Enter — 开始选择

    Enter — 复制选中文本

    === 常用命令(非快捷键) ===

    创建会话并自动进入

    tmux new-session -s work

    重命名当前窗口

    tmux rename-window api

    在指定会话中执行命令(不进入交互模式)

    tmux send-keys -t myproject:0 'cd /home/ubuntu' Enter

    发送命令到所有面板并行执行

    tmux setw synchronize-panes on

    所有面板会同时收到相同的键盘输入

    === 实用的 tmux 配置示例 ===

    写入 ~/.tmux.conf

    set -g prefix C-a # 将前缀从 Ctrl+b 改为 Ctrl+a(更顺手) unbind C-b bind C-a send-prefix

    set -g mouse on # 启用鼠标选择和调整面板
    set -g base-index 1 # 窗口编号从 1 开始(而非 0)
    set -g pane-base-index 1 # 面板编号也从 1 开始

    启用鼠标拖动调整面板大小

    set -g mouse-resize-pane on

    颜色支持

    set -g default-terminal "screen-256color"

    更快的响应速度

    set -g escape-time 0

    显示时间格式

    setw -g clock-mode-style 24

    运行效果

    运行 tmux 后,屏幕底部会显示一条状态栏,默认显示当前会话名、窗口编号和名称、以及时间。垂直分割(Ctrl+b %)会在当前面板左侧打开一个新的终端面板,光标自动切换到新面板;水平分割(Ctrl+b ")则将当前面板一分为二上下排列。通过方向键可以在面板之间移动焦点,长按 Alt+方向键可以调整面板边界的大小。

    分离会话(Ctrl+b d)后,程序继续在后台运行,重新 attach 可以恢复到之前的完整状态。这在远程服务器上特别有用——断开 SSH 连接不会中断正在执行的构建、下载或服务进程。结合 tmuxinator 工具,还可以预先定义好完整的会话布局,一键启动多个项目的工作环境。

    常见问题

    Q1:tmux 中无法使用鼠标滚轮滚动历史输出
    默认情况下,tmux 的面板只显示当前内容,历史输出被截断了。在 ~/.tmux.conf 中添加 set -g mouse on 可以开启鼠标支持,然后用鼠标滚轮滚动。如果希望用键盘滚动,在复制模式(Ctrl+b [)下使用 PageUp/PageDown 或 vi 风格的快捷键。

    Q2:复制的内容无法粘贴到系统剪贴板
    tmux 有自己的剪贴板,不与系统共享。如果需要将 tmux 中复制的内容粘贴到外部程序,需要通过 xclip 或 xsel 工具桥接。配置方式是绑定一个快捷键将 tmux 的缓冲区内容写入 xclip,例如:bind C-c run "tmux save-buffer | xclip -i -selection clipboard"。

    Q3:远程连接断开后 tmux 会话还能保持吗
    只要 SSH 会话创建 tmux 时是在服务器本地(而非通过 tmux attach 到另一个会话),断开连接不会影响 tmux 内部的进程。下次 SSH 登录后执行 tmux attach 即可恢复到之前的完整状态。这是 tmux 相比普通终端最重要的优势之一。

    Q4:tmux 和 screen 应该如何选择
    两者功能相似,但 tmux 更现代:状态栏更美观,支持更多布局选项,脚本化能力更强,且项目更活跃。screen 的优势在于部分老旧系统上预装了 screen 而没有 tmux。对于新项目,推荐使用 tmux。

    延伸阅读

    • tmux 快捷键速查表:https://tmuxcheatsheet.com — 日常使用的快速参考。
    • tmuxinator:使用 YAML 配置文件定义会话布局,一键启动完整的开发环境。
  • 《tmux 2: Productive Mouse-Free Development》:一本专门介绍 tmux 的书籍,适合想深入掌握 tmux 的开发者。