在不同的 Unix/Linux 系统下,我观察到 X 终端应用程序(例如 xterm)中的不同双击行为。
有时双击会左右选择所有内容,直到下一个非字母字符(例如,它选择光标下的单词)。
有时直到下一个空白/eol 之前的所有内容都被选中(例如,光标下的完整路径被选中)。
我如何配置双击行为 - 比如 - 在 xterm 中(因为它在大多数系统上可用)?
目前,我发现对于大多数用例来说,第二种模式更方便。
Bru*_*ger 25
你用 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
Run Code Online (Sandbox Code Playgroud)
在我的.xinitrc文件中,我有一些合并这些资源的行:
if [ -f $userresources ]; then
/usr/X11/bin/xrdb -merge $userresources
fi
Run Code Online (Sandbox Code Playgroud)
这些行使 xterm 双击和三次单击执行我喜欢的操作:
双击认为“单词”包括斜线 (/)、点 (.)、星号 (*) 和其他一些非字母数字字符。那是“charClass”资源。我不得不对那个 charClass 做一些乏味的摆弄才能让它做我想做的事。这主要允许您双击 URL 和完全或部分限定的路径以突出显示它们。
另外两行从鼠标下的单词开始三击,一直到行尾,但不包括任何换行符。这样,您可以三次单击您刚刚执行的命令,将其粘贴到另一个窗口中,因为它没有换行符,您可以在另一个窗口中运行它之前对其进行编辑。
Arch Wiki 有一篇关于 X 资源的文章,包括一个关于 xterm 资源的部分,但这些 xterm 资源并不完整。
xterm 有几个与双击和三次单击选择相关的资源设置(手册页列出了所有相关资源):
cutNewline(classCutNewline)
如果为“false”,则三次单击以选择一行不包括行尾的换行符。如果为“true”,则选择换行符。默认值为“真”。
cutToBeginningOfLine(classCutToBeginningOfLine)
如果为“false”,则三次单击以选择一行只会从当前单词向前选择。如果为“true”,则选择整行。默认值为“真”。
on2Clicks(On2Clicks 类)
on3Clicks(On3Clicks 类)
指定响应多次鼠标点击的选择行为。鼠标单击始终按照选择函数部分中的描述进行解释(请参阅指针用法)。根据 on2Clicks 等的资源值解释多次鼠标点击(使用激活选择开始操作的按钮)。资源值可以是以下之一:
word
选择由charClass资源确定的“单词” 。请参阅字符类部分。
line
选择一条线(计数环绕)。
group
选择一组相邻的行(计数环绕)。选择在一个空行处停止,并且不会延伸到当前页面之外。
page
选择所有可见的行,即页面。
all
选择所有行,即包括保存的行。
regex
选择由资源值中跟随的正则表达式确定的“单词”。
none
没有选择操作与此资源相关联。Xterm 将其解释为列表的结尾。例如,您可以通过将 on3Clicks 设置为“none”来禁用三次(及更高)点击。为默认值
on2Clicks,并on3Clicks有“字”和 “线”,分别。on4Clicks或没有默认值on5Clicks,使它们处于非活动状态。启动时,xterm 根据onXClicks设置的资源值确定最大点击次数。