在不同的Unix / Linux系统下,我在X终端应用程序(例如xterm)中观察到了不同的双击行为。
有时,双击会左右选择所有内容,直到下一个非字母字符为止(例如,它选择了光标下的单词)。
有时,直到选择下一个空格/ eol之前的所有内容(例如,选择光标下方的完整路径)。
我如何在xterm中配置双击行为(例如,因为大多数系统上都可以使用)?
目前,我发现第二模式对于大多数用例而言更为方便。
在不同的Unix / Linux系统下,我在X终端应用程序(例如xterm)中观察到了不同的双击行为。
有时,双击会左右选择所有内容,直到下一个非字母字符为止(例如,它选择了光标下的单词)。
有时,直到选择下一个空格/ eol之前的所有内容(例如,选择光标下方的完整路径)。
我如何在xterm中配置双击行为(例如,因为大多数系统上都可以使用)?
目前,我发现第二模式对于大多数用例而言更为方便。
Answers:
您需要使用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以及完全限定或部分限定的路径以突出显示它们。
其他两行从鼠标下方的单词开始三次单击,然后转到该行的末尾,但不包括任何新行。这样,您可以三次单击刚刚执行的命令,将其粘贴到另一个窗口中,并且由于它没有换行符,因此您可以在另一个窗口中运行它之前对其进行编辑。
XTerm*VT100.charClass: 0-32:0,33-65535:1
。然后双击将认为“单词”是除空格(和控制字符)之外的任何符号序列。
cutNewLine
-> cutNewline
。也许是在较新版本中引入的。
onNClicks: regex
似乎至少更具可读性。
xterm
具有双击选择相关的几种资源设置(手册页列出了所有相关资源):
cutNewline
(类CutNewline
)
如果为“ false”,则三次单击以选择一行,但该行的末尾不包含换行符。如果为“ true”,则选择换行符。默认值为“ true”。
cutToBeginningOfLine
(类CutToBeginningOfLine
)
如果为“ false”,则三次单击以选择一行仅从当前单词向前选择。如果为“ true”,则选择整行。默认值为“ true”。
on2Clicks
(类On2Clicks)
on3Clicks
(类On3Clicks)
指定响应多个鼠标单击的选择行为。单击鼠标总是按照“ 选择功能”部分中的说明进行解释(请参阅POINTER USAGE)。根据on2Clicks等的资源值来解释多次单击鼠标(使用激活选择开始操作的按钮)。资源值可以是以下之一:
word
选择一个由charClass资源确定的“单词” 。请参阅“ 字符类”部分。
line
选择一行(计数换行)。
group
选择一组相邻的线(计数环绕)。选择停止在空白行上,并且不会扩展到当前页面之外。
page
选择所有可见线,即页面。
all
选择所有行,即包括已保存的行。
regex
选择一个由资源值后面的正则表达式确定的“单词”。
none
没有选择动作与此资源相关联。Xterm将其解释为列表的末尾。例如,您可以通过将on3Clicks设置为“无”来使用它来禁用三次(或更高)的点击。为默认值
on2Clicks
,并on3Clicks
有“字”和 “线”,分别。on4Clicks
或的默认值on5Clicks
无效,因此这些值均处于非活动状态。启动时,xterm 通过设置的onXClicks
资源值确定最大点击次数。
vim
含义xterm*on3Clicks: regex [^ \n]+
),4次单击进行复制从外壳命令(从当前字到行的结尾,xterm*on4Clicks: line
,xterm*cutNewline: false
,xterm*cutToBeginningOfLine: false
),5点击整行(xterm*on5Clicks: regex [^\n]+
)。