xterm
xterm 是 X Window 系统 的标准终端模拟器。X Window 系统。它具有高度可配置性,并具有许多实用和一些不寻常的功能。
安装
配置
资源文件设置
您可以在 X 资源文件中设置几个选项,这些选项可以使此终端模拟器使用起来更加愉快。请参阅 xterm(1) § RESOURCES 以获取完整列表。
TERM 环境变量
允许 xterm 正确报告 TERM 变量。不要从您的 ~/.bashrc
或 ~/.bash_profile
或类似文件中设置 TERM 变量。终端本身应向系统报告正确的 TERM,以便使用正确的 terminfo 文件。两个可用的 terminfo 名称是 xterm 和 xterm-256color。要设置名称,请使用资源
XTerm.termName: xterm-256color
您可以使用以下任一命令在 xterm 中检查结果
$ echo $TERM $ tset -q
UTF-8
确保您的 locale 设置为 UTF-8。如果您不使用 UTF-8,您可能需要强制 xterm 更严格地遵循您的 locale,方法是设置
XTerm.vt100.locale: true
要强制使用 UTF-8,请设置
XTerm.vt100.locale: false XTerm.vt100.utf8: true
这通常是必要的,因为 XTerm 不支持所有 UTF-8 locale,包括 eo.UTF-8
。
使“Alt”键的行为与其他终端模拟器一致
xterm 中默认的 Alt
键行为是发送八位输入字符的修饰符,例如,按 Alt+f
插入 æ
。要使 Alt
键发送 ^[
(escape)键(如 gnome-terminal 和 konsole 中那样),请设置
XTerm.vt100.metaSendsEscape: true
修复退格键
在 Arch Linux 上,按下退格键时,xterm 发送 ^H
键。这会破坏 Emacs 上的 Ctrl+H
组合键。解决方法是在按下退格键时发送 ^?
,方法是设置资源
XTerm.vt100.backarrowKey: false XTerm.ttyModes: erase ^?
按键绑定
xterm 为操作终端定义了一整套“动作”,例如 copy-selection()
、hard-reset()
、scroll-back()
等。这些动作可以使用 translations
资源映射到鼠标/键盘组合。例如,您可以将 Ctrl+M
和 Ctrl+R
映射到最大化/恢复窗口
XTerm.vt100.translations: #override \n\ Ctrl <Key>M: maximize() \n\ Ctrl <Key>R: restore()
#override
表示这些绑定应覆盖任何现有绑定(对于自定义按键绑定,您几乎总是需要这样做)。每个绑定必须用转义序列 \n
分隔。如果要插入文字换行符,也需要转义(因此为 \n\
)。有关完整动作列表和许多示例,请参阅 xterm(1) § KEY_BINDINGS。
keymap()
动作。滚动
当新行写入 xterm 窗口底部时,旧行将从顶部消失。要向上和向下滚动浏览屏幕外的行,可以使用鼠标滚轮、组合键 Shift+PageUp
和 Shift+PageDown
或滚动条。
默认情况下,保存 1024 行。您可以使用 saveLines
资源更改保存的行数
XTerm.vt100.saveLines: 4096
影响滚动的其他 X 资源包括 jumpScroll
、multiScroll
和 fastScroll
(都在 XTerm.vt100
下,请参阅 xterm(1) § VT100 Widget Resources)。要在 备用屏幕内滚动,请将 alternateScroll
设置为 true
。
滚动条
默认情况下不显示滚动条。可以通过资源设置启用滚动条并调整其外观(请注意“scrollbar”的大小写不同!)
XTerm.vt100.scrollBar: true XTerm.vt100.scrollbar.width: 8
有关其他滚动条资源,请参阅 xterm(1) § Scrollbar Resources。
滚动条的操作方式可能与您习惯使用的不同。
- 向下滚动
- 用鼠标左键单击滚动条,或
- 用鼠标中键单击滚动条上拇指下方的位置。
- 向上滚动
- 用鼠标右键单击滚动条,或
- 用鼠标中键单击滚动条上拇指上方的位置。
- 要定位文本,在任一方向移动
- 用鼠标中键抓住拇指并使用“单击并拖动”。
菜单
xterm 在编译时禁用了工具栏或菜单栏。当您在 xterm 窗口中按下 Ctrl+鼠标按钮
时,菜单仍然可以作为弹出窗口使用。菜单项调用的操作通常可以使用命令行选项或通过设置资源值来完成。
XTerm*geometry: 80x32
的行。这确实以 80 列乘 32 行的主窗口启动 xterm,但它也强制菜单窗口为 80 像素乘 32 像素!这就是为什么您应该完全指定资源XTerm.vt100.geometry: 80x32
下面讨论一些菜单选项。
使用 Ctrl+鼠标左键
打开
安全键盘
尝试确保只有 xterm 窗口,而没有其他应用程序接收您的击键。调用它时,显示会变为反相视频。如果显示不是反相视频,则安全键盘模式未生效。请阅读 xterm(1) § SECURITY 以了解此选项的限制。允许发送事件
允许其他进程向 xterm 窗口发送按键和鼠标事件。由于存在安全风险,除非您非常确定自己知道自己在做什么,否则不要启用此选项。记录到文件
– 日志文件将命名为Xterm.log.hostname.yyyy.mm.dd.hh.mm.ss.XXXXXX
。此文件将包含所有打印的输出和所有光标移动。日志记录可能存在安全风险。- 六个
发送 *** 信号
菜单项通常没有用,除非您的键盘出现故障。HUP
、TERM
和KILL
将关闭 xterm 窗口。应避免使用KILL
,因为它不允许运行任何清理代码。 退出
菜单项也将关闭 xterm 窗口 – 它与发送HUP
信号相同。大多数用户将使用键盘组合Ctrl+d
或键入exit
来关闭 xterm 实例。
使用 Ctrl+鼠标中键
打开
选择到剪贴板
– 通常,选定的文本存储在 PRIMARY 中,以便使用Shift+Insert
或使用鼠标中键粘贴。通过将此选项切换为开启,选定的文本将使用 CLIPBOARD,允许您使用Ctrl+v
将 xterm 窗口中选定的文本粘贴到 GUI 应用程序中。相应的资源是XTerm.vt100.selectToClipboard
。显示备用屏幕
– 当您使用终端应用程序(如 vim 或 less)时,将打开备用屏幕。主 VT 窗口(现在已隐藏)仍保留在内存中。您可以通过切换此菜单选项来查看此主窗口,但不能在其中发出任何命令。您可以从此主窗口中选择和复制文本。提示: 挂起在备用屏幕中运行的进程,然后恢复它比使用显示备用屏幕
提供更多功能。使用 bash shell,按Ctrl+z
挂起进程;然后发出命令fg
恢复它。显示 Tek 窗口
和切换到 Tek 模式
– Tektronix 4014 是 1970 年代用于 CAD 和绘图应用程序的图形终端。来自 plotutils 的命令行程序graph
和应用程序 gnuplot 可以设置为使用 xterm 的 Tek 仿真;大多数人会更喜欢更现代的显示选项来绘制数据图表。请参阅下面的#Tek 4014 演示。
使用 Ctrl+鼠标右键
打开
- 当使用 XLFD 字体时,前七个菜单项将更改当前 xterm 窗口中使用的字体和字体大小。如果您使用的是 Xft 字体,则只会更改字体大小,字体不会随不同的选择而更改。提示: 如果您希望关注进程但不希望在终端窗口上占用大量屏幕空间,则
Unreadable
和Tiny
很有用。一个示例用途可能是长时间的编译过程,您只想查看操作是否完成。 - 使用 XLFD 字体名称时,
Selection
允许您切换到存储在 PRIMARY 选择(或 CLIPBOARD)中的字体名称。
从 Tek 窗口 使用 Ctrl+鼠标中键
打开。
第一个部分中的选项允许您更改 Tek 窗口字体大小。第二组选项用于在 Tek 仿真窗口和主窗口或 VT 窗口之间移动焦点,以及关闭或隐藏 Tek 窗口。
复制和粘贴
首先,在 xterm 中使用鼠标突出显示文本(或在其他应用程序中),将选择要复制的文本,然后单击鼠标中键将粘贴突出显示的文本。组合键 Shift+Insert
将粘贴突出显示的文本(但并非在所有应用程序中)。
有关术语和一般信息,请参阅 剪贴板#选择。
PRIMARY 或 CLIPBOARD
默认情况下,xterm 将突出显示的文本复制到名为 PRIMARY 选择的缓冲区中,一旦突出显示另一段文本,该文本就会立即被新的 PRIMARY 选择替换。PRIMARY 选择可以通过按鼠标中键或 Shift+Insert
在 xterm 中粘贴。
CLIPBOARD 选择用于显式复制/粘贴命令,例如通过快捷键 Ctrl+c
、Ctrl+x
或 Ctrl+v
。
xterm 允许用户使用 #VT 选项菜单上的 选择到剪贴板
或使用 XTerm.vt100.selectToClipboard
资源在 PRIMARY 或 CLIPBOARD 之间切换。
PRIMARY 和 CLIPBOARD
使用上述设置,您可以选择是否要使用 PRIMARY 或 CLIPBOARD,但您也可以对其进行破解以将选择添加到两者。只需覆盖释放鼠标左键的 #按键绑定
<Btn1Up>: select-end(PRIMARY, CLIPBOARD, CUT_BUFFER0)
您可以添加类似于其他终端复制/粘贴行为(例如 gnome 终端)的 按键绑定
Ctrl Shift <Key>C: copy-selection(CLIPBOARD) \n\ Ctrl Shift <Key>V: insert-selection(CLIPBOARD)
选择文本
新用户通常会发现可以使用鼠标左键“单击并拖动”来选择文本。双击将选择一个单词,其中单词定义为连续的字母字符加上下划线,或基本正则表达式 (BRE) [A-Za-z_]
。三击选择一行,其中“制表符”字符通常复制为多个“空格”字符。
另一种选择文本的方式,在复制多个全屏时尤其有用,是
- 在预期选择的开头单击鼠标左键。
- 滚动到选择的结尾可见的位置。
- 在选择的结尾处单击鼠标右键。
- 您不必立即精确地单击鼠标右键 – 可以使用鼠标右键单击来扩展或缩短任何突出显示的选择。
您可以通过在 xterm 窗口内的任何位置单击鼠标左键一次来清除任何选定的文本。
当基于字符的应用程序在 xterm 内运行时,允许它接收鼠标事件。如果程序无法与 X11 剪贴板通信,则可能会出现问题。为了将这些事件传递到底层 xterm,它们必须伴随 Shift
键。例如,在 links(不是 xlinks -g
)中,可以鼠标单击 URL 和菜单项,但不能使用中间按钮选择或粘贴。要进行复制粘贴,请按 Shift
键,然后执行鼠标单击(该键只需在单击期间按下,因此在拖动鼠标以选择文本块等时无需按住它)。
颜色
xterm 默认为白色背景上的黑色文本,即前景色。可以通过设置资源来反转前景色和背景色
XTerm.vt100.reverseVideo: true
或者,您可以直接使用资源更改前景色和背景色(以及前十六种终端颜色)
XTerm.vt100.foreground: white XTerm.vt100.background: black XTerm.vt100.color0: rgb:28/28/28 ! ... XTerm.vt100.color15: rgb:e4/e4/e4
某些颜色可以通过分配的名称指定。如果安装了 emacs 或 vim,您可以检查 /usr/share/emacs/*/etc/rgb.txt
或 /usr/share/vim/*/rgb.txt
以查看颜色名称及其十进制 RGB 值的列表。颜色也可以使用十六进制 RGB 值指定,格式为 rgb:RR/GG/BB
,或较旧且不鼓励使用的语法 #RRGGBB
。
颜色 PapayaWhip
与 rgb:ff/ef/d5
相同,也与 #ffefd5
相同。
可以在论坛主题 终端颜色方案截图 中查看许多颜色方案建议。
*foreground: rgb:b2/b2/b2 *background: rgb:08/08/08上面的示例为所有使用这些资源的 Xlib 应用程序(xclock、xfontsel 等)设置了前景色和背景色值。这是一种实现统一颜色方案的简单易行的方法。
字体
默认字体
xterm 的默认字体是由 X 逻辑字体描述 别名 fixed
命名的位图字体,通常解析为
-misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-?
此字体也别名为 6x13
,对 Unicode 字形的覆盖范围非常广泛。默认的“TrueType”字体是由名称 mono
匹配的 14 磅字体。可以使用以下命令找到将使用的 FreeType 字体
$ fc-match mono
字体可以在您的资源中指定,具体取决于字体是否为 TrueType
XTerm.vt100.faceName: Liberation Mono:size=10:antialias=false XTerm.vt100.font: 7x13
要进行测试,您还可以在命令行上设置字体:-fa
用于 faceName
,-fn
用于 font
。如果您设置了两种字体,则可以通过从 #VT 字体菜单切换 TrueType 字体
来在两者之间切换。您还可以使用以下资源选择默认字体
! start with TrueType fonts disabled XTerm.vt100.renderFont: false
粗体和下划线字体
当在 xterm 中使用 XLFD 名称时,斜体字体显示为带下划线的字符。TrueType 字体应使用倾斜字体。
如果您未在命令行 -fb
或通过 XTerm.vt100.boldFont
资源指定粗体字体,则 xterm 将尝试查找与普通字体匹配的粗体字体。如果找不到匹配的字体,则将通过“重叠打印”普通字体来创建粗体字体。
CJK 字体
许多字体不包含双倍宽度中文、日文和韩文的字形。如果您经常使用这些语言,则 urxvt 等其他终端模拟器可能更适合。
在 xterm 中将位图 XLFD 字体与 CJK 一起使用有很多陷阱。使用 TrueType 字体进行 CJK 显示要容易得多,使用 faceNameDoublesize
资源。此示例使用 DejaVu Sans Mono 作为普通字体,文泉驿点阵宋体 作为双倍宽度字体
XTerm.vt100.faceName: DejaVu Sans Mono:style=Book:antialias=false XTerm.vt100.faceNameDoublesize: WenQuanYi WenQuanYi Bitmap Song XTerm.vt100.faceSize: 8
技巧与诀窍
自动透明
安装 transset 软件包,例如 transset-dfAUR 或 xorg-transsetAUR 和 复合窗口管理器,例如 Xcompmgr。然后将以下行添加到您的 ~/.bashrc
[ -n "$XTERM_VERSION" ] && transset-df --id "$WINDOWID" >/dev/null
现在,每次您在 xterm 中启动 shell 并且复合管理器正在运行时,xterm 窗口都将是透明的。transset-df
前面的测试使其在未定义 XTERM_VERSION
时不会执行。请注意,如果您以这种方式启动 shell 以外的程序,您的终端将不会透明。如果您需要此功能,则可能可以解决此问题。
另请参阅 按应用程序透明。
启用响铃紧急提示
要使响铃字符通知窗口管理器紧急性,请设置
XTerm.vt100.bellIsUrgent: true
字体技巧
使用颜色代替粗体和斜体
当使用小字体大小时,粗体或斜体字符可能难以阅读。一种解决方案是关闭粗体和下划线或斜体,而改用颜色。此示例正是这样做的
! disable bold font faces, instead make text light blue. XTerm.vt100.colorBDMode: true XTerm.vt100.colorBD: rgb:82/a4/d3 ! disable underlined text, instead make it white. XTerm.vt100.colorULMode: true XTerm.vt100.colorUL: rgb:e4/e4/e4 ! similarly use colorIT for italics
有关格式信息,请参阅 #颜色。
调整行距
文本行有时可能太靠近,或者它们可能显得间隔太宽。例如,使用DejaVu Sans Mono,低位下划线字形可能会与 CJK 字形或下方行中的光标块碰撞。行距(排版人员称为行距)可以使用以下资源进行调整,例如,要加宽间距
XTerm.vt100.scaleHeight: 1.01
有效值范围为 0.9
到 1.5
,其中 1.0
为默认值。
Tek 4014 演示
如果您安装了 plotutils,则可以使用 xterm 的 Tektronix 4014 仿真来查看 plotutils 软件包的一些测试文件。从 #VT 选项菜单 菜单项 切换到 Tek 模式
打开 Tek 窗口,或使用以下命令启动新的 xterm 实例
$ xterm -t -tn tek4014
如果 PS1 提示符出现,它将无法正确呈现。在新窗口中,输入命令,
cat /usr/share/tek2plot/dmerc.tek
世界地图将出现在 Tek 窗口中。您还可以查看来自同一目录的其他 *.tek
文件。要关闭 Tek 窗口,可以使用 xterm 菜单。
防止 X11 输入监听
从 #主选项菜单 激活 安全键盘 模式可能很不方便。您可以改为使用 #按键绑定 调用 secure()
动作
Ctrl Alt <Key>S: secure()
故障排除
滚动时闪烁
使用 ABS 重建 xterm 并包含 --enable-double-buffer
标志
./configure --prefix=/usr \ ... --with-utempter \ --enable-double-buffer
有关详细信息,请参阅 Xterm 修改。
配置未应用
某些应用程序(例如 i3)调用 uxterm
包装器而不是 xterm
。可以通过为 uxterm
添加相同的配置来解决此问题,例如
UXTerm.vt100.reverseVideo: true
如果您希望配置文件中没有重复条目,则可以使用通配符匹配
*.vt100.reverseVideo: true
如果您在更改字体大小方面遇到问题,请安装 xorg-mkfontscale 软件包。