我是 Konsole 和 GNOME Terminal 的粉丝,并且我经常使用它们。它们都是很棒的项目,代表了现代终端,既能满足整天在 shell 中工作的用户的需求,也能满足偶尔使用 Unix shell 的用户的需求。它们很好地集成到桌面环境中,弥合了常见的 GUI 任务和常见的 shell 任务之间的差距。我在工作中使用 GNOME Terminal,在家中使用 Konsole,我很喜欢它们。然而,在接触到 rxvt-unicode 终端后,它的简洁性、可移植性和可扩展性让我从开始在 Slackware Linux 12 上使用它以来就一直是它的用户。
这就是原因,更重要的是,我如何使用 rxvt 作为我的默认终端。
它很轻量
我的个人预算技巧之一(以及对 维修 和 再利用 这一环保理念的贡献)是永远不买新硬件,而是“拯救”一台完全可用的计算机作为我的个人笔记本电脑。(我的个人笔记本电脑是一台“升级改造”的 2004 年 iBook,运行 Debian Linux,直到 2017 年屏幕无法修复。)开源的明显优势之一是,您可以使用轻量级应用程序运行所有最新的必要软件以及所有最新的安全补丁。这些应用程序,包括桌面本身,几乎不会触及老旧计算机上通常有限的宝贵系统资源。rxvt 终端相对较小;比 xterm 略重,但比 GNOME Terminal 和 Konsole 轻得多。
它很独特
一个简单的终端有助于将桌面功能(例如拖放,rxvt 不 提供)与终端功能(例如,您可以通过 SSH 完成的事情)分开。不熟悉远程系统工作的用户可能会对终端代表什么感到困惑,尤其是在它与计算机的其余部分如此完美地集成在一起时。有时,在本地环境和远程系统之间保持明显的界限是有用的。当然,这完全不是故意的;可以说 rxvt 和类似的简单终端模拟器的缺点是它们不接受拖放操作或提供花哨的上下文菜单(稍后会详细介绍),但这可能是一个令人惊讶的好处。
此外,学习一个简单的终端界面会迫使您扩展您对可用界面的看法。一旦您学会了有效地使用 rxvt,您可能会发现 Eshell 和 xterm 甚至简陋的 TTY 界面都能满足其用途。您学会使用低规格的终端,因为您对终端 需要 什么以及仅仅是 锦上添花 的东西的想法已经转向简单性。
安装 rxvt
我推荐的 rxvt 分支通常在软件仓库中称为 rxvt-unicode,它可能会提供一个名为 URxvt 或类似的启动器。它是一个小型应用程序,不需要太多源代码即可构建,但大多数 Linux 发行版都提供它,因此可以使用您的软件包管理器安装它。
在 Fedora、CentOS 或 RHEL 上
$ sudo dnf install rxvt-unicode
在 Debian 和 Ubuntu 上
$ sudo apt install rxvt-unicode
在其他发行版上,例如 Slackware,可能已包含 rxvt。
默认的 rxvt 界面(具有欺骗性地)简单而朴素。

您可能习惯于使用 GNOME Terminal 或 Konsole 上的“首选项”面板调整界面,但对于 rxvt,您需要在文本文件中进行更改。
自定义 rxvt
rxvt 的优点之一是其包含 xrdb 属性的纯文本配置文件。xrdb 子系统是 X server 资源数据库实用程序,用于管理 X11 应用程序的用户首选项。习惯上将您的首选项放在名为 ~/.Xdefaults 的文件中,然后将这些首选项合并到 xrdb 数据库中。
最简单的自定义是基本颜色。要查看您可以在 rxvt 中定义的颜色和其他属性,请参阅手册页
$ man urxvt
对于自定义窗口的外观,手册页标识了前缀 URxvt,后跟颜色 0 到 15。使用来自任何 Linux 颜色选择器 的十六进制代码,您可以为每种 ANSI 颜色设置自己的色调。这是一个 solarized 主题,带有注释
! solarized theme
! foreground/background
! black
URxvt.color0 : #000000
URxvt.color8 : #555555
! red
URxvt.color1 : #AA0000
URxvt.color9 : #FF5555
! green
URxvt.color2 : #00AA00
URxvt.color10 : #55FF55
! yellow
URxvt.color3 : #AB4400
URxvt.color11 : #FFFF44
! blue
URxvt.color4 : #0000AA
URxvt.color12 : #5555FF
! magenta
URxvt.color5 : #AA00AA
URxvt.color13 : #FF55FF
! cyan
URxvt.color6 : #00AAAA
URxvt.color14 : #55FFFF
! white
URxvt.color7 : #AAAAAA
URxvt.color15 : #FFFFFF
有了这么多文本颜色,您可能更喜欢深色背景。使用 rxvt-unicode,您甚至可以设置部分透明的背景,并具有一定的透明度百分比(100 表示完全不透明,0 表示不可见)。
URxvt*background: [90]#000000
URxvt*depth: 32
URxvt*foreground: #FFFFFF
您还可以将文本设置为系统上安装的任何字体。例如,要将字体设置为 Fantasque Sans Mono,大小为 21 磅
URxvt*font: xft:FantasqueSansMono-Regular:pixelsize=21:antialias=true
URxvt*boldFont: xft:FantasqueSansMono-Bold:pixelsize=21:antialias=true
URxvt*italicFont: xft:FantasqueSansMono-Italic:pixelsize=21:antialias=true
URxvt*letterSpace: -1
要在 .Xdefaults 中实施更改,请运行 xrdb 命令
$ xrdb -merge .Xdefaults
然后重新启动 xrvt。这是结果(请注意,我的桌面壁纸略微透过来)

您还可以自定义滚动条外观
! scrollbar style - rxvt (default),
! plain (compact), NeXT, or xtermn
URxvt.scrollstyle: plain
URxvt.scrollBar_right: True
rxvt 手册中列出了更多可用选项,因此请尝试那些吸引您的选项。要查看所有 URxvt. 属性,请键入
urxvt --help
弹出菜单和其他现代便利设施
当您尝试 rxvt 时,您可能会注意到它不支持某些现代约定,例如 Ctrl+C 复制、Ctrl+V 粘贴、拖放、右键单击上下文菜单等等。然而,事情并不一定像看起来那样:rxvt 具有丰富的功能;它们只是“隐藏”在您可能不习惯的范例中(至少从现代观点来看)。
复制和粘贴
当您想要复制和粘贴时,有几种不同的方法可以做到这一点。对于经验丰富的 Linux 用户来说,“显而易见”的方法是使用 X Window System 的技巧,即单击鼠标中键以粘贴主剪贴板的内容。但是,rxvt 不仅仅提供这些:按住 Ctrl+鼠标右键 并选中 rxvt 中的一个选区,将出现一个上下文菜单,其中包含复制和粘贴选项。菜单出现后,您可以松开 Ctrl 键,但您必须保持按住鼠标右键直到您做出选择。
将换行符转换为空格
有时您在 shell 中键入一个函数或循环,或者从网站复制一个,但随后您决定需要在运行它之前对其进行编辑。问题是,带有换行符的命令用 > 字符表示
$ for i in {0..12}; do
> echo $i
> done
$
当您将其粘贴到终端中时,将在每个换行符处插入新的 > 字符,从而导致这种情况
$ for i in {0..12}; do
> > echo $i
> > done
$
您可以编辑掉它们,但是在终端中跨行工作有点麻烦,因为它使用向上和向下箭头来循环浏览您的历史记录。您可以运行该命令,然后在历史记录中循环回到该命令,这将多行命令转换为一行,但您并不总是想运行命令以便可以编辑它。
当从网站粘贴内容时,您可能会遇到一个相关的问题:一系列命令可能没有 > 符号,但它们可能嵌入了换行符,粘贴后会提示您的终端立即运行该命令。
rxvt 的一个不错的附加功能是 选择 菜单中的 换行符到空格 选项。这将编辑剪贴板的内容,以便换行符变成空格,这意味着代码块在粘贴到 rxvt 中时会减少为易于编辑的一行。您从网站粘贴的命令会丢失任何嵌入的换行符,因此它们不会在您粘贴后自动执行。这 不 会将 > 字符转换为空格,因此如果它们在那里,您仍然必须编辑掉它们,但是将所有内容放在一行中会容易得多
$ for i in {0..12}; do > echo $i > done
换行符到空格 功能是我一直使用的小功能之一,因为我几乎总是将关于需要运行哪个命令才能完成我偶尔执行的不规则任务的注释留在文件夹中。不可避免地,当我重新运行命令时,我最终想要修改该命令,因此能够确保命令在执行之前易于编辑是很好的。仅此功能可能就是多年来我一直坚持使用 rxvt 的真正原因。
设置菜单
为了快速访问常用的终端设置选项,请按 Ctrl+鼠标中键 以切换 选项 菜单的开和关。此菜单允许您设置光标是否闪烁、终端是否使用视觉提示音以及许多其他可以在 .Xdefaults 文件中设置的首选项。与 选择 菜单不同,此菜单作为浮动菜单持续存在,直到您再次按下 Ctrl+鼠标中键。
启动秘诀
rxvt 的另一个强大功能是,它可以在启动时使用命令选项快速自定义。每当我需要花费大量时间进行到远程主机的 SSH 会话时,我都会使用此功能,因为我希望清楚地知道哪个终端包含哪个会话(没有什么比向生产服务器而不是开发服务器发出 sudo poweroff 命令更糟糕的了)。无论您如何设置默认 rxvt 的主题,您都可以启动一个 rxvt 终端,其中包含各种前景色、背景色和光标颜色(分别为 -fg、-bg 和 -cr)。您还可以添加边框以增强强调效果
$ urxvt -fg green -cr green -bd green &

我倾向于保持简单:我使用红色表示生产服务器,绿色表示开发服务器,黄色表示测试或其他一些远程系统。
您可以使用许多选项在启动时覆盖您的默认设置。要查看所有这些选项,请参阅 rxvt 手册。
标签页
rxvt 终端可以通过 Perl 扩展。您是否了解 Perl 在很大程度上无关紧要,因为 Perl 提供的许多功能已经与 rxvt 捆绑在一起,位于 /usr/lib64/urxvt/perl/ 中。
我最喜欢的扩展之一是标签页界面,这是一个相对现代的终端模拟器约定,任何人都应该拥有它——rxvt 用户也包括在内。要在 rxvt 中激活标签页界面,请打开 ~/.Xdefaults 并添加以下配置行
!TABS
URxvt.perl-ext-common : default,tabbed
URxvt.tabbed.tabbar-fg: 2
URxvt.tabbed.tabbar-bg: 0
URxvt.tabbed.tab-fg: 3
URxvt.tabbed.tab-bg: 0
将您的配置与 xrdb 合并,然后重新启动 rxvt。

重新启动后,您的终端顶部会有一个标签页索引。默认条目是 [新建] 和 1。这些条目是可点击的。您可以单击 [新建] 条目以打开一个新标签页,您可以单击一个数字以切换到该标签页。
您还可以使用键盘与标签页进行交互
- Shift+向下箭头 打开一个新标签页
- Shift+向左箭头 激活上一个标签页
- Shift+向右箭头 激活下一个标签页
- Ctrl+向左箭头 将当前标签页向左移动
- Ctrl+向右箭头 将当前标签页向右移动
- Ctrl+D 关闭当前标签页
您可以并且应该尝试更多 Perl 扩展。例如,Kuake 扩展程序通过按下全局热键(默认情况下为 Ctrl+F10)显示和隐藏您的 rxvt 终端。
点击导航
大多数终端的行为不太像文本编辑器,即使它们看起来很像文本编辑器。例如,如果您启动一个命令,例如 echo ello,然后您决定您想键入 hello,您不能只单击 e 将光标发送到那里进行快速编辑。相反,您必须按四次 向左箭头 键,或者您可能知道快捷键 Alt+B 以向后退一个字符串。rxvt 终端改变了这一点。
在 rxvt 中,您可以按 Shift+鼠标左键 将光标重新定位到您正在键入的命令行的任何位置。rxvt 实现此目的的方式是计算然后发出光标向左或光标向右键的次数,以使光标更改其位置。结果是任何使用过任何文本编辑器的人都熟悉的体验,这是一个小的、快速的便利,即使您不一直使用它,您也会欣赏它(毕竟,它确实需要您的手指离开键盘)。
功能,功能,功能
rxvt 中有比此处列出的更多的功能。查找它们的方法是将 rxvt 用作您的终端,并寻找解决在终端中工作或使用像 rxvt 这样旧的“过时”终端工作时困扰您的问题的方法。您会对自己的发现感到惊讶。
6 条评论