和枯燥的终端说再见吧 → 终端复用工具 Tmux

和枯燥的终端说再见吧 → 终端复用工具 Tmux

还记得我几天前介绍过的 Zsh 吗,我们今天的主角 Tmux 与 Zsh,Vim 一起被大家称为“文本三巨头”,即使是在 GUI 发达的今天,Tmux 仍然拥有大量的用户。


PART 0 → Tmux 能干什么?

Tmux 的全称是 Terminal MUtipleXer,及终端复用软件。顾名思义,它的主要功能就是在你关闭终端窗口之后保持进程的运行,此外 Tmux 的另一个重大功能就是分屏 ↓

这是我的 Tmux 配置(图片仅供参考,产品以实物为准) ↑

你可会说:有很多终端模拟器(Terminal Emulator)都支持分屏啊?!

我在这里不想给你争论哪个方法更好,因为仅凭几句话很明显无法说服你顽固的想法。

这个星球上还有一个和 Tmux 相似的软件叫 Screen,不过 Screen 项目几百年前(夸张手法)就停止维护了,而且功能也较少,据说还会和其他软件发生冲突。因此我们有充足的理由选用 Tmux 而不是 Screen。

PART 1 → 安装

使用 apt-get 在 Ubuntu 系统中安装:

sudo apt-get install tmux

用 homebrew 在 Mac 上安装

brew install tmux

其他系统(比如Windows)请自行搜索

PART 2 → 基本使用

绝大多数 Tmux 的快捷键都以一个 <Prefix> (前缀)开始,Tmux 默认的 Prefix 是 Ctrl + b,中所周知,这个 Prefix 简直烂爆了,按起来别扭的像个什么一样,因此我会在 PART 2 → 自定义配置 中讲讲如何更改这个 Prefix。

举个例子,快捷键 <prefix> + k 的意思就是先同时按下 Ctrl 和 b,然后松开,然后再按 k。

现在启动 Tmux,在一个空白的终端窗口输入命令:

tmux

然后按下你人生中的第一个 Tmux 快捷键:<prefix> + %

也就是说,你需要先同时按下 Ctrl 和 b,然后再按 % (一般来说是 Shift + 5),请务必使用英文输入法且不要打开大写锁定

你会看见你的终端窗口分成了左右两部分,再按 <prefix> + o (是英文字母 o,不是0)。你会发现你的光标从右侧窗口切换到了左侧,如果再重复这些操作,你的光标会在两个窗口之间切换。

玩够了之后,在试试 <prefix> + " (英文输入法下的双引号,也就是Shift + 单引号,通常在 return/enter 键的左侧)

这时你的终端窗口又被上下分屏了。

在告诉你更多快捷键之前,我想介绍一下 Tmux 的 Session,Window,和 Pane 的关系。

这是某年某月某日我在 Tmux 中工作的截图。

我的 Tmux 主题和你的有些不同,但是基本概念是一样的 ↑

就像图上写的那样,屏幕上的一个工作区域叫 Pane。

除了 Pane 以外,Tmux 还允许你打开多个 Window,其实 Window 这个词比较有误导性。你可以把 Tmux 中的 Window 理解为 Linux 中的 Workspace,或者 macOS/Windows 中的桌面 (Desktop)。

在 Tmux 中,一个 Window 可以有多个 Pane。这就好比在 macOS/Windows 中一个桌面可以有多个窗口。

而所有的 Window 都是在一个 Session 里,而你可以同时打开多个 Session。

现在你可以尝试着创建多个 Window,按下快捷键 <prefix> + c,你会进入一个新的 Window,这个 Window 只有一个 Pane;你可以试着用我之前说的方法把这个 Window 分割成多个 Pane。

一张图概括 Session,Window 和 Pane 的关系:

Session &amp;amp;amp;amp;gt; Window &amp;amp;amp;amp;gt; Pane

如果你需要创建多个Session,请按下 <prefix> + : (英文冒号),然后输入new,在按下 return/enter。

你现在进入了一个全新的Session,如果你希望切换回原来的 Session,试着按下 <prefix> + s 或 <prefix> + w。

现在你可以看见你所有的 Tmux 的 Session,Window 和 Pane。上下移动来选择你要进入的 Session。

需要知道的是,所有的 Session 都在一个 Tmux Server 里运行,一般来说,你不可以创建多个 Server(特殊情况这里不做讨论)。

至此,你已经学会了 Tmux 的基本使用方法。

PART 2 → 自定义配置&插件

我之所以没有在上一章列出所有的快捷键,是因为我们会在这一章中进行 Tmux 的自定义配置,完整的 Cheatsheet 会在文章尾部列出。

和许多命令行的软件一样,Tmux 有超多的自定义配置选项,而且 Tmux 的配置并不算太难。如果你懒得自己配置的话,可以用我的配置

如果你用的是 Linux/macOS,你可以通过脚本安装:

$ git clone https://github.com/peterzililuo/tmuxconfig.git # 把 仓库 Clone 下来

$ ./tmuxconfig/install.sh

接着,按下 <prefix> + :

输入 source-file ~/.tmux.conf

在这个配置中,<prefix> 被改为了 Ctrl + x

(网上有很多人用 Ctrl + a 的,但是这会和系统的移到行首快捷键冲突)

这里是一些常用的快捷键(在我的配置里):

Pane

<prefix> 1 在右侧添加 Pane

<prefix> 2 在下方添加 Pane

<prefix> 0 关闭 Pane

<prefix> o 在 Pane 之间切换

<prefix> H 向左扩大 Pane

<prefix> J 向下扩大 Pane

<prefix> K 向上扩大 Pane

<prefix> L 向右扩大 Pane

<prefix> m 最大化/还原 Pane

<prefix> h/j/k/l 在 Pane 之间切换

Window

<prefix> c 创建新 Window

<prefix> <C-h> 切换至左侧 Window

<prefix> <C-l> 切换至右侧 Window

<prefix> q 关闭 Window

状态栏

<prefix> s 隐藏/显示状态栏

如果你不喜欢这个配置,可以在 ~/.tmux.conf 中更改。


补充一下,现在我的 tmux 配置安装方法有改动:

$ curl -fsSL "https://raw.githubusercontent.com/peterzililuo/tmuxconfig/master/install.sh" | /bin/sh

一行命令搞定

编辑于 2019-04-08

文章被以下专栏收录