You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

求助:如何让AutoHotKey中的引号实现与括号一致的自动补全逻辑

求助:如何让AutoHotKey中的引号实现与括号一致的自动补全逻辑

嘿,太懂你这个烦恼了!AHK里处理引号热键确实是个小坑,谁让引号本身是脚本里用来包裹字符串的特殊字符呢,直接按括号的写法肯定会出问题。

先给你拆解下之前的问题:

  • 你第一次写的:*?:""::,因为AHK会把引号当成字符串边界,这个热键定义其实有语法问题,导致只有连续按两次引号才触发,但单次按没反应;
  • 改成:*?:"::后,又变成按一次引号就直接触发补全,完全不符合你想要的“单引号输出单引号,双引号触发补全”的逻辑。

下面给你一个能完美匹配括号逻辑的解决方案,核心就是用反引号`转义引号,让AHK正确识别热键的触发条件:

{ ; Automatic Quotes
    ; 触发条件:连续输入两个引号,和你括号的逻辑对齐
    :*?:``"``"::
        SendInput, {Raw}""
        Send {Space}
        SendInput, {Left 2}
    return
}

简单解释下这个代码:

  1. "`转义每个引号,让AHK把```"`识别为一个引号字符,这样`::"``"::`就代表“连续输入两个引号”的触发条件;
  2. 后面的Send逻辑和你括号的写法完全一致:输出一对引号,加空格,再把光标移回两个引号中间;
  3. 至于单次按引号的情况,因为这个热键只触发连续两次的输入,单次按的时候会直接输出单个引号,完全符合你的需求。

你可以直接把这段代码替换掉之前的引号补全逻辑,测试一下:

  • 按一次":只输出一个"
  • 快速按两次":自动生成"" (带空格),光标停在两个引号中间,和你括号的使用体验完全一样。

备注:内容来源于stack exchange,提问作者Michel

火山引擎 最新活动