我有一个 AutoHotKey 脚本,可以将缩写扩展为完整的单词或短语,但今天我遇到了一个问题。我想将其添加org
为“organization”的热字符串,但意识到在输入网页时,wikipedia.org
它会显示wikipedia.organization
。我的想法是添加一行,例如
::.org:: return
因此,如果我正在编写 .org 地址,它会退出脚本,但 org 本身仍然可以工作。但是,上述尝试不起作用(仍然输出“organization”)。我猜是因为它.是 AHK 代码的一部分,所以它没有将其视为热字符串的一部分。我以为我可以通过输入普通转义字符`(反引号)来转义它,但这也不起作用。
搜索 AHK 文档没有找到任何有用的信息,主要是因为“点”和“句号”都指标点符号以外的主题,因此不是一个有用的搜索词。
有什么方法可以让它工作吗?
答案1
为什么不完全避免冲突,让所有热字符串都以不常见的字符开头呢?我使用 nc某物或 kb某物,取决于它是哪个“家族”*。
故意使用在英语中永远不会成为单词开头的字母。
你甚至可以使用 §某物等等,但是像 $ 这样的常见符号不起作用。
即使像“k”这样的单个字母代表“键盘”,也能为您kcom
提供一个简单的结构。[我的 nc 代表“notecard”,即以前复制粘贴的信息转储,kb 代表“键盘”。]
*不过,说实话,我大部分时间并不用它来扩展单个单词,因此即使添加两个字符,我仍然节省了相当多的打字时间。
答案2
我自己没能让它工作,但也许你可以使用其中一个正则表达式热字符串库(例如RegEx热字符串或者RegEx 动态热字符串) 仅匹配org
而不匹配.org
。
正则表达式将会是这样的^(?!\.)org
。
答案3
搞清楚了。显然.是 AHK 的“结束字符”之一,就像Space或Enter(表示热字符串结束并触发相应响应的字符)。显然,这意味着写入wikipedia.org
没有触发.org
应该退出脚本的部分,因为它将其视为 2 个输入,wikipedia
和org
,从而触发 的替换org
。解决方案如下:
#Hotstring B0
:?:.org::
return
#Hotstring B
据我理解,该:?:
符号表示热字符串可以作为另一个单词的一部分出现,从而使其能够将 视为和.的一部分,在这种情况下, 的全部会触发脚本的退出。/包装器可防止它在退出前退格字符。此代码需要位于脚本中其他热字符串的上方,以便该语句可以在其他热字符串执行之前退出脚本。wikipedia
org
.org
#Hotstring B0
#Hotstring B
.org
return
org