如何在 X 终端中配置双击行为?

如何在 X 终端中配置双击行为?

在不同的 Unix/Linux 系统下,我观察到 X 终端应用程序(例如 xterm)中的双击行为不同。

有时,双击会选择左右所有内容,直到下一个非字母字符(例如,选择光标下的单词)。

有时,直到选择下一个空白/结束之前的所有内容(例如,选择光标下的完整路径)。

如何在 xterm 中配置双击行为(因为它在大多数系统上都可用)?

目前,我发现第二种模式对于大多数用例来说更方便。

答案1

你用 X 资源来做到这一点。我有一个文件 ,.Xresources其中包含这些与 xterm 相关的资源:

XTerm*VT100.cutNewLine: false
XTerm*VT100.cutToBeginningOfLine: false
XTerm*VT100.charClass: 33:48,35:48,37:48,42:48,45-47:48,64:48,95:48,126:48

在我的.xinitrc文件中,有一些合并这些资源的行:

if [ -f $userresources ]; then
    /usr/X11/bin/xrdb -merge $userresources
fi

这些行使 xterm 双击和三次单击执行我喜欢的操作:

双击认为“单词”包括斜杠 (/)、点 (.)、星号 (*) 和一些其他非字母数字字符。这就是“charClass”资源。我必须对 charClass 进行一些繁琐的摆弄才能让它做我想做的事情。这主要允许您双击 URL 和完全或部分限定的路径来突出显示它们。

另外两行使从鼠标下的单词开始三次单击,并转到该行的末尾,但不包含任何换行符。这样,您可以三次单击刚刚执行的命令,将其粘贴到另一个窗口中,并且由于它没有换行符,因此您可以在另一个窗口中运行之前对其进行编辑。

Arch Wiki 有一个关于 X 资源的文章,包括有关 xterm 资源的部分,但这些 xterm 资源并不完整。

答案2

xterm有几个与双击和三次单击进行选择相关的资源设置(手册页列出了所有相关资源):

cutNewline(班级CutNewline)
如果为“false”,则三次单击以选择一行不包括新队在线的末尾。如果“真”,则新队被选中。默认值为“true”。

cutToBeginningOfLine(班级CutToBeginningOfLine)
如果为“false”,则三次单击以选择一行仅从当前单词向前选择。如果为“true”,则选择整行。默认值为“true”。

on2Clicks(On2Clicks 类)
on3Clicks(On3Clicks 类)
指定响应多次鼠标单击的选择行为。单击鼠标始终被解释为如中所述选择功能部分(参见指针的使用)。多次鼠标单击(使用激活选择启动操作的按钮)将根据 on2Clicks 等的资源值进行解释。资源值可以是以下之一:

word
选择由以下确定的“单词”字符类资源。请参阅字符类部分。

line
选择一条线(计算换行)。

group
选择一组相邻的行(包括换行)。选择停止在空白行上,并且不会超出当前页。

page
选择所有可见的行,即页面。

all
选择所有行,即包括已保存的行。

regex
选择由资源值中跟随的正则表达式确定的“单词”。

none
没有选择操作与该资源关联。 Xterm 将其解释为列表的结尾。例如,您可以通过将 on3Clicks 设置为“none”来使用它来禁用三次(或更高)点击。

默认值on2Clickson3Clicks“单词”“线”, 分别。没有默认值on4Clicks 或者on5Clicks,使那些不活跃。启动时,xterm 确定最大点击次数onXClicks 设置的资源值。

相关内容