前言
很早之前我就接触tmux了,但其操作并不简单,所以我依旧习惯打开多个终端进行操作。理所当然的会存在几个弊端。
- 经常会引起无法辨认哪个终端运行的是哪个程序而导致误操作。
- 手机切换终端没电脑那么简单。
- 多终端操作难免会需要鼠标进行操作,各种意义上不方便。
于是在使用过程中将经常使用的操作记下来方便查阅。也算是一篇比较水的教程,如果能有人能获得帮助就好了。
认识tmux结构
在开启了tmux服务器后,会首先创建一个会话,而这个会话则会首先创建一个窗口,其中仅包含一个面板;也就是说,这里看到的所谓终端控制台应该称作tmux的一个面板,虽然其使用方法与终端控制台完全相同。
server | 服务器。输入tmux命令时就开启了一个服务器。 |
session | 会话。一个服务器可以包含多个会话。 |
window | 窗口。一个会话可以包含多个窗口。 |
panel | 面板。一个窗口可以包含多个面板。 |
光这么说过于抽象了,以下以图文以及一些最基本的操作做一些说明。首先 ctrl+b 激活控制台,摁下ctrl+b(不需要长摁)后所进行的操作才会生效。以下所有操作,如查看会话的 ctrl+b,s 默认为激活控制台情况进行的操作,在此简写为 s 。
在终端中每次运行 tmux 命令都会创建一个会话,而 s 能够查看当前的会话情况并可以选择切换会话。如下图所示。
此图中一共有三个会话,其中第二个会话有三个窗口(windows)。(attached)表示当前正在进行的会话。d 退出当前会话,D 能够选择要退出的会话,: 进入命令行模式。比较重要的是 [ 进入复制模式,此时可以滚屏进行其他操作,按q/esc退出。
一般的操作都是在窗口和面板层面上进行,如下图所示:
p n切换当前的窗口。% 能将窗口左右分成两个面板,” 能将窗口上下分成两个面板。其中面板的编号0,1,2,3,4可以使用 q 查看,使用 x 关闭当前面板。默认分屏之后是能分的,可以按住 ctrl+b 然后使用方向键进行调整。alt+方向键能够一次调整五个单位长度。! 将当前面板置于新窗口;即新建一个窗口,其中仅包含当前面板。
面板的置换和分布调整可以使用 { 和 } 来实现,也可以通过 ctrl+o 或是 alt+o 来实现整个面板的顺时针或是逆时针旋转置换。
在面板 1 使用 } 将面板 1 与面板 2 进行置换。可以看到红色编号的面板 2 现在成了1号。
使用 ctrl+o 将面板顺时针进行旋转后,可以看到所有面板都向前移动了一格,相反的 alt+o 可以将所有面板都向后移动一格以归位。
此外,tmux还预置了一些面板布局,可以按space进行切换。通常都是一些等分面板样式,其布局只根据面板个数来进行调整。
全部常用操作
操作表如下以方便查看
Ctrl+b | 激活控制台;此时以下按键生效 | |
系统操作 | ? | 列出所有快捷键;按q返回 |
d | 脱离当前会话;这样可以暂时返回Shell界面,输入tmux attach能够重新进入之前的会话 | |
D | 选择要脱离的会话;在同时开启了多个会话时使用 | |
Ctrl+z | 挂起当前会话 | |
r | 强制重绘未脱离的会话 | |
s | 选择并切换会话;在同时开启了多个会话时使用 | |
: | 进入命令行模式;此时可以输入支持的命令,例如kill-server可以关闭服务器 | |
[ | 进入复制模式;此时的操作与vi/emacs相同,按q/Esc退出 | |
~ | 列出提示信息缓存;其中包含了之前tmux返回的各种提示信息 | |
窗口操作 | c | 创建新窗口 |
& | 关闭当前窗口 | |
数字键 | 切换至指定窗口 | |
p | 切换至上一窗口 | |
n | 切换至下一窗口 | |
l | 在前后两个窗口间互相切换 | |
w | 通过窗口列表切换窗口 | |
, | 重命名当前窗口;这样便于识别 | |
. | 修改当前窗口编号;相当于窗口重新排序 | |
f | 在所有窗口中查找指定文本 | |
面板操作 | ” | 将当前面板平分为上下两块 |
% | 将当前面板平分为左右两块 | |
x | 关闭当前面板 | |
! | 将当前面板置于新窗口;即新建一个窗口,其中仅包含当前面板 | |
Ctrl+方向键 | 以1个单元格为单位移动边缘以调整当前面板大小 | |
Alt+方向键 | 以5个单元格为单位移动边缘以调整当前面板大小 | |
Space | 在预置的面板布局中循环切换;依次包括even-horizontal、even-vertical、main-horizontal、main-vertical、tiled | |
q | 显示面板编号 | |
o | 在当前窗口中选择下一面板 | |
方向键 | 移动光标以选择面板 | |
{ | 向前置换当前面板 | |
} | 向后置换当前面板 | |
Alt+o | 逆时针旋转当前窗口的面板 | |
Ctrl+o | 顺时针旋转当前窗口的面板 |