学习 20% 的操作,实现 80% 的 Tmux 功能

根据帕累托定律的衍生,可以通过学习20%的操作掌握一个软件80%的功能。

本文主要介绍一下 Tmux 及其操作,配置,使用场景。

本文不包含以下内容

tmate

Tmux 是什么?

Tmux 是 Terminal MUltipleXer(终端复用器) 的缩写,主要应用在终端以实现多任务处理。 将终端与会话解绑,保持后台运行。

为什么用它?

  1. 节省终端资源
    一个主机能开启的终端(tty)是有限的,因此会限制用户占用的终端数。在没有终端复用的情况下,实现多任务处理较为困难,比如同时监控多个应用的运行,或者程序编辑同时调试,因此有必要复用终端,提高效率。
  2. 用户的多任务处理
    如上所述,复用后可以帮助用户在一个窗口显示多个prompt,提高效率。
  3. 可以装B。

怎么下载?

大部分情况下,用包管理器直接下载 tmux 就好了。

基本术语

Prefix 前缀(Prefix)即用来修饰特殊的快捷键的前导键,使用它可扩展快捷键的定义,软件可通过设置前缀引导快捷键以避免与系统软件或其他软件的冲突。

为了简化描述,一般将Control-X缩写为C-X,相关知识请参照「从键盘、键盘布局到输入法、输入方案」中的介绍。在Tmux中,默认的Prefix是 C-b,可以通过自己定义改为其他键,普遍推荐改为C-a,但会与Emacs的C-a冲突,所以按照习惯更改即可。

在Tmux中,按下前缀不会有任何提示。

会话(Session) (假设)一个用户只有一个终端,但是可以有多个进程,在 tmux 里,会话可以等同与进程。一个终端可以选择与不同的会话(进程)连接,实现第一层复用。

窗口(Window) 在一个会话中,可以有多个窗口,通过快捷键切换,实现第二层复用。

面板或子窗口(Panel) 在一个窗口内,可以将屏幕划分为多个区域,每个区域都可以执行命令,实现第三层复用。

提示符(Prompt) 在一个面板内,一般会有一个(shell的)提示符,此时的使用方法和一般的 terminal 无二。

所以,一个shell可以标识为 Session-Window-Panel,由此可以实现非常复杂的复用。比如不同的 session 代表不同类型的任务(监控、开发、维护),不同的 window 代表不同的具体工作(开发、部署),不同的 panel 增加 window 的利用效率。

如图蓝框显示的是当前会话的名称。

如图红框显示的是当前会话下各个窗口的名称。开始的数字为窗口的编号,冒号后的文字表示(此窗口内)(焦点所在的面板)运行的程序,符号 * 表示当前焦点所在的窗口,符号-Z表式此窗口内的面板是一个被放大(扩展到全屏)的面板。

如图绿框显示的是当前窗口下各个面板的编号。红色的编号表示焦点在此面板。

如图黄框显示的是每个面板下的提示符,紫框内显示的是每个面板的大小。

如图蓝色区域遮盖的是当前主机的名称。

可以做的事:shell 命令

可以做的事:键盘快捷键

自定义tmux

tmux 的衍生品

参考文献

https://www.ruanyifeng.com/blog/2019/10/tmux.html