rxvt-unicode (简体中文)
rxvt-unicode 是一个从rxvt分支出的可定制终端。 rxvt-unicode的特性包括:通过Unicode实现的多语言支持,透明度支持,多字体显示,Perl插件支持。
安装
配置
浏览 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.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版本,因此您最好避免使用它们,而是使用完整的长名称来选择字体。
URxvt.font: xft:monaco:size=10
或者
URxvt.font: xft:monaco:bold:size=10
在提交配置之前,在实时终端中测试字体的一个好方法是在终端中打印转义代码,例如:
$ 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.
打印
默认情况下,当按下PrintScreen
时,rxvt-unicode将通过lpr打印出一个屏幕转储。使用Ctrl+PrintScreen
或Shift-PrintScreen
也会在打印输出中包含终端的回滚。根据个人喜好和需要,可以更改或完全禁用此行为。
~/.Xresources
! 当按下PrintScreen时,禁用打印终端内容。 URxvt.print-pipe: "cat > /dev/null"
复制和粘贴
Rxvt-unicode默认使用PRIMARY
作为剪切缓冲区。详情参见 Selecting and pasting text。
可以通过绑定{{ic|ALT-CTRL-c}和ALT-CTRL-v
到复制和粘贴来访问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
Perl插件
我们可以通过包含以下行来启用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
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
全屏
您可以安装AUR包urxvt-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++
(orCtrl+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:
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匹配:
- 复制
/usr/lib/urxvt/perl/matcher
到~/.urxvt/ext/
(如果目录不存在则创建) - 修改
~/.urxvt/ext/matcher
, 找到my ($self, $row) = @_;
行的on_line_update
部分。它应该在270行。 - 那行之后, 插入新行:
return () if $row < -100;
. 这将在终端顶部后面超过100行的任何行上禁用URL匹配。
参见
- rxvt-unicode - 官方网站
- Source Code - Browseable CVS
- rxvt-unicode FAQ - 官方FAQ
- rxvt-unicode Reference - 官方手册页
- urxvtperl - 官方Perl扩展参考