Terminal Multiplexers: Screen, Tmux
终端多路复用:Screen,Tmux
命令行选项
术语对照表
英文 | 中文 |
---|
session | 会话 |
attach | 连接 |
detach | 脱离 |
prefix | 前缀 |
multiplexer | 多路复用 |
window | 窗口 |
regions | 区域 |
panes | 面板 |
buffer | 缓存 |
mark | 标记 |
用途 | screen | tmux |
---|
创建指定名称的会话并连接 | screen -S foo | tmux new -s foo |
创建会话并脱离 | screen -S foo -d -m | tmux new -s foo -d |
列出所有会话 | screen -list | tmux ls |
连接 | screen -r | tmux attach |
连接到指定会话 | screen -r foo | tmux attach -t foo |
通过 pid 连接会话 | screen -r pid | |
连接到运行中的会话 | screen -x foo | |
销毁指定会话 | screen -r foo -X quit | tmux kill-session -t foo |
发送命令到指定会话 | screen -r foo -X command | tmux command -t foo |
脱离会话 | screen -d name | |
按键绑定
用途 | screen | screen command | tmux | tmux command |
---|
帮助 | ? | :help | ? | :help |
发送前缀至其他应用 | a | :meta | C-b | :send-prefix |
暂停多路复用 | C-z | :suspend | C-z | :suspend-client |
显示前一个多路复用终端信息 | m/C-m | :lastmsg | ~ | :show-messages |
加载配置文件 | | :source filename | | :source-file filename |
| | session | | |
新建会话 | | | | :new |
新建命名会话 | | | | :new -s name |
切换会话 | | | s | :choose-session |
重命名会话 | | :sessionname newname | $ | rename-session newname |
销毁会话 | C-\ | :quit | | |
| | windows | | |
创建窗口 | c/C-c | :screen | c | :new-window |
切换下一个窗口 | n/C-n/<SPACE> | :next | n | next-window |
切换上一个窗口 | p/h/C-p/<BACKSPACE> | :prev | p | :previous-window |
激活最近使用的窗口 | C-a | :other | | |
选择指定 number 窗口 | number/' number | number | :select-window -t number | |
列出所有窗口 | w/C-w | :windows | | :list-windows |
显示当前窗口信息 | N | :number | | |
重新分配窗口 number | | | . position | :move-window |
重新分配窗口所在会话 | | | . sessname . sessnum:position | |
重绘当前窗口 | l/C-l | :redisplay | r | :refresh-client |
交互式选择窗口 | " | :windowlist -b | w | :choose-window |
重命名窗口 | A | :title | , | |
选择名为 foo 的窗口 | ' | :select | f foo | |
关闭当前窗口 | k | :kill | & | kill-window |
联合窗口 1 到当前窗口 | | | | :join-pane -s 1 |
联合窗口 1 的区域 0 到当前窗口 | | | | :join-pane -s 1.0 |
| | regions | | |
上下分割 | S | :split | | |
左右分割 | ` | /V` | :vsplit | |
切换到下一区域 | <TAB> | | | |
使区域高度相同 | | :resize = | | |
保留当前区域关闭其他区域 | Q | :only | | |
清除当前区域 | C | :clear | | |
关闭当前区域 | X | :remove | | |
输出日志到文件 | | :log | | |
关闭日志 | | log off | | |
调节当前区域行高 | | :resize +/-n | | |
设置当前区域行高为 n | | resize n | | |
| | panes | | |
上下分割 | | | " | :split-window |
左右分割 | | | % | :split-window -h |
切换下一区域 | | | o | :select-pane |
列出面板 | | | | :list-panes |
显示面板编号 | | | q | :list-panes |
旋转面板 | | | C-o | :rotate-window |
反向旋转面板 | | | M-o | :rotate-window -D |
相同宽度的面板布局 | | | M-1 | |
相同高度的面板布局 | | | M-2 | |
交换当前与前一面板 | | | { | :swap-pane -U |
交换当前与后一面板 | | | } | :swap-pane -D |
修改面板布局 | | | <SPACE> | :next-layout |
关闭当前面板 | | | x | :confim-before kill-pane |
break 当前面板至分离窗口 | | | ! | :break-pane |
清除当前面板 | | | | :clear-history |
输出日志到文件 | | | | :pipe-pane "cat > /tmp/tmux.log" |
关闭日志 | | | | :pipe-pane |
调节左/上单元大小 | | | | :resize-pane -L/U n |
| | paste buffer | | |
进入 copy 模式 | [/C-[/<ESC> | :copy | [ | :copy-mode |
paste 最近的缓存 | ] | | ] | :paste-buffer |
缓存列表 | | | # | :list-buffers |
交互式选择缓存 | | | = | :choose-buffer |
缓存保存至文件 | > | :writebuf path | | :save-buffer path |
copy 文件至缓存 | < | :readbuf path | | :load-buffer path |
| | copy mode | | |
默认绑定 | Vim style | | Emacs-style | |
设置标记 | <SPACE> | | C-<SPACE> | |
copy from 标记点并退出 copy mode | <SPACE> | | C-w | |
单列移动 | h/l | | C-b/C-h | |
单行移动 | j/k | | C-n/C-p | |
行开头 | 0 | | C-a | |
行结尾 | $ | | C-e | |
下一个词 | e | | M-f | |
上一个词 | b | | M-b | |
向上翻页 | C-b | | M-v | |
向下翻页 | C-f | | C-v | |
缓存开头 | g | | M-< | |
缓存结尾 | G | | M-> | |
向上搜索 | ? phrase | | C-r phrase | |
向下搜索 | / phrase | | C-s phrase | |
退出 copy 模式 | <ESC> | | q | |
自定义
用途 | screen | tmux |
---|
启动配置文件 | ~/.screenrc | ~/.tmux.conf |
滚动长度 | defscrollback 2000 | set-option histoty-limit 2000 |
配置前缀 | escape ^B^B | set-optime -g prefix C-a |
define key binding | bind | bind-key |
undefine key binding | | unbind-key |
配置 copy/scrollback 绑定 | markkeys h=^b:l=^F:$=^E | setw -g mode-keys vi |
关闭启动信息 | startup_message off | |
配置默认窗口号 | | set -g base-index 1 |
显示状态栏 | caption always caption splitonly # default | set-option status off set-option status on |
自定义标题 | caption string "string" | set-option status-left "string" set-option status-right "string" |
man tmux
options | description |
---|
-2 | 强制假设tmux支持256色 |
-C | 启动 control mode -CC 关闭回显 |
-c | 使用默认 shell 执行指令 |
-f | 指定加载配置文件 |
-l | 加载login shell配置 |
-L | tmux 保存服务socket至 TMUX_TMPDIR,如果变量未设置则保存至/tmp 文件夹 |
-S | 指定服务socket路径 |
-u | 在tmux启东市查找 LC_AlL,LC_CTYPE,LANG三个环境变量,如果存在 UTF8标志则支持UTF8编码 |
-v | 展示详细日志记录 |
Cheat Sheet
Ctrl+b // 激活控制台;此时以下按键生效
快捷键 | 含义 |
---|
系统操作 | |
? | 列出所有快捷键;q 键返回 |
d | 脱离当前会话;返回 shell 界面,输入 tmux attach 重新进入会话 |
D | 选择要脱离的会话;同时开启多个会话使用 |
L | 切换至上一个连接的会话 |
Ctrl+z | 挂起当前会话 |
r | 强制重绘连接的会话 |
s | 选择并切换会话;在同时开启了多个会话时使用 |
t | 显示时间信息 |
( | 切换至前一个会话 |
) | 切换至后一个回话 |
: | 进入命令行模式 |
[ | 进入复制模式;此时的操作与vi/emacs相同,按q/Esc退出 |
] | 粘贴最近的拷贝缓存区内容 |
~ | 列出提示信息缓存 |
# | 列出所有剪切版缓存 |
- | 删除最近的拷贝缓存区内容 |
窗口操作 | |
c | 创建新窗口 |
& | 关闭当前窗口 |
0-9 | 切换至指定窗口 |
p | 切换至上一窗口 |
n | 切换至下一窗口 |
l | 在前后两个窗口间互相切换 |
w | 通过窗口列表切换窗口 |
, | 重命名当前窗口 |
. | 修改当前窗口编号 |
f | 在所有窗口中查找指定文本 |
i | 显示当前窗口信息 |
面板操作 | |
m | 标记当前面板 |
M | 清除标记的面板 |
" | 分隔为上下面板 |
% | 分隔为左右面板 |
x | 关闭当前面板 |
; | 切换至前一个活动面板 |
! | 将当前面板置于新窗口;即新建一个窗口,其中仅包含当前面板 |
Ctrl+方向键 | 以1个单元格为单位移动边缘以调整当前面板大小 |
Alt+方向键 | 以5个单元格为单位移动边缘以调整当前面板大小 |
Space | 在预置的面板布局中循环切换 |
q | 显示面板编号 |
o | 在当前窗口中选择下一面板 |
方向键 | 移动光标以选择面板 |
{ | 向前置换当前面板 |
} | 向后置换当前面板 |
Alt+o | 逆时针旋转当前窗口的面板 |
Alt+n | 切换到下一窗口 |
Alt+p | 切换到上一个窗口 |
Ctrl+o | 顺时针旋转当前窗口的面板 |
z | 切换当前面板缩放状态 |
Reference
man tmux