有什么比温暖闪烁的 Linux 终端更好的吗?
当然有:两个温暖闪烁的 Linux 终端。事实上,越多越好。
很久以前,终端是物理设备,但当然,今天,它们只是作为计算机上的应用程序进行模拟。如果你喜欢将终端作为你的界面,你可能知道一个终端通常是不够的。不可避免地,你将打开一个新的终端或一个新的标签页,以便你可以在其中工作,而你的第一个终端正忙于编译、转换或其他数据处理。
如果你是系统管理员,那么你就知道在同时处理多个系统时,你至少需要四个打开的窗口。
带有标签页的终端应用程序在 Linux 上已经存在很长时间了,幸运的是,这种趋势似乎已经流行起来,以至于它成为现代终端的预期功能。然而,有时在标签页之间来回切换会让人分心或不方便。
唯一的答案是分屏,以便两个或多个终端可以同时存在于一个应用程序窗口中。你的 Linux 工具包中有许多工具可以帮助你切分你的控制台。
Shell、终端和控制台
在切分屏幕之前,你应该知道终端、shell 和“控制台”之间的区别。要获得完整的了解,请阅读我在 Enable Sysadmin 博客上关于这个主题的文章。
简短版本
- shell 是带有提示符的输入和输出屏幕。从技术上讲,即使它不可见(因为它是一个启动你的用户会话的 shell),在你的 POSIX 桌面下方的某个地方也运行着一个 shell。
- 终端是在图形服务器(例如 X11 或 Wayland)中运行的应用程序,其中加载了 shell。终端仅在你启动终端窗口时运行。它或多或少是进入你的 shell 的“门户”。
- “控制台”或“虚拟控制台”是一个术语,通常用于表示在你的桌面之外运行的 shell。你可以通过按 Alt-Ctrl-F2 进入虚拟控制台(通常可以从 F3 到 F7 获得更多虚拟控制台,其中 F1 或 F7 代表你的桌面,具体取决于你的发行版)。
有些应用程序允许你拆分你的 shell 或控制台,而另一些应用程序允许你拆分你的终端。
tmux

tmux 可以说是最灵活和功能最强大的屏幕拆分器,它是一个以键盘为中心的终端复用器,这意味着你可以将一个控制台“分层”在另一个控制台之上,然后在两者之间切换。你还可以将控制台视图分成两半(或三分之一或四分之一,等等),以便你可以看到旁边的其他控制台。
所有控件都围绕键盘,这意味着你永远不必将手从键盘上移开去寻找鼠标,但也意味着你必须学习一些新的键盘组合。
如果你主要使用 tmux 进行屏幕拆分,那么你真正需要的命令只有这些
- Ctrl-B % 用于垂直拆分(左侧一个 shell,右侧一个 shell)
- Ctrl-B" 用于水平拆分(顶部一个 shell,底部一个 shell)
- Ctrl-B O 使另一个 shell 处于活动状态
- Ctrl-B ? 用于帮助
- Ctrl-B d 从 Tmux 分离,使其在后台运行(使用 tmux attach 重新进入)
tmux 有许多优点,包括能够在一台计算机上启动 tmux 会话,然后从另一台计算机远程加入同一会话。它本质上将你的 shell 守护进程化。
例如,通过在 Pi 上运行 tmux,我可以永久保持登录 IRC 的状态——我在 Pi 上启动 tmux,然后从我碰巧使用的任何计算机登录。当我注销时,tmux 继续运行,耐心地等待我从另一台计算机重新连接到会话。
GNU Screen

与 tmux 类似,GNU Screen 也是一个 shell 复用器。你可以从正在运行的会话中分离和重新连接,并且可以水平和垂直拆分屏幕。
Screen 比 tmux 稍显笨拙。它的默认按键绑定是 Ctrl-A,这也恰好是 Bash 用于转到行首的键盘快捷键。这意味着,如果你正在运行 Screen,你必须按 Ctrl-A 两次而不是一次才能转到行首。就我个人而言,我使用 $HOME/.screenrc 中的这一行将触发键重新定义为 Ctrl-J
escape ^jJ
Screen 的拆分功能运行良好,但它遗漏了 tmux 缺少的一些便利功能。例如,当你拆分你的 shell 时,新的 shell 不会在另一个面板中启动。你必须使用 Ctrl-A Tab(或者 Ctrl-J,如果你像我一样重新定义了你的键盘快捷键)导航到另一个空间,并使用 Ctrl-A C 手动创建一个新的 shell。
与 tmux 不同,当你退出 shell 时,拆分不会消失,这是一个在某些情况下非常好的设计特性,但有时也可能很麻烦,因为它迫使你手动管理你的拆分。
尽管如此,Screen 仍然是一个可靠且灵活的应用程序,如果你发现 tmux 对你不可用,你可以运行它。
以下是基本拆分命令,使用默认键盘快捷键
- Ctrl-A | 用于垂直拆分(左侧一个 shell,右侧一个 shell)
- Ctrl-A S 用于水平拆分(顶部一个 shell,底部一个 shell)
- Ctrl-A Tab 使另一个 shell 处于活动状态
- Ctrl-A ? 用于帮助
- Ctrl-A d 从 Screen 分离,使其在后台运行(使用 screen -r 重新进入)
Konsole

Konsole 是与 KDE Plasma 桌面捆绑在一起的终端。与 KDE 本身一样,Konsole 以其高度可定制性和强大功能而闻名。
在其众多功能中,包括拆分窗口的能力,类似于 tmux 和 GNU Screen。由于 Konsole 是图形终端,你可以使用鼠标而不是键盘来控制其分屏功能。
拆分功能位于 Konsole 的 View 菜单中。你可以水平或垂直拆分你的窗口。要更改哪个面板处于活动状态,只需单击它即可。每个面板都是一个独特的终端,因此它可以有自己的主题和标签页。
与 tmux 和 GNU Screen 不同,你无法从 Konsole 分离和重新连接。与大多数图形应用程序一样,你在你实际在它面前时使用 Konsole,并且当你离开时你将失去对它的访问权限(除非你使用远程桌面软件)。
Emacs

Emacs 并不完全是终端复用器,但其界面支持拆分和调整大小,并且它具有内置终端。
如果你无论如何每天都在使用 Emacs,那么在本质上不同的应用程序之间拆分窗口的能力意味着你永远不必离开你最喜欢的文本编辑器的熟悉和舒适的环境。此外,由于 Emacs eshell 模块是用 eLISP 实现的,你可以使用你在 Emacs 本身中使用的相同命令与之交互,从而可以轻松复制和粘贴长文件路径或命令输出。
如果你在图形窗口中使用 Emacs,你可以使用鼠标执行某些操作。使用键盘快捷键更快,有些或多或少是必需的。例如,你可以通过单击面板来更改哪个面板处于活动状态,并且你可以使用鼠标调整分屏的比例。
以下是重要的键盘快捷键
- Ctrl-X 3 用于垂直拆分(左侧一个 shell,右侧一个 shell)
- Ctrl-X 2 用于水平拆分(顶部一个 shell,底部一个 shell)
- Ctrl-X O 使另一个 shell 处于活动状态(你也可以使用鼠标执行此操作)
- Ctrl-X 0 (那是零)关闭当前面板
与 tmux 和 GNU Screen 类似,只要你运行 emacs-client,你就可以从 Emacs 分离和重新连接。
窗口管理器

如果你认为可以拆分屏幕并加载终端的文本编辑器很棒,那么想象一下你的桌面具有相同的功能。有些 Linux 桌面,例如 Ratpoison、Herbsluftwm、i3、Awesome,甚至启用特定设置的 KDE Plasma 桌面,它们将每个应用程序窗口都呈现为桌面网格中的固定平铺。
它们不是窗口“漂浮”在你的桌面上方,而是保持在一个可预测的位置,以便你可以从一个窗口切换到另一个窗口。你可以在你的网格中打开任意数量的终端,模拟终端复用器。事实上,你甚至可以在你的桌面复用器中加载一个终端复用器。
没有什么可以阻止你在其中加载带有拆分缓冲区的 Emacs。没有人知道如果你进一步这样做会发生什么,大多数 Linux 用户都同意最好不要去发现。
与 tmux 和 GNU Screen 不同,除非你算上使用远程桌面软件,否则你无法从你的桌面分离和重新连接。
其他选项
信不信由你,这些不是你在 Linux 上拆分屏幕的唯一选项。还有其他终端模拟器,例如之前的 Tilix 和 Terminator,它们可以拆分成多个部分,以及带有嵌入式终端组件的应用程序等等。在评论中告诉我们你最喜欢的拆分工作空间的方式。
28 条评论