tmux对控制台而言,桌面对GUI应用而言,这是本文维度内的世界。在tmux中,可以:
- 在终端内部执行多任务,运行多个应用程序。
- 在同一窗口中有多个命令行(窗格)。
- 工作区(会话)中有多个窗口(窗口)。
- 在多个工作区之间切换,例如虚拟桌面。
思考TMUX
基于文本的窗口管理器
多路复用器 | “桌面”-说 | |
---|---|---|
复用器 | 多任务 | 同时进行多个应用程序。 |
届会 | 桌面 | 应用程序在这里可见 |
窗口 | 虚拟桌面或应用程序 | 拥有自己屏幕的台式机 |
窗格 | 应用 | 执行操作 |
- 1个服务器。
- 有一个或更多会话。
- 有一个或更多Window。
- 有一个或更多Pane。
- 有一个或更多Window。
- 有一个或更多会话。
CLI Power
通过将一个终端分成多个终端,可以在同一屏幕上运行多个应用程序或终端。
一个屏幕可以用于编辑文件,另一个用户tail -F
日志文件。
tmux支持任意数量的终端。
可以在创建的窗口之间切换。
然后恢复一切
可以让tmux和所有应用程序运行(分离),注销,做一个三明治,然后重新(附加),所有应用仍在运行!
管理工作流程
- 系统管理员监控日志和服务。
- 程序员喜欢在附近使用cli打开编辑器。
可以在tmux会话内部启动运行在远程服务器上的应用程序,将它们分离,然后在下一次重新绑定到您的思路和工作。
多任务处理,保留您的想法。
安装TMUX
tmux打包在大多数Linux和BSD系统上。
要获得有关如何在系统上安装tmux的最新结果,请执行“如何在
本文档是针对版本1.8编写的。重要的是,您必须拥有最新的稳定版tmux。可在tmux主页上查看最新的稳定版本。
Mac OS X用户可以通过MacPorts,fink或Homebrew(aka brew)安装最新的tmux稳定版本 。
如果从源代码编译,则依赖项为libevent和 ncurses。
使用TMUX
开始一个新的会话
1 | tmux |
这就是是您进入tmux会话所需要的全部。
前缀键
Tmux热键必须以特殊方式按下。请仔细阅读,然后自己尝试。
首先,按住前缀键。默认是ctrl + b。
然后停下来。不到一秒钟,键入下一步。
C-b o
表示: 同时按住ctrl + b。释放,然后按o。
记住,前缀+快捷键!
会话名称
会话可以在创建时命名。
1 | tmux new-session [-s session-name] |
创建后可以重命名:
1 | tmux rename-session <session-name> |
快捷键是:ctrl + b,$
窗口名称
Windows可以在创建时命名。
1 | tmux new-window [-n window-name] |
创建后可以重命名windows。
1 | tmux rename-window <new-name> |
快捷键是:ctrl + b,,
创建新的窗口
1 | tmux new-window [-n window-name] |
快捷键是:ctrl + b,c
遍历窗口
按号码:
1 | tmux select-window |
下一个:
1 | tmux next-window |
前一个:
1 | tmux previous-window |
最后一个:
1 | tmux last-window |
快捷键 | 动作 |
---|---|
ctrl + b,n | 转到下一个窗口。 |
ctrl + b,p | 转到上一个窗口。 |
ctrl + b,w | 交互选择当前窗口。 |
ctrl + b,0-9 | 选择窗口0到9。 |
ctrl + b,M-n | 使用铃声或活动标记移动到下一个窗口。 |
ctrl + b,M-p | 使用铃声或活动标记移到上一个窗口。 |
移动窗口
移动窗口:
1 | tmux move-window [-t dst-window] |
交换窗口:
1 | tmux swap-window [-t dst-window] |
ctrl + b,.
移动窗格
1 | tmux move-pane [-t dst-pane] |
ctrl + b,{或}
遍历窗格
在窗格之间移动的快捷方式:
1 | tmux last-window |
ctrl + b,↑或↓←或→
杀掉窗口
1 | tmux kill-window [-t target-window] |
ctrl + b,&
杀掉窗格
1 | tmux kill-pane [-t target-pane] |
ctrl + b,x
分隔窗口为窗格
1 | tmux split-window [-c start-directory] <shell-command> |
tmux窗口可以分为多个窗格。
ctrl + b,%或”
配置TMUX
tmux可以通过~/.tmux.conf
配置文件进行配置。
vi样式复制和粘贴
1 | # VI copypaste mode |
积极调整客户端大小
1 | setw -g aggressive-resize on |
刷新配置
绑定快捷键:ctrl + b,r
1 | bind r source-file ~/.tmux.conf \; display-message "Config reloaded." |
状态栏
mux允许配置状态行,以显示stdout
应用程序的系统信息,窗口列表,甚至管道。
您可以将bash命令传递到tmux状态行,例如:
1 | $(shell-command) |
因此,如果将/usr/local/bin/tmux-mem-cpu-load
stats 输出到stdout
,则将$(tmux-mem-cpu-load)
第一行输出到状态栏,间隔由status-interval
决定:
1 | set -g status-interval 1 |
快捷键
捷径 | 行动 |
---|---|
b |
将前缀密钥(Cb)发送到应用程序。 |
o |
向前旋转当前窗口中的窗格。 |
z |
挂起tmux客户端。 |
! |
将当前窗格移出窗口。 |
" |
将当前窗格分为两个,顶部和底部。 |
# |
列出所有粘贴缓冲区。 |
$ |
重命名当前会话。 |
% |
将当前窗格分为左右两部分。 |
& |
杀死当前窗口。 |
' |
提示选择窗口索引。 |
, |
重命名当前窗口。 |
- |
删除最近复制的文本缓冲区。 |
. |
提示输入索引以移动当前窗口。 |
0 to 9 |
选择窗口0到9。 |
: |
输入tmux命令提示符。 |
; |
移至先前活动的窗格。 |
= |
从列表中选择要交互式粘贴的缓冲区。 |
? |
列出所有键绑定。 |
D |
选择要分离的客户端。 |
[ |
进入复制模式以复制文本或查看历史记录。 |
] |
粘贴最近复制的文本缓冲区。 |
c |
创建一个新窗口。 |
d |
分离当前客户端。 |
f |
提示在打开的窗口中搜索文本。 |
i |
显示有关当前窗口的一些信息。 |
l |
移至先前选择的窗口。 |
n |
转到下一个窗口。 |
o |
选择当前窗口中的下一个窗格。 |
p |
转到上一个窗口。 |
q |
简要显示窗格索引。 |
r |
强制重画连接的客户端。 |
s |
以交互方式为连接的客户端选择一个新会话。 |
L |
将连接的客户端切换回上一个会话。 |
t |
显示时间。 |
w |
交互选择当前窗口。 |
x |
杀死当前窗格。 |
{ |
将当前窗格与上一个窗格交换。 |
} |
将当前窗格与下一个窗格交换。 |
~ |
显示来自tmux的先前消息(如果有)。 |
Page Up |
进入复印模式并向上滚动一页。 |
Up, Down |
切换到上方,下方,左侧或左侧的窗格 |
Left, Right |
当前窗格的右侧。 |
M-1 to M-5 |
将窗格按以下五个预设布局之一进行排列:水平,偶数垂直,水平,主垂直或平铺。 |
M-n |
使用铃声或活动标记移动到下一个窗口。 |
M-o |
向后旋转当前窗口中的窗格。 |
M-p |
使用铃声或活动标记移到上一个窗口。 |
C-Up, C-Down |
以一个单元格为单位调整当前窗格的大小。 |
C-Left, C-Right |
|
M-Up, M-Down |
以五个单元格为单位调整当前窗格的大小。 |
M-Left, M-Right |