rxvt-unicode (简体中文)

From ArchWiki

rxvt-unicode 是一个从rxvt分支出的可定制终端。 rxvt-unicode的特性包括:通过Unicode实现的多语言支持,透明度支持,多字体显示,Perl插件支持。

安装

Install rxvt-unicode 包.

配置

浏览 urxvt(1)urxvt(7) 以获得可用的设置。

Xresources

Rxvt-unicode 用命令行参数或者Xresources来控制。命令行参数会覆盖Xresource设置,详情参见X resources

urxvt --help 在标准错误输出 输出所有的 rxvt 设置. 帮助页(man page)有每一个设置的完整描述。

回滚位置

当终端内容过多而无法显示时,旧内容会存放到缓冲区。 默认情况下,当shell有新的输出时,会自动跳到最底部。如果你想看以往的输出内容(而不跳到最底部),设置如下 ~/.Xresources:

! 输出时不滚动
URxvt*scrollTtyOutput: false

! scroll in relation to buffer (with mouse scroll or Shift+Page Up)
URxvt*scrollWithBuffer: true

! 按键按下时回到最底部
URxvt*scrollTtyKeypress: true

回滚辅助屏幕

当你滚动一个有辅助屏幕的页面(例如: 不带-X参数的less,禁用滚动条而让这个页面自己处理滚动会更好:这在konsole终端和基于vte的终端都是默认且不可更改的。

在 urxvt 中, 关闭回滚,启用第二屏幕:

URxvt.secondaryScreen: 1
URxvt.secondaryScroll: 0

除了使用鼠标滚轮滚动之外,上述配置正常生效。当您使用鼠标滚轮在“辅助屏幕”中滚动页面,同时在回滚缓冲区中有一些内容。这时,回滚缓冲区会滚动,而不是页面。为了解决这个问题,有必要在rxvt-unicode中引入一个新选项[1]。在AUR中有一个修补过的rxvt-unicode,名为 rxvt-unicode-better-wheel-scrollingAUR。安装后,将以下内容添加到配置文件:

URxvt.secondaryWheel: 1
注意: 避免在使用这个参数时使用urxvt-vtwheelAUR perl插件, 二者冲突。

字体设置方法

URxvt.font: 9x15

等同于:

URxvt.font: -misc-fixed-medium-r-normal--15-140-75-75-c-90-iso8859-1

设置粗体

URxvt.font: 9x15bold

等同于:

URxvt.font: -misc-fixed-bold-r-normal--15-140-75-75-c-90-iso8859-1

/usr/share/fonts/misc/fonts.alias 可以找到完整的字体(X core font)简称列表(在/usr/share/fonts/的某些子目录下也有其他的fonts.alias文件,但因为他们分别来自其他字体包,所以可能包含你实际上未安装的字体)。值得注意的是,这些别名选择的是ISO-8859-1版本的字体,而不是ISO-10646-1 (Unicode)版本、是75 DPI而不是100 DPI版本,因此您最好避免使用它们,而是使用完整的长名称来选择字体。

注意: 上面的方法只适用于位图字体。其他字体可以用下面的方法通过 Xft 设置:
URxvt.font: xft:monaco:size=10

或者

URxvt.font: xft:monaco:bold:size=10
注意: 如果Xft字体名称中包含连词符(-), 则必须用反斜杠(\)转义两次。这与使用 urxvt 的 -fn参数和fc-list返回的结果不同,其中的反斜杠只出现于一次。

在提交配置之前,在实时终端中测试字体的一个好方法是在终端中打印转义代码,例如:

$ printf '\e]710;%s\007' "xft:Terminus:pixelsize=12"

字体间距

默认情况下,字符之间的距离可能会感觉太宽。间距可以减少一个像素,如:

~/.Xresources
URxvt.letterSpace: -1

这是一些关于urxvt如何计算字体宽度的讨论 [2][3]rxvt-unicode-patchedAUR 改变了计算方法, 使字体更紧凑 (通常情况下)。

颜色

rxvt-unicode在编译时就加入了颜色支持。除了默认的前景色和背景色外,rxvt最多可以显示256种颜色(加上高辨识度的粗体/闪烁/下划线和任何组合)。

还可以将前景(foreground)、背景(background)、游标颜色(cursorColor)、cursorColor2、colorBD、colorUL的颜色值指定为数字0-15,作为引用color0-color15的颜色名称的方便快捷方式。详情参见 #Xresources.

注意: 默认情况下 urxvt 使用与Xterm相同的颜色,除了一个. 添加 URxvt.color12: rgb:5c/5c/ff 到 Xresources 来改变它.

打印

默认情况下,当按下PrintScreen时,rxvt-unicode将通过lpr打印出一个屏幕转储。使用Ctrl+PrintScreenShift-PrintScreen也会在打印输出中包含终端的回滚。根据个人喜好和需要,可以更改或完全禁用此行为。

~/.Xresources
! 当按下PrintScreen时,禁用打印终端内容。
URxvt.print-pipe: "cat > /dev/null"

复制和粘贴

Rxvt-unicode默认使用PRIMARY作为剪切缓冲区。详情参见 Selecting and pasting text

可以通过绑定{{ic|ALT-CTRL-c}和ALT-CTRL-v到复制和粘贴来访问CLIPBOARD

注意: 选中文本会自动复制到 PRIMARYselection-to-clipboardrxvt-unicode 9.20开始的Perl插件也会拷贝到 CLIPBOARD

如果你想复制到PRIMARY选区,并确保你的 CLIPBOARD选区更新了相同的内容,你可以添加以下内容:

URxvt.perl-ext-common:  ...,clipboard,...

以及

URxvt.clipboard.autocopy: true
URxvt.keysym.M-c: perl:clipboard:copy
URxvt.keysym.M-v: perl:clipboard:paste

参见 Clipboard#Managers.

Perl插件

Tango-edit-clear.pngThis article or section needs language, wiki syntax or style improvements. See Help:Style for reference.Tango-edit-clear.png

Reason: 侧重于介绍url-select,因为matcher和url-select基本上是等价的而且手册页存在重复 (Discuss in Talk:Rxvt-unicode (简体中文))

我们可以通过包含以下行来启用URxvt perl扩展:

 URxvt.perl-ext-common: extension_name_1,extension_name_2,...

请注意:在多个插件名之间不应该有任何的间隔

Clickable URLs

您可以使用matcher扩展使终端中的url可单击。例如,要使用鼠标左键在默认的web浏览器中打开链接,请将以下内容添加到.Xresources中:

URxvt.perl-ext-common: default,matcher
URxvt.url-launcher: /usr/bin/xdg-open
URxvt.matcher.button: 1

rxvt-unicode 9.14 可以使用matcher通过键盘打开和列出最近(目前限制为10个)的url:

URxvt.keysym.C-Delete: perl:matcher:last
URxvt.keysym.M-Delete: perl:matcher:list

匹配的链接可以指定前景或背景色,例如蓝色:

URxvt.matcher.rend.0: Uline Bold fg5

或者使用colorUL设置#RRGGBB颜色。然而,这会将颜色应用到所有下划线的文本,而不是只有URL链接:

URxvt.colorUL: #4682B4

Yankable URLs (no mouse)

此外,你可以在web浏览器中选择和打开url,而无需使用鼠标。 从 official repositories 安装urxvt-perls 包,修改你的 .Xresources 。 下面是一个例子:

URxvt.perl-ext: default,url-select
URxvt.keysym.M-u: perl:url-select:select_next
URxvt.url-select.launcher: /usr/bin/xdg-open
URxvt.url-select.underline: true
注意: 这个扩展代替了上面提到的可点击url扩展,因此matcher可以从URxvt中删除。perl-ext

key commands:

Key 描述
Alt+u 进入选择模式。您屏幕上的最后一个URL将被选中。您可以重复Alt+u来向上选择下一个的URL。
k 向上选择下一个URL。
j 向下选择下一个的URL
Return 在浏览器中打开选定的URL并退出选择模式
o 在浏览器中打开选定的URL,不退出选择模式
y 复制选定的URL并退出选择模式
Esc 退出选择模式

Simple tabs

要将选项卡(tabs)添加到urxvt,请将以下内容添加到您的~/.Xresources:

URxvt.perl-ext-common: ...,tabbed,...

使用如下命令控制选项卡(tabs):

Key 描述
Shift+Down 新建选项卡
Shift+Left 转到左边的选项卡
Shift+Right 转到右边的选项卡
Ctrl+Left 向左移动当前选项卡
Ctrl+Right 向右移动当前选项卡
Ctrl+d 关闭选项卡

你可以通过如下方式改变标签的颜色:

URxvt.tabbed.tabbar-fg: 2
URxvt.tabbed.tabbar-bg: 0
URxvt.tabbed.tab-fg: 3
URxvt.tabbed.tab-bg: 0

全屏

您可以安装AURurxvt-fullscreenAUR,然后绑定一个键来启用和关闭urxvt全屏。

~/.Xresources
...
URxvt.perl-ext-common: ...,fullscreen,...
URxvt.keysym.F11: perl:fullscreen:switch
...

动态更改字体大小

AUR安装urxvt-resize-font-gitAUR,将它添加到您的Perl扩展~/.Xresources

 URxvt.perl-ext-common:  ...,resize-font,...

默认快捷键是:

  • Ctrl++ (or Ctrl+Shift+=) 增大字体
  • Ctrl+- 减小字体
  • Ctrl+= 恢复(reset)字体大小
  • Ctrl+? 查看当前字体大小

你也可以改变快捷键, 像这样:

 URxvt.keysym.C-Down:  resize-font:smaller
 URxvt.keysym.C-Up:    resize-font:bigger

要使Ctrl+Shift绑定生效,需要禁用默认绑定(参见讨论[4]):

 URxvt.iso14755: false
 URxvt.iso14755_52: false

禁用Perl插件

如果不使用Perl扩展特性,可以通过完全禁用Perl扩展来提高安全性和速度。

URxvt.perl-ext:
URxvt.perl-ext-common:
注意: 如果您使用多个Perl扩展特性,您可以依次列出它们,用逗号分隔: urxwt.Perl -ext-common:default,matcher,tabbed

故障排除

升级到v9.09后,透明度不生效

rxvt-unicode开发人员删除了很多非标准壁纸设置程序(wallpaper setter)的兼容性代码。使用不兼容的壁纸设置程序会破坏对透明度的支持。建议壁纸设置程序:

  • feh
  • hsetroot
  • esetroot

要使透明真正的起效,请确保注释掉 URxvt.tintColor 和URxvt.inheritPixmap。

远程主机

如果您正在登录到远程主机,在rxvt-unicode下运行文本模式程序时可能会遇到问题。可以通过在远程主机上安装rxvt-unicode或将/usr/share/terminfo/r/rxvt-unicode从您的本地机器复制到您的主机~/.terminfo/r/rxvt-unicode来解决这个问题;rxvt-unicode-256color 也使用相同的方法。

有些远程系统不会自动更改标题,除非您指定TERM=xterm。要修复此问题,请在远程机器上的.bashrc中添加以下代码:

PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}:${PWD}\007"'

使用 rxvt-unicode 作为 gmrun 终端

与其他一些终端不同,urxvt希望-e的参数是单独给出的,而不是与引号组合在一起。这将导致gmrun出现问题,因为它规定了相反的行为。这可以通过在.gmrunrc中gmrun的“Terminal”变量前加上一个“eval”来解决:

Terminal = eval urxvt
TermExec = ${Terminal} -e

(gmrun使用/bin/sh执行命令,因此这里可以理解eval。)eval的副作用是将参数分解-e,就像$@Bash中所做的那样,使urxvt能够理解命令。

我的数字键盘行为怪异,产生不同的输出? (e.g. 在vim中)

一些Debian GNU/Linux用户似乎有这个问题,尽管到目前为止还没有具体的细节报告。这可能是由于错误的TERM环境变量设置造成的,尽管关于是否会发生这种情况以及如何发生的细节还不清楚,但TERM=rxvt应该会提供一个兼容的键映射。

然而,使用xmodmap程序(xorg-xmodmap),你可以将你的数字键盘重新映射回来。

1. 使用xev程序检查数字键盘(numpad)生成的keycode。

  • 启动xev 程序
  • 按下数字键盘的按键 并且 在 xev的输出中寻找 ... keycode xxx ...。 例如, numpad 1 在某些键盘中是 "End" 键,所以你得到的keycode是'keycode 87'.

2. 创建或修改你的xmodmap文件,通常是~/.Xmodmap,其中的内容表示你的键码。

带有数字键盘键码的xmodmap文件示例:

keycode 63 = KP_Multiply
keycode 79 = Home KP_7
keycode 80 = Up KP_8
keycode 81 = Prior KP_9
keycode 82 = KP_Subtract
keycode 83 = Left KP_4
keycode 84 = KP_5
keycode 85 = Right KP_6
keycode 86 = KP_Add
keycode 87 = End KP_1
keycode 88 = Down KP_2
keycode 89 = Next KP_3
keycode 90 = Insert KP_0
keycode 91 = Delete KP_Decimal
keycode 112 = Prior
keycode 117 = Next

3. 在 X 会话启动时载入你的xmodmap文件。

例如, 在 ~/.xinitrc文件中添加:

...
xmodmap ~/.Xmodmap
...

组合键不工作

参见 在终端中启用Alt键.

绘制符号时性能低下

有些程序,如alsamixer和xprop,在某些图形驱动程序上表现不佳,因此重绘非常缓慢。选项“skipBuiltinGlyphs”为~/。Xresources或命令行选项-sbg可以修复此错误。一种可能的解决方案是在~/.Xresources中添加以下内容:

URxvt*skipBuiltinGlyphs:    true

非常多的行会导致速度减慢

matcher插件可能是这里的罪魁祸首。它必须在每次行更新时对行匹配regex,如果您有一个很大的saveLines值,那么允许非常大的最多行可能会加剧这个问题。

这里有一些简单的解决方法:

  • 减少 saveLines
  • 关闭 matcher 插件

如果这两个选项都不合适,你可以设置超过某个截止点之后禁用URL匹配:

  1. 复制 /usr/lib/urxvt/perl/matcher~/.urxvt/ext/ (如果目录不存在则创建)
  2. 修改 ~/.urxvt/ext/matcher, 找到 my ($self, $row) = @_; 行的 on_line_update 部分。它应该在270行。
  3. 那行之后, 插入新行: return () if $row < -100;. 这将在终端顶部后面超过100行的任何行上禁用URL匹配。

参见