TMUX 快速参考
会话、窗口、面板、复制模式、配置
会话管理
创建与连接
tmux # new session
tmux new -s work # new named session
tmux attach -t work # attach to session
tmux attach -dt work # detach others, attach
会话命令
| tmux ls | 列出所有会话 |
| tmux kill-session -t work | 终止指定会话 |
| tmux kill-server | 终止 tmux 服务器及所有会话 |
| tmux rename-session -t old new | 重命名会话 |
| Prefix d | 从当前会话断开 |
| Prefix $ | 重命名当前会话 |
| Prefix s | 列出会话(交互式) |
默认前缀键为 Ctrl-b
窗口
窗口快捷键
| Prefix c | 创建新窗口 |
| Prefix , | 重命名当前窗口 |
| Prefix & | 关闭当前窗口(需确认) |
| Prefix n | 切换到下一个窗口 |
| Prefix p | 切换到上一个窗口 |
| Prefix 0-9 | 按编号切换窗口 |
| Prefix w | 列出窗口(交互式选择) |
| Prefix l | 切换到上次活跃窗口 |
窗口命令
tmux new-window -t work # new window in session
tmux swap-window -t 0 # move window to index 0
tmux move-window -t 3 # renumber to index 3
面板
分割与关闭
| Prefix % | 水平分割(左 | 右) |
| Prefix " | 垂直分割(上 / 下) |
| Prefix x | 关闭当前面板(需确认) |
| Prefix ! | 将面板拆分为独立窗口 |
| Prefix z | 切换面板全屏(zoom) |
调整面板大小
| Prefix Ctrl-Arrow | 调整 1 格 |
| Prefix Alt-Arrow | 调整 5 格 |
| Prefix Space | 循环切换布局 |
布局:even-horizontal、even-vertical、main-horizontal、main-vertical、tiled
导航
在面板间移动
| Prefix Arrow | 移动到指定方向的面板 |
| Prefix o | 循环切换到下一个面板 |
| Prefix q | 显示面板编号,按编号跳转 |
| Prefix { | 与上一个面板交换 |
| Prefix } | 与下一个面板交换 |
在会话间移动
| Prefix ( | 切换到上一个会话 |
| Prefix ) | 切换到下一个会话 |
| Prefix s | 会话选择器(树形视图) |
| Prefix w | 跨所有会话的窗口选择器 |
复制模式
进入与导航
| Prefix [ | 进入复制模式 |
| q | 退出复制模式 |
| Arrow / hjkl | 移动光标(vi 模式) |
| Ctrl-u / Ctrl-d | 向上/向下翻页 |
| g / G | 跳到顶部/底部 |
| / | 向前搜索 |
| ? | 向后搜索 |
| n / N | 下一个/上一个匹配 |
选择与复制
| Space | 开始选择(vi 模式) |
| Enter | 复制选择并退出 |
| Prefix ] | 粘贴缓冲区 |
| v | 切换矩形选择(vi 模式) |
启用 vi 模式:set -g mode-keys vi
配置
常用设置(~/.tmux.conf)
set -g mouse on # enable mouse
set -g base-index 1 # windows start at 1
set -g renumber-windows on # renumber on close
set -g default-terminal "tmux-256color"
set -g history-limit 50000
重载配置
tmux source-file ~/.tmux.conf # from shell
# or Prefix : then type:
source-file ~/.tmux.conf
状态栏
状态栏选项
set -g status-position top
set -g status-style "bg=black,fg=white"
set -g status-left "[#S] "
set -g status-right "%H:%M %d-%b"
set -g status-interval 5
格式变量
| #S | 会话名称 |
| #I | 窗口编号 |
| #W | 窗口名称 |
| #P | 面板编号 |
| #H | 主机名 |
| #T | 面板标题 |
快捷键绑定
自定义绑定
# change prefix to Ctrl-a
unbind C-b
set -g prefix C-a
bind C-a send-prefix
# vim-style pane navigation
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
绑定语法
| bind X command | 将 Prefix + X 绑定到命令 |
| bind -n M-Left prev | 无前缀绑定(Alt-Left) |
| bind -r H resize-pane -L 5 | 可重复触发的绑定 |
| unbind X | 移除绑定 |
| Prefix ? | 列出所有当前快捷键绑定 |
脚本化
脚本布局
tmux new-session -d -s dev
tmux send-keys -t dev "vim" Enter
tmux split-window -h -t dev
tmux send-keys -t dev "npm run dev" Enter
tmux attach -t dev
常用命令
| tmux send-keys -t sess 'cmd' Enter | 向会话发送按键 |
| tmux capture-pane -p | 将面板内容打印到 stdout |
| tmux display-message '#S' | 显示消息/变量 |
| tmux set-environment -g VAR val | 设置环境变量 |
| tmux list-keys | 列出所有快捷键绑定 |
常用模式
推荐 ~/.tmux.conf
set -g mouse on
set -g base-index 1
set -g mode-keys vi
set -g status-position top
set -g history-limit 50000
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
实用技巧
| SSH 断线保持 | tmux new -s work → 断开 → tmux attach -t work |
| 共享会话 | 双方都执行 tmux attach -t same(只读加 -r) |
| 保存滚动历史 | tmux capture-pane -S -3000 -p > log.txt |
| 终止卡死面板 | Prefix x,或 tmux kill-pane -t %N |
| 重排窗口顺序 | :swap-window -s 3 -t 1 |