1. 为什么我折腾了一圈分屏方案最后还是离不开它先交代一下背景。我这几年主要是在 Ubuntu 和 deepin 这类 Linux 发行版上做后端开发和运维相关的事情日常面对的场景基本逃不开这几类一边开着日志流实时盯输出一边写代码偶尔还要在多个服务器之间来回切换。刚开始我是老老实实开多个终端窗口来回切换、拖拽排版、找窗口一天下来光切窗口的时间都够写好几个函数了。后来陆续试过各种方案包括系统自带的分屏快捷键、给终端套一层平铺窗口管理器、用 Docker 里跑多会话再到后来认真用了几个专门做分屏的终端工具。折腾到一定程度之后发现真正能在日常工作中稳定提升效率的其实核心就集中在几个点会话能不能持久保持、分屏能不能随手上、能不能在不借助鼠标的情况下快速操作、在 SSH 远程场景下还靠不靠谱。如果你也有类似的诉求那今天聊的这个方向应该对你有参考价值。需要先说明一下这个标题说的是“多分屏终端”市面上符合这个描述的工具其实不少但真正在 Ubuntu / Linux 用户群里被反复推荐、而且经得起长时间实战考验的我最后筛选下来大概有三类第一类是终端复用器代表工具是 tmux第二类是图形化分屏终端代表工具是 Terminator第三类是一些新生代终端自带的窗口分屏能力比如 Tilix、以及新版 Windows Terminal 连接 WSL 的场景。这篇文章不是要做个简单的“工具清单”而是想从实际使用的角度把这几类方案各自适合什么场景、怎么配置、有哪些坑一次说清楚。如果你是一个刚接触 Linux 不久的新手或者一个已经用 Linux 很多年但一直没认真搞过分屏终端的人这篇文章都可以帮你建立一套清晰的选型思路。我在写这篇内容的时候也会尽量把配置文件和常用快捷键直接贴出来你可以照着抄不需要再花时间去翻文档。2. tmux服务器场景下最稳的“会话保险箱 分屏利器”2.1 tmux 到底解决了什么问题tmux 是一个终端复用器。所谓“复用”本质上是让你在一个终端窗口里同时跑多个会话和面板更关键的是这些会话是挂在后台的。也就是说哪怕你关掉了 SSH 连接服务器上跑着的 tmux 会话依然活着下次重新连上去attach 回去就能看到之前的现场。这一点对远程开发、排查线上问题、跑长时间任务来说简直是刚需。我举个很典型的场景你在服务器上跑一个数据迁移脚本预计要跑四十分钟结果办公网络抖了一下SSH 直接断开。没有 tmux 的话脚本大概率跟着终端进程一起挂掉如果是写到一半的迁移任务恢复起来非常痛苦。有 tmux 的话脚本运行在 tmux 的会话里和 SSH 的连接状态解耦断线最多让你“看不见”不会中断任务的执行。它的第二个核心价值就是分屏。tmux 可以把你当前所在的面板从中间切成左右两块或者上下两块每块都是一个独立的 shell。它可以做到在一个界面上同时看日志、写命令、执行测试不需要额外的窗口管理器配合。分屏之下每一块面板还可以再继续分形成树形布局这在处理某些需要对照输出的任务时特别方便。2.2 安装与基础配置在 Ubuntu 上安装 tmux 很简单一条命令的事sudo apt update sudo apt install -y tmux装完之后不要急着直接用我建议先改一下快捷键前缀。tmux 默认的前缀键是Ctrl b这个组合在终端里按起来远没有Ctrl a顺手后者左手小拇指一探就能够到。很多人喜欢把前缀改成Ctrl a同时把“发送 Ctrl a 到远端会话”的键位也重新映射一下不然你在 tmux 里用 shell 行编辑快捷键的时候会冲突。我用的配置是写在~/.tmux.conf里的set -g prefix C-a unbind C-b bind C-a send-prefix set -g base-index 1 set -s escape-time 0 set -g mouse on set -g history-limit 50000这里每一行都有讲究。prefix C-a把操作前缀改成Ctrl aunbind C-b是把原来的默认前缀解绑避免误触bind C-a send-prefix是为了在 tmux 内部的 shell 里仍然能使用Ctrl a这个组合键去行首base-index 1让窗口序号从 1 开始而不是 0符合人类直觉escape-time 0是为了解决一个很头疼的问题就是在 tmux 里用 Vim 的时候按 Esc 会有延迟这个参数专门消除它mouse on开启鼠标支持滚动、点击选择面板这些操作就能直接用鼠标完成了history-limit则是把回滚历史调大排查日志的时候翻得更多。配置完成后记得在 tmux 里执行tmux source-file ~/.tmux.conf使其生效或者直接重启 tmux。2.3 分屏、切换与布局操作速查下面这张表是我日常使用频率最高的操作整理出来给你做个速查操作目的快捷键左右分屏Ctrl a然后按%上下分屏Ctrl a然后按切换到下一个面板Ctrl a然后按方向键或o关闭当前面板输入exit或Ctrl d新建窗口Ctrl a然后按c切换窗口Ctrl a然后按窗口数字列出所有会话Ctrl a然后按s脱离当前会话Ctrl a然后按d重新连接会话tmux attach -t 会话名注意这里的逻辑先按前缀Ctrl a松开之后再按对应的功能键这是一个动作序列不是同时按下。实际用起来我习惯新建会话的时候给它起个有意义的名字比如tmux new -s deploy这样到第二天再tmux ls查看会话列表时一眼就能看出哪个会话是干什么的。2.4 会话共享与远程协作的额外价值tmux 还有一个不太多人提但非常好用的场景多人在同一台服务器上共享一个会话。运维排查问题时老手带新手可以直接让新手 attach 到同一个会话里两个人看到的是同一个屏幕操作直接可见。方法是在服务器上创建一个带 socket 文件名的会话tmux -S /tmp/shared new -s ops另一个人再执行tmux -S /tmp/shared attach -t ops这样两个人就能实时看到同一个终端画面谁执行命令都能看得到。这个过程不需要第三方远程协作软件只要都在同一台服务器上即可。对于团队内部的教学、协同排障来说这个功能蛮实用的。3. Terminator图形桌面上用鼠标拖出来的分屏布局3.1 和 tmux 定位不同但可以互补tmux 再强它也是跑在终端里的字符界面工具对于某些不习惯完全脱离鼠标的用户来说学习成本确实是第一道坎。而 Terminator 走的是另一条路它是一个图形化终端模拟器专门为分屏而设计在 X 桌面上直接跑支持用鼠标拖拽、右键菜单、快捷键组合等多种方式操作面板。如果你日常主要是在本地 Ubuntu 桌面环境下工作又不希望依赖平铺式窗口管理器来强行管理终端窗口Terminator 几乎是最自然的方案。它把“一个终端窗口内分区”这件事做到了极致你可以把窗口任意切割也可以把某个面板拖出来变成独立窗口还可以拖动面板边框调整大小。鼠标签字党和键盘流都能找到自己舒服的操作方式。我觉得 tmux 和 Terminator 并不是二选一的对立关系而是正好覆盖了两种典型场景。纯远程服务器操作tmux 优先本地桌面高强度多任务Terminator 顺手。当然还有第三种用法就是在 Terminator 的某个面板里再开一个 tmux 会话去连远程服务器这样桌面分屏和远程会话持久化两个优势同时拿到。3.2 安装和布局操作Ubuntu 上安装 Terminatorsudo apt install -y terminator装好后从应用菜单启动即可。它的分屏快捷键和 tmux 有几分相似但不需要前缀键操作目的快捷键水平分割上下分Ctrl Shift O垂直分割左右分Ctrl Shift E关闭当前面板Ctrl Shift W在面板间切换焦点Alt 方向键调整当前面板大小Ctrl Shift 方向键刚上手的时候最容易混淆的是Ctrl Shift O和Ctrl Shift E字母长得完全没有规律可言。我记了很久才记住O 像一个人的上下身被切开所以是水平分割E 是把左右耳朵分开所以是垂直分割。虽然牵强但确实帮我记住了。3.3 布局保存一个被低估的实用功能Terminator 有一个我很喜欢的特性就是可以保存布局。比如你工作中固定需要开四个面板左侧两个分别跑前端和后端开发服务右侧两个一个看日志、一个敲命令。手动拖好一次之后可以在标题栏右键打开 Preferences在 Layout 里把当前布局保存下来取个名字。下次想恢复的时候terminator --layoutdev一条命令就能把所有面板、位置、大小一次性打开。对于每天早上都要在固定环境中开工的人来说这节省的时间非常可观。而且这个 layout 是全局的不管从哪个工作目录启动都能用。还有一个非常贴合实际需求的配置项就是 Terminator 支持把多个面板组成一个“组”组内面板可以同时接收键盘输入。想象一下你有三台测试机需要同时执行同样的操作打开三个面板分别 SSH 到三台机器然后按一下Super G把它们编组之后你在任意一个面板里敲的命令会同步发到所有面板。这个功能做批量运维操作的时候很好用相当于一个轻量级的并行命令工具。3.4 字体、主题与性能提示Terminator 基于 GTK字体渲染这块可以在 Preferences 里直接调。我推荐使用等宽字体比如 Noto Sans Mono、JetBrains Mono 或者 Sarasa Term SC更纱黑体中文显示效果会好很多。具体的字体名可以在终端的配置里填写也可以在系统字体管理器里先预览一下再选。性能方面在本地跑基本没什么压力但如果你的桌面环境是跑在虚拟机里的或者通过远程桌面访问每次切面板和拖动边框时会有轻微卡顿。这个问题可以通过在 Preferences 里关闭实时透明度、减少背景图片的使用、关掉不必要的动画效果来缓解。越简单的渲染远程体验越顺滑。4. Tilix如果你对 GTK3 的现代化交互有执念4.1 为什么 Tilix 值得放在备选列表里Tilix 是另一款针对 GTK 环境开发的平铺式终端模拟器和 Terminator 的功能定位有重叠但交互设计和视觉风格更现代。它最大的特点是把面板布局、窗口标题、会话信息等做了模块化管理并针对大屏和多显示器做了优化。安装同样不复杂sudo apt install -y tilix和 Terminator 对比Tilix 的优势主要体现在三个方面。第一是界面的现代化程度标题栏、分栏边框、标签页的样式更贴近当下的设计趋势第二是对自定义链接的支持终端里输出的路径和 URL 可以高亮并点击跳转第三是和 Vim、Htop 这类全屏应用的兼容性处理相对细致比如当你在 Tilix 里全屏运行 Vim 时标题栏会自动收缩减少视觉干扰。4.2 Tilix 需要踩的配置坑Tilix 有一个常见坑就是它依赖一个 D-Bus 接口在某些精简版 Ubuntu 上单独安装时可能会报 schema 相关的错误导致程序启动不了。如果你遇到类似情况安装后先执行一次sudo apt install -y libgtk-3-bin再试试启动多数情况下能解决。另外一个和 Vim 配色相关的坑是 Tilix 默认可能会使用内置的调色板来覆盖终端的 256 色配置导致 Vim 的 colorscheme 颜色变得很奇怪。解决办法是在 Tilix 的 Profile 设置里把颜色方案改成“Tango”或者直接勾选“从系统主题获取颜色”。4.3 三款工具的定位差异对比维度tmuxTerminatorTilix运行形态终端内复用器图形终端模拟器图形终端模拟器依赖图形界面不需要需要需要会话持久化支持核心能力较弱较弱鼠标操作需开启 mouse 模式原生支持原生支持远程服务器场景非常适合不直接支持不直接支持界面现代感无一般较现代上手门槛较高低中如果你只打算装一个工具那我建议优先考虑 tmux因为它的会话保存能力是后面两个图形化工具无法替代的。如果你更看重图形桌面下的直观操作体验那 Terminator 的成熟度和用户基础会让它成为更稳妥的选择。Tilix 则适合那些对视觉效果要求高、并且愿意花点时间折腾配置的用户。5. 几个绕不开的实战痛点与解决经验5.1 SSH 断线后 tmux 会话丢失的误解很多刚接触 tmux 的人有一个误解以为只要在服务器上启动了 tmuxSSH 断线就一定不会丢。实际上如果 tmux 会话本身是在 SSH 连接期间通过某个 shell 启动的SSH 断开时该会话的父进程关系链如果被终端挂断信号波及依然可能出问题。正确的做法是让 tmux 的会话完全脱离任何终端生命周期成为系统级的守护进程。实际操作上比较稳妥的方法有两个。第一个是通过 systemd service 启动 tmux 会话这样它彻底变成服务进程另一个简单直接的做法是使用tmux new -d以 detached 模式创建会话然后再 attach 进去。用-d参数创建的会话从一开始就不依赖当前终端SSH 断开的影响就会小很多。比如tmux new -d -s mytask python3 long_running.py tmux attach -t mytask第一行直接创建并让任务在后台 session 里运行第二行再进入查看。这样做即使 SSH 断线任务也在跑即使你不 attach 进去任务也不受影响。5.2 tmux 和 Vim 的剪贴板互通问题在 tmux 里用 Vim 复制文本默认情况下面板的剪贴板和系统剪贴板是分离的你从 Vim 里 yank 的内容无法粘贴到浏览器或者另一个 GUI 应用里反之亦然。这个问题在 tmux 与系统剪贴板之间尤其突出让很多人一度觉得“在 tmux 里干活复制内容都费劲”。解决办法是安装并配置剪贴板桥接工具 xclip然后在~/.tmux.conf中加上相关绑定sudo apt install -y xclipbind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel xclip -selection clipboard bind P paste-buffer这样在 copy-mode 里按 y 复制的内容会直接进入系统剪贴板按大写的 P 则可以把系统剪贴板内容粘贴进 tmux 面板。配置完后需要重新加载 tmux 配置或者重启会话。5.3 滚动输出内容被截断的坑Terminator 和 Tilix 虽然图形界面做得漂亮但默认的滚动行数一般只有几千行排查大量日志输出时容易看不到历史记录。tmux 则通过history-limit来控制但要注意这个参数只在新建会话时生效对已经存在的会话无效。如果你发现当前会话的回滚历史不够用了可以在启动新会话前先改配置或者通过tmux new -s 新会话重建现场。另一个经验是不管用哪个分屏工具排查日志时最好先在管道命令层面做处理比如用grep --line-buffered配合tee把输出同时写进文件。因为任何终端模拟器的滚动缓冲区都有上限真正需要追溯历史数据的时候还是落盘文件最可靠。5.4 远程分屏时死等一个面板输出的尴尬这个场景挺常见的你和同事共享一个 tmux 会话同事在那个面板里执行了一个长时间任务你在另一个面板里想敲命令但 tmux 的同步模式没开好的话你必须等待。如果你只是想看自己的内容其实可以在两个窗口之间独立操作前提是搞清楚 tmux 的窗口和面板层级关系。窗口可以理解为独立的标签页面板是窗口内再分割出来的小区域。多个人协作时与其挤在一个窗口里面板里不如各自开独立的窗口频繁用Ctrl a n/Ctrl a p切换窗口这样互不干扰。6. 分屏终端的延伸玩法与效率组织思路6.1 从“分屏”到“工作区”单纯把屏幕切出几个格子来时间长了依然会觉得乱。真正提升效率的是站在“工作区”的视角去规划布局。比如我为不同类型的任务准备了几个 tmux 会话dev对应日常代码开发ops对应服务器巡检和脚本执行logs对应日志追踪。每个会话内部的窗口布局都在刚开始使用时手动调整好并固定在习惯的位置上。这样做的收益很明显。工作间隙被打断后重新进入状态只需要tmux attach -t dev一切还是原来的样子不需要一个个重新打开文件、重启服务、找回上一次思考的上下文。Terminator 的 layout 保存也起了很大作用我把固定面板组合分别保存成default、deploy、monitor等布局文件配合启动脚本一键切换。6.2 和自动化脚本结合把终端环境变成一键开工把分屏终端环境和自动化脚本结合是一个非常值得尝试的进阶玩法。比如我写了一个简单的 bash 脚本每次开机后自动完成这些动作检查工作目录是否存在、启动数据库容器、拉起开发服务器、再打开 Terminator 并加载特定布局。整个过程一键完成省去了重复的人工操作。脚本的大致思路是#!/bin/bash cd ~/work/project docker compose up -d terminator --layoutdev 然后配合系统的“启动应用程序”功能在登录桌面后自动执行一次。长期下来每天开工变成了一个手都不用动的过程进入工作状态更快。6.3 分屏之外的“多终端”需求同时管理多台服务器如果你管理的服务器数量不止一两台单纯的分屏操作已经不够用了你可能会需要批量执行工具比如pssh或者clusterssh。这类工具可以把同一命令分发到多台服务器执行并汇总输出。此时再把 Terminator 的分组广播功能用上做一个“半自动运维台”效率和手速就完全不在一个级别了。不过这里也提醒一句批量执行命令有它的危险性一条误操作可能在几十台机器上同时生效。所以我个人建议批量工具的使用场景限定在“只读命令”和“灰度发布”这类可回滚操作上明确具有破坏性的操作还是逐台执行比较稳。7. 总结一点自己的选型经验每次有人问我 Linux 下推荐什么多分屏终端我一般先反问他一个问题你主要是在本地桌面用还是要重度连接远程服务器如果是前者Terminator 或者 Tilix 可以直接上手界面直观、配置简单、鼠标就能操作。如果是后者tmux 是绕不开的选择学习成本虽然稍高但它能把“会话持久化”这件事做好这在远程工作中带来的安心感是图形化工具给不了的。如果条件允许我更建议把两者搭配着用本地图形界面上放 Terminator每个面板用 SSH 连服务器服务器上再各开一个 tmux 会话保存现场。这套组合我用了两三年算是目前最顺手的一套方案。最后分享一个小经验工具永远是越用越顺手的关键是先花一两天把快捷键和配置调成自己舒服的样子而不是默认配置拿过来就将就。磨刀不误砍柴工分屏终端这件事尤其如此。希望这篇内容能帮你少走点弯路早点找到顺手的终端工作方式。