为什么我使用 rxvt 作为我的终端

rxvt-unicode 的简洁性、可移植性和可扩展性使其成为优秀的 Linux 终端。
145 位读者喜欢这篇文章。
Terminal view

Jamie Cox。由 Opensource.com 修改。CC BY 2.0。

我是 Konsole 和 GNOME Terminal 的粉丝,并且经常使用它们。 它们是很棒的项目,它们代表了现代终端,可以满足整天使用 shell 的用户以及偶尔使用 Unix shell 的用户的需求。 它们可以很好地集成到桌面环境中,弥合了常见的 GUI 任务和常见的 shell 任务之间的差距。 我在工作中使用 GNOME Terminal,在家中使用 Konsole,并且都很喜欢它们。 但是,自从我开始使用 Slackware Linux 12 后,我开始接触 rxvt-unicode 终端,它的简洁性、可移植性和可扩展性一直让我成为它的用户。

以下是我使用 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 界面非常(具有欺骗性)简单和朴素。

default rxvt interface

你可能习惯于使用 GNOME Terminal 或 Konsole 上的“首选项”面板来调整你的界面,但是对于 rxvt,你需要在文本文件中进行更改。

自定义 rxvt

rxvt 的优点之一是它的纯文本配置文件,其中包含 xrdb 属性。 xrdb 子系统是 X 服务器资源数据库实用程序,用于管理 X11 应用程序的用户首选项。 习惯上将你的首选项放在名为 ~/.Xdefaults 的文件中,然后将这些首选项合并到 xrdb 数据库中。

最简单的自定义是基本颜色。 要查看可以在 rxvt 中定义的颜色和其他属性,请参阅手册页

$ man urxvt

为了自定义窗口的外观,手册页标识了前缀 URxvt,后跟颜色 015。 使用来自任何 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

你还可以将文本设置为系统上安装的任何字体。 例如,要将你的字体设置为 21 磅的 Fantasque Sans Mono

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。 这是结果(注意我的桌面的壁纸略微显示出来)

rxvt with a custom color theme applied

你还可以自定义滚动条外观

! 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 的主题,都可以使用各种前景、背景和光标颜色(分别为 -fg-bg-cr)启动 rxvt 终端。 你还可以添加边框以增强效果

$ urxvt -fg green -cr green -bd green &

Rxvt launched with a custom theme

我倾向于保持简单:我使用红色表示生产服务器,绿色表示开发服务器,黄色表示测试或其他远程系统。

你可以使用许多选项来在启动时覆盖你的默认值。 要查看所有选项,请参阅 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。

Rvxt with tabs

重新启动后,你的终端顶部会有一个标签索引。 默认条目是 [NEW]1。 这些条目是可点击的。 你可以点击 [NEW] 条目以打开一个新标签页,你可以点击一个数字以切换到该标签页。

您还可以使用键盘与标签页进行交互

  • 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 这样的旧“过时”终端时让您烦恼的事情的方法。 您会对所发现的东西感到惊讶。

接下来阅读什么
标签
Seth Kenlon
Seth Kenlon 是一位 UNIX 极客、自由文化倡导者、独立多媒体艺术家和 D&D 爱好者。 他曾在电影和计算行业工作,通常同时进行。

6 条评论

谢谢,我认为这实际上很有用且富有洞察力。 这些我使用 XYZ 的文章往往什么都没告诉你,至少这篇文章有一些有用的技巧和想法。

嗨 Seth,感谢分享。 我不知道 rxvt 可以定制到这种程度。 它看起来非常好,并且能够简化到特定用户的需求。 我一定会尝试你提到的技巧。 谢谢!

我对 rxvt 的担忧是,我上次检查时,它不再更新或维护了。 我担心漏洞或漏洞链可以与 rxvt 结合使用,从而构成安全威胁。 使用不再更新或维护的东西对我来说似乎风险太大了。 您对此有何看法,我担心这一点是否合理? 我上次查看 rxvt 源代码时,它已经很久没有更新了。 因此,我回到了 gnome-terminal。 Terminator 似乎也有类似的问题。

实际上,rxvt 分支通常有很多活动,因此 rxvt [尚未]完全死亡。

但是,你是对的; 没有太多严格的安全审计。 但说实话,我不太担心代码的质量,因为它已被证明非常健壮且非常简单(它只是围绕它提供的任何 shell 的一个非常简单的包装器)。 考虑到我的用例(在网络防火墙和计算机本地防火墙后面的本地计算机上将其作为终端运行),我认为这是一个相对安全的赌注。

回复 作者 Jay LaCroix (未验证)

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 国际许可协议获得许可。
© . All rights reserved.