rxvt-unicode - Arch Linux 中文维基

跳至內容

# rxvt-unicode

出自 Arch Linux 中文维基

翻譯狀態：

- 本文（或部分內容）譯自 rxvt-unicode，最近一次同步於 2022-07-19，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

相關文章

- rxvt-unicode/Tips and tricks

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+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`。 `selection-to-clipboard` 從rxvt-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插件

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

原因：側重於介紹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

### 全屏

您可以安裝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++` (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匹配。

## 參見

- rxvt-unicode - 官方網站
- Source Code - 可瀏覽的 CVS
- rxvt-unicode FAQ - 官方 FAQ
- rxvt-unicode Reference - 官方手冊頁
- urxvtperl - 官方 Perl 擴展參考

分類：​

- 終端模擬器
- 使用「模板:風格」標記的頁面或章節

rxvt-unicode
新增話題