tmux 基础教程

93
  • uvim

    tmux(Terminal Multiplexer)是终端复用工具,解决两大核心痛点:SSH 断开后程序中断、单个终端无法高效多窗口操作。


    核心概念

    • Session(会话):后台运行的完整独立环境,包含多个窗口。
    • Window(窗口):类似浏览器的标签页,占用整个屏幕。
    • Pane(面板):将单个窗口切分成多个小区块。

    1. 基础命令(系统终端内运行)

    • 新建会话tmux(默认自动命名)或 tmux new -s my_session(指定名字)
    • 查看所有会话tmux ls
    • 重新连接会话tmux a(连上一个)或 tmux a -t my_session
    • 分离当前会话tmux detach
    • 销毁指定会话tmux kill-session -t my_session

    2. 快捷键(进入 tmux 后使用)

    在 tmux 内,所有快捷键必须先按前缀键 Ctrl + b,松开后再按对应功能键

    会话与窗口管理

    • **Ctrl + b 然后按 d**:分离当前会话(程序在后台继续运行)
    • **Ctrl + b 然后按 c**:新建窗口(Window)
    • **Ctrl + b 然后按 n**:切换到下一个窗口
    • **Ctrl + b 然后按 p**:切换到上一个窗口
    • **Ctrl + b 然后按 0~9**:按数字直接切换指定窗口
    • **Ctrl + b 然后按 ,**:重命名当前窗口

    面板拆分(Pane)

    • **Ctrl + b 然后按 %**:左右垂直分屏
    • **Ctrl + b 然后按 "**:上下水平分屏
    • **Ctrl + b 然后按 方向键**:在不同面板间切换
    • **Ctrl + b 然后按 x**:关闭当前面板

    3. 实用配置技巧

    默认配置下鼠标滚动受限。创建配置文件 ~/.tmux.conf 并写入以下内容:

    # 开启鼠标支持(支持点击切换面板、拖拽调整大小、滚轮查看历史)
    set -g mouse on

    保存后在终端运行 tmux source ~/.tmux.conf 即可生效。

  • uvim
    #1

    在 tmux 中向上滚动查看历史输出,取决于是否开启了鼠标支持。

    1. 方案一:键盘快捷键操作(滚屏模式/Copy Mode): 默认推荐.
    1. 按前缀键 Ctrl + b,松开后按 [ 键,进入复制/滚屏模式(右上角会显示当前行号/列号)。
    2. 使用方向键 / PageUp / PageDown 向上/向下翻阅历史内容。
    3. 查看完毕后,按 qEsc 退出该模式,恢复正常输入。

    2. 方案二:开启鼠标滚动(最便捷): 需修改配置.
    如果觉得快捷键繁琐,建议开启鼠标支持,之后直接在终端用鼠标滚轮或手势滑动即可自由上下滚动。

    1. 编辑配置文件:nano ~/.tmux.conf
    2. 添加这行配置:

    set -g mouse on

    3. 保存退出后,在 tmux 内按 Ctrl + b 然后输入 :source-file ~/.tmux.conf 回车生效。

  • uvim
    #2

    在 tmux 复制模式下用键盘选中并复制文本,最便捷的方式是将快捷键绑定习惯设置为 Vi 模式(类似 Vim 操作)。


    第一步:启用 Vi 操作模式(推荐)

    ~/.tmux.conf 中加入以下配置:

    # 开启复制模式下的 Vi 快捷键绑定
    setw -g mode-keys vi

    在 tmux 内按 Ctrl + b 并在键盘输入 :source-file ~/.tmux.conf 使其生效。


    1. 进入复制模式: 步骤 1.
    Ctrl + b,松开后按 [。右上角出现 [X/Y] 坐标即成功进入。

    2. 移动光标至起始位置: 步骤 2.
    * 使用 Vi 方向键(h 左、j 下、k 上、l 右)或普通方向键移动光标。
    * 使用 w / b 按单词跳跃,0 移动到行首,$ 移动到行尾。

    3. 标记并选中文本: 步骤 3.
    * 按 Space(空格键)v 开启文本选择(出现高亮选择区)。
    * 继续按方向键扩展选中区域。

    4. 复制并退出: 步骤 4.
    Enter(回车键)y 复制高亮文本。复制完成后,tmux 会自动退出复制模式。

    5. 粘贴文本: 步骤 5.
    在需要粘贴的面板中,按 **Ctrl + b,松开后按 ]** 即可将刚才复制的内容粘贴出来。


    验证方式:按 Ctrl + b 然后按 [ 进入复制模式后,按 k 键,若光标能够向上移动,说明 Vi 模式已配置成功。

  • uvim
    #3

    跳过基础入门后,tmux 的核心价值在于极致的个性化定制自动化脚本流程


    1. 打造高效 ~/.tmux.conf 配置

    修改前缀键(Prefix)并开启 Vi 绑定是进阶的第一步:

    # 1. 将前缀键改为 Ctrl + a(取消默认的 Ctrl + b,释放左手)
    unbind C-b
    set -g prefix C-a
    bind C-a send-prefix
    
    # 2. 快捷键平滑重载配置(Prefix + r)
    bind r source-file ~/.tmux.conf \; display-message "Config reloaded!"
    
    # 3. 仿 Vim 的面板分割键
    bind | split-window -h -c "#{pane_current_path}" # 垂直分割并保留当前路径
    bind - split-window -v -c "#{pane_current_path}" # 上下分割并保留当前路径
    
    # 4. 仿 Vim 的面板无缝移动(Prefix + h/j/k/l)
    bind h select-pane -L
    bind j select-pane -D
    bind k select-pane -U
    bind l select-pane -R
    
    # 5. 基础体验增强
    set -g base-index 1           # 窗口编号从 1 开始
    setw -g pane-base-index 1      # 面板编号从 1 开始
    set -g renumber-windows on     # 关闭窗口后自动重新编号
    set -g mouse on                # 开启鼠标支持
    setw -g mode-keys vi           # 启用 Vi 模式

    2. TPM(Tmux Plugin Manager)插件生态

    TPM 是 tmux 的官方插件管理器,能极大提升使用体验。

    安装 TPM

    git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

    ~/.tmux.conf 底部添加插件配置:

    # 声明插件
    set -g @plugin 'tmux-plugins/tpm'
    set -g @plugin 'tmux-plugins/tmux-sensible'
    set -g @plugin 'tmux-plugins/tmux-resurrect' # 会话保存与恢复
    set -g @plugin 'tmux-plugins/tmux-continuum' # 定时自动保存
    
    # 设置 Resurrect 自动保存 interval(分钟)
    set -g @continuum-restore 'on'
    
    # 初始化 TPM(必须放在文件最底部)
    run '~/.tmux/plugins/tpm/tpm'
    • 生效方法:保存后在 tmux 内按 Prefix + r,随后按 Prefix + I(大写)触发插件下载安装。
    • 会话备份使用
    • 保存会话Prefix + Ctrl + s
    • 恢复会话Prefix + Ctrl + r

    3. Tmuxinator:环境自动化(Project Layouts)

    每次重启服务器都要重新建 Window、分屏并运行程序非常繁琐。Tmuxinator 可以通过 YAML 配置文件一键加载工作区。

    1. 安装gem install tmuxinator 或通过包管理器安装。
    2. 创建工作区tmuxinator new dev
    3. 编写 .yml 文件

    name: dev
    root: ~/projects/my_app
    
    windows:
      - editor:
          layout: main-vertical
          panes:
            - vim .
            - tail -f logs/development.log
      - server:
          panes:
            - python3 app.py
      - htop: htop

    4. 一键启动:运行 tmuxinator dev(或简写 mux dev),系统将自动创建所有窗口、分割面板并执行预设命令。

发表回复

登录后回复