You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求修正AHK脚本:实现F4+5复制非相邻单词并合并至剪贴板

AHK多单词复制合并脚本修正

原脚本存在的问题

  • 热键语法错误:~F4 Down & 5不是合法的AutoHotkey热键定义方式,AHK中组合键需使用修饰键 & 普通键的格式,不能直接在修饰键后加Down。
  • 字符串拼接无分隔符:原代码合并单词时直接拼接,会导致单词连在一起(如"hello"+"world"变成"helloworld"),需要添加空格分隔。
  • 全局变量作用域问题:在AHK v1中,热键标签内的变量默认是局部变量,即使脚本开头声明了global,也需要在热键内部再次声明global才能访问全局变量。
  • 最终输出不符合需求:原脚本用MsgBox展示结果,需要改为将合并后的字符串写入剪贴板。

修正后的完整脚本

#Persistent  ; 保持脚本在后台运行,不随命令执行完毕退出
global MyString := ""  ; 初始化全局变量,用于存储合并后的单词

; 定义组合键:按住F4时按5,复制选中的单词并合并
F4 & 5::
    global MyString  ; 声明使用全局变量
    clipboard := ""  ; 清空剪贴板
    Sleep 100  ; 等待剪贴板清空完成
    Send ^c  ; 发送复制快捷键
    ClipWait, 1  ; 等待剪贴板获取内容,超时1秒
    if (ErrorLevel = 0) {  ; 确认复制成功
        trimmedWord := Trim(clipboard)  ; 去除单词前后的空格
        if (trimmedWord != "") {  ; 避免空内容被添加
            if (MyString != "") {
                MyString .= " "  ; 如果已有内容,先加空格再拼接
            }
            MyString .= trimmedWord
        }
    }
return

; 释放F4时,将合并后的字符串写入剪贴板并重置变量
~F4 Up::
    global MyString
    if (MyString != "") {
        clipboard := MyString  ; 将合并结果写入剪贴板
        ClipWait, 1  ; 确认剪贴板写入完成
        ToolTip, 已复制合并内容到剪贴板  ; 提示操作完成(可选)
        SetTimer, ToolTip, -1500  ; 1.5秒后关闭提示
    }
    MyString := ""  ; 重置全局变量,为下一次合并做准备
return

脚本说明

  • #Persistent:确保脚本一直运行在后台,不会因为没有热键触发就退出。
  • 组合键F4 & 5:正确定义了"按住F4按5"的触发方式,符合操作逻辑。
  • 字符串拼接逻辑:添加了空格分隔,同时跳过空内容,避免无效字符干扰。
  • 最终处理:释放F4时将合并后的字符串写入剪贴板,并用ToolTip给出简洁提示(可根据需求删除)。
  • 变量作用域:在每个热键标签内声明global MyString,确保能正确访问和修改全局变量。

内容的提问来源于stack exchange,提问作者Pingui

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 22:16:03