- uvim1小时前管理员1
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即可生效。 在 tmux 中向上滚动查看历史输出,取决于是否开启了鼠标支持。
1. 方案一:键盘快捷键操作(滚屏模式/Copy Mode): 默认推荐.
1. 按前缀键Ctrl + b,松开后按[键,进入复制/滚屏模式(右上角会显示当前行号/列号)。
2. 使用方向键↑/↓或PageUp/PageDown向上/向下翻阅历史内容。
3. 查看完毕后,按q或Esc退出该模式,恢复正常输入。2. 方案二:开启鼠标滚动(最便捷): 需修改配置.
如果觉得快捷键繁琐,建议开启鼠标支持,之后直接在终端用鼠标滚轮或手势滑动即可自由上下滚动。1. 编辑配置文件:
nano ~/.tmux.conf
2. 添加这行配置:set -g mouse on3. 保存退出后,在 tmux 内按
Ctrl + b然后输入:source-file ~/.tmux.conf回车生效。在 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 模式已配置成功。跳过基础入门后,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: htop4. 一键启动:运行
tmuxinator dev(或简写mux dev),系统将自动创建所有窗口、分割面板并执行预设命令。- 生效方法:保存后在 tmux 内按