发布于 2026-01-06 4 阅读
0

我为什么*喜欢*TMUX

我为什么*喜欢*TMUX

Tmux就像 VIM 一样,是一款实用工具。它有些古老,学习起来也有些困难,但功能极其强大。事实上,它强大到很难舍弃它去使用其他配置。

本质上

tmux 显示多个窗格分割

Tmux 是“终端复用器”。复用器通常指的是用一个设备执行多个操作。终端复用器允许你像使用多个终端一样与一个终端进行交互。

如今许多终端已经开箱即用地实现了 tmux 的一些关键功能。这包括终端标签页、多终端定位(例如并排显示)视图,甚至还有保存会话或自动加载会话的功能。

Tmux 的核心思想就是在一个终端窗口中完成所有操作,而不依赖于终端模拟器本身。

标签页

Tmux 和 tmux 标签页的截图

首先是标签页。Tmux 允许你在单个 tmux 会话中创建完整的“工作区”。这意味着我通常会这样设置:

  1. VIM 编辑器用于代码编辑。
  2. 服务器选项卡用于运行服务器(例如gatsby develop)。
  3. 终端选项卡执行随机终端任务

在某些项目中,我会添加额外的“标签页”或“工作区”。每个标签页也不限于单个终端。您可以在一个标签页内创建任意数量的终端。

我经常把 VIM 标签页的屏幕分成两部分,这样我就可以使用终端运行测试,并同时在 VIM 中修复测试。

如果你是高级用户,你甚至可以将其中一个终端窗口拆分成一个全新的标签页。

还有什么好处?这对于服务器来说简直太棒了。你可以保持一个 SSH 连接到服务器,同时还能访问“多个”终端实例。这样你就可以运行 VIM、执行终端命令等等。

会议

终端显示 Tmux 会话列表

Tmux 的一个优点是它可以创建“会话”,这意味着您可以打开多个独立的 tmux 实例,每个实例都有自己的标签页和应用程序在运行。

此功能不仅限于在任何终端中运行 tmux 并获取新实例。会话存在于终端之外,因此即使终端应用程序崩溃,会话仍在运行,您可以重新连接到该会话。

如果与服务器的 SSH 连接断开,您可以重新通过 SSH 连接并重新连接到 tmux 会话。

你猜怎么着?你也可以故意这么做!

会话管理

我把每个会话都看作一个“工作区”。我在 tmux 中创建一个特定的“工作”会话,其中初始化了 VIM、服务器和其他实用程序,而且我很少关闭它——工作完成后,我只需从会话中分离即可。这样我就可以保存设置,而且由于我使用的工具都很轻量级,所以我并不介意它们始终运行。

我还会创建一个专门用于写作的会话,并在其中打开我经常使用的所有写作项目。

tmux 中的会话管理更像是一个高级用户工具,我最近才开始认真使用它,但它非常实用,目前对我来说,它是 tmux 的卖点。

远程/共享会话

tmux 显示虚线区域并缩放终端输出

你知道如何连接和断开会话,即使是连接在远方服务器上的会话?想象一下,你可以从多台机器连接到同一个会话。没错,想想看。而且,这项功能在 VS Code 推出类似功能之前就已经存在了。

首先,这很适合我的个人配置。我有一台台式机和一台笔记本电脑。我的台式机是Windows系统,配置很棒,但是我们的工作软件在Windows上运行不太流畅,而且WSL2还有很多需要改进的地方——比如,它有个奇怪的bug,会占用所有可用内存——我的电脑上大约有12GB的内存都被它占用了。

我的笔记本电脑是纯 Linux 系统,但它不太能适应频繁的外设切换(主要是连接扩展坞和不连接扩展坞)。但我很喜欢把它用作开发环境。解决方法?我从 Windows 系统通过 SSH 连接到我的电脑(使用 Windows 自带的终端应用),然后启动 Tmux。

太棒。如果我想暂时离开台式机,我只需拿起笔记本电脑,打开终端窗口,然后连接到会话即可。

太酷了。

那么,为什么要截取这张图呢?Tmux 会取连接到同一会话的多个用户之间的最低公分母,然后将输出内容放入该区域,用点填充未使用的空间。

文章来源:https://dev.to/antjanus/why-i-love-tmux-12ak