在不同的 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”来使用它来禁用三次(或更高)点击。默认值
on2Clicks
和on3Clicks
是“单词”和 “线”, 分别。没有默认值on4Clicks
或者on5Clicks
,使那些不活跃。启动时,xterm 确定最大点击次数onXClicks
设置的资源值。