rxvt-unicode
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.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 - 可瀏覽的 CVS
- rxvt-unicode FAQ - 官方 FAQ
- rxvt-unicode Reference - 官方手冊頁
- urxvtperl - 官方 Perl 擴展參考