rxvt-unicode

出自 Arch Linux 中文维基

rxvt-unicode 是一個從 rxvt 分支出的可定製終端。rxvt-unicode 的特性包括:通過 Unicode 實現的多語言支持、透明度支持、多字體顯示和 Perl 插件支持。

安裝[編輯 | 編輯原始碼]

安裝 rxvt-unicode 包,或 rxvt-unicode-truecolorAUR 以獲得 24 位真彩色支持。

配置[編輯 | 編輯原始碼]

瀏覽 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插件[編輯 | 編輯原始碼]

本文或本章節的語言、語法或風格需要改進。參考:Help:Style

原因:側重於介紹url-select,因為matcher和url-select基本上是等價的而且手冊頁存在重複(在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匹配。

參見[編輯 | 編輯原始碼]