Tmux命令速查表

从 session、window、pane 的基础概念,到 attach、split、copy-mode,再到 session group 的真正用途,这篇可以当成 tmux 的中文查阅手册。

泣语

  ·  4 min read

目录

tmux 3.4 为准

tmux:保活终端、拆分工作区、多终端协作同一组 shell。

术语:

  • session — 工作空间
  • window — 标签页
  • pane — 分屏
  • client — 当前连上来的终端

基础概念 #

概念 类比 作用
server 后台守护进程 保存所有会话、窗口和 pane
client 终端窗口 把 tmux 内容显示出来
session 工作空间 包含多个 window
window 标签页 每个 window 里可以切 pane
pane 分屏终端 真正跑 shell/程序的地方

sessionclient:关闭终端,client 没了,session 还活着。重新 attach 回去就能接着用。多个 client 可以同时连同一个 session

高频速查 #

想做什么 命令 默认快捷键
新建会话 tmux new -s dev
查看会话 tmux ls
连接会话 tmux attach -t dev
分离当前会话 Ctrl-b d
新建窗口 tmux new-window Ctrl-b c
切下一个窗口 tmux next-window Ctrl-b n
切上一个窗口 tmux previous-window Ctrl-b p
选择窗口 tmux select-window -t :2 Ctrl-b 0..9
横向分屏 tmux split-window -h Ctrl-b %
纵向分屏 tmux split-window -v Ctrl-b "
切 pane tmux select-pane -L/-R/-U/-D Ctrl-b 方向键
放大当前 pane tmux resize-pane -Z Ctrl-b z
关闭 pane tmux kill-pane Ctrl-b x
进入复制模式 tmux copy-mode Ctrl-b [
列出快捷键 tmux list-keys Ctrl-b ?
命令行执行 tmux 命令 Ctrl-b :

默认前缀键 Ctrl-b:先按 Ctrl-b 松开,再按后面的键。

会话管理 #

新建和进入 #

tmux
tmux new -s dev
tmux new -s logs -d
tmux attach -t dev
tmux new -As dev
命令 含义
tmux 新建一个默认会话
tmux new -s dev 新建名为 dev 的会话并立刻进入
tmux new -s logs -d 后台创建 logs,不进入
tmux attach -t dev 连接到已存在的 dev
tmux new -As dev dev 就 attach,没有就创建

常见 alias:

alias ta='tmux new -As main'

查看、重命名、删除 #

tmux ls
tmux rename-session -t dev backend
tmux kill-session -t backend
tmux kill-server  # 清掉整个 tmux,谨慎使用

分离和重新连接 #

  • Ctrl-b d:detach,退出终端显示,任务继续跑
  • tmux attach -t <session>:重新接回去

window 和 pane #

window 命令 #

tmux new-window -n server
tmux rename-window -t :1 editor
tmux select-window -t :2
tmux move-window -s :2 -t :5
操作 快捷键
新建 window Ctrl-b c
下一个 window Ctrl-b n
上一个 window Ctrl-b p
选择编号窗口 Ctrl-b 0..9
重命名 window Ctrl-b ,
列出 window Ctrl-b w

pane 命令 #

tmux split-window -h
tmux split-window -v
tmux select-pane -L
tmux select-pane -R
tmux resize-pane -L 10
tmux resize-pane -Z
tmux kill-pane
操作 快捷键
左右分屏 Ctrl-b %
上下分屏 Ctrl-b "
切换 pane Ctrl-b 方向键
临时最大化当前 pane Ctrl-b z
关闭 pane Ctrl-b x
按编号显示 pane Ctrl-b q
在 pane 间交换位置 Ctrl-b { / Ctrl-b }

复制模式和滚动历史 #

tmux 自己维护了一份滚动历史,需要进入复制模式才能操作。

操作 快捷键
进入复制模式 Ctrl-b [
退出复制模式 q
向上翻页 PageUp 或移动键
开始选择 Space
复制选中内容 Enter
粘贴 buffer Ctrl-b ]

习惯 Vim 风格可以在配置里加:

set -g mode-keys vi

目标语法 #

大部分 tmux 命令都能带 -t 指定目标,格式:

session:window.pane
目标 含义
dev session dev
dev:2 dev 的第 2 个 window
dev:2.1 dev 第 2 个 window 的第 1 个 pane
:1 当前 session 的第 1 个 window
.0 当前 window 的第 0 个 pane
tmux send-keys -t dev:2.1 'npm test' Enter
tmux kill-window -t dev:3
tmux select-pane -t :.1

进入命令提示符 #

在 tmux 内部按 Ctrl-b : 打开命令提示符,直接输 tmux 命令:

split-window -h
rename-window editor
set -g mouse on

效果和在 shell 里执行 tmux split-window -h 相同。

session group #

多个 session 共享同一组 window,但各自保留独立的"当前窗口"和 session 级选项。

和"多终端 attach 同一 session"的区别:

  • 同一 session:所有 client 当前窗口同步,你切到 logs,对方也跳过来
  • 同一 session group:共享窗口集合,但彼此切换互不影响

共享关系 #

项目 是否共享
window 集合 共享
新建 / 关闭 window 的结果 共享
当前窗口 不共享
上一个窗口 不共享
session 级选项 不共享
kill 某个 session 不影响其他 session

创建方式 #

基于已有 session 创建:

tmux new -s work
tmux new -d -t work -s work-monitor
tmux attach -t work-monitor

显式指定 group 名称:

tmux new -d -t team -s alice
tmux new -d -t team -s bob
tmux attach -t alice

team 是 group 名,alicebob 是两个不同 session,共享同一组 window。

限制 #

new-session -t ... 创建 grouped session 时,-n 和初始 shell-command 不能同时使用。

几个实用命令 #

后台批量起服务 #

tmux new -d -s dev
tmux new-window -t dev -n api
tmux send-keys -t dev:api 'pnpm dev' Enter
tmux new-window -t dev -n worker
tmux send-keys -t dev:worker 'pnpm worker' Enter
tmux attach -t dev

判断 session 是否存在 #

tmux has-session -t dev

存在返回 0,不存在返回非零,常用在脚本里:

tmux has-session -t dev 2>/dev/null || tmux new -d -s dev
tmux attach -t dev

查看 grouped session 信息 #

tmux ls -F '#{session_name} group=#{session_group} members=#{session_group_list}'