用AutoHotkey实现【小狼毫】一键添加「选中内容」到词库并重新部署

换了win10后,极点就不好用了,看上了自定义更强的小狼毫,太难掌控了,只能先用点皮毛。

目前的理解,感觉很有特色的就是能根据候选项自定义提示内容,并且还能用Ctrl-Shift-Enter上屏提示内容

比如我自定义了个词组indirect,并设置了其提示内容为Excel公式:indirect("$A$2:$E$"&COUNTA($A:$A))

当我想输入公式时,先按移到第2条,再按Ctrl-Shift-Enter即可(不知道能否设置为Ctrl-Shift-2直接上屏)

 

回到正题:五笔词库需慢慢完善,所以用AutoHotkey写了脚本一键添加选中内容。

本人把小狼毫词库分为:

  • 单字:常用字,可能会添加用到的生僻字,因为临时生僻字暂时还不会
  • 自带词组(不动)
  • 用户词组(大部分修改的就是这个文件)
  • 英语:(常用英语和【U盘】这样的词组)

在主dict.yaml里通过以下设置可导入wubi86.ci.dict.yaml等3个词库文件

import_tables: #导入的词典只导入词汇,会忽略YAML定义内容
  - wubi86.ci
  - wubi86.eng
  - wubi86.user

下面放上ahk(v2)代码:

#SingleInstance Force
;添加选中内容到词库
F9::
add2Rime()
return

;添加选中单词到词库
;我词库分为单字fpSingle(常用字,可能会添加生僻字)、自带词组(不动)、用户词组fpUser(大部分修改)、英语fpEng(常用英语和【U盘】这样的词组)
add2Rime()
{
    ;用户目录 dirUser
    if !DirExist(dirUser := RegRead("HKEY_CURRENT_USER\Software\Rime\Weasel", "RimeUserDir"))
    {
        msgbox("用户目录不存在")
        return
    }
    fpSingle := dirUser . "\wubi86.hy.dict.yaml" ;单字词库
    fpUser := dirUser . "\wubi86.user.dict.yaml" ;用户词库
    fpEng := dirUser . "\wubi86.eng.dict.yaml" ;英语词库
    ;软件安装目录 dirSoft(里面有 WeaselServer.exe 和 WeaselDeployer.exe)
    if !DirExist(dirSoft := RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Rime\Weasel", "WeaselRoot"))
    {
        msgbox("软件安装目录不存在")
        return
    }
;复制选中内容 clipSave :
= ClipboardAll clipboard := "" send("{ctrl down}c{ctrl up}") if !ClipWait(0.5) { msgbox("没复制到内容",,262144) clipboard := clipSave return }
;过滤无效内容
if !strlen(word := trim(clipboard, "`t`r`n ")) ;空白内容 return if (word ~= "(\w\W|\W\w)") ;【U盘】这种词不处理 return ;开始处理 if (word ~= "^\w+$" && FileExist(fpEng)) ;全字母(【U盘】这种手动添加) FileAppend(format("{1}`t{2}`r`n", word,StrLower(substr(word,1,4))), fpEng, "utf-8") else ;中文 { bm := this.getCode(word) ;若有问题 getCode 会直接退出 if (strlen(word) > 1) ;多字 { if !FileExist(fpUser) { msgbox(format("词库不存在`n{1}", fpUser)) return } if (FileRead(fpUser, "utf-8") ~= "`n" . word . "`t") { msgbox("已存在词组") return } FileAppend(format("{1}`t{2}`t9`r`n", word,bm), fpUser, "utf-8") } else { if !FileExist(fpSingle) { msgbox(format("单字词库不存在`n{1}", fpSingle)) return } if (FileRead(fpSingle, "utf-8") ~= "`n" . word . "`t") { msgbox("已存在单字") return } FileAppend(format("{1}`t{2}`r`n", word,bm), fpSingle, "utf-8") } } if !ProcessExist("WeaselServer.exe") run(dirSoft . "\WeaselServer.exe") run(format("{1}\WeaselDeployer.exe /deploy", dirSoft)) }

猜你喜欢

转载自www.cnblogs.com/hyaray/p/12578430.html