Dvel’s Blog

Less is More.

Rime 全拼双拼混输

有朋友提了个 issue 后发现的,Rime 实现全拼双拼混输很简单,只要在拼写运算 speller/algebra 下把 xform 替换为 derive 就可以了。 非常适合初学双拼时使用。 原理 例如小鹤双拼的 z 键: - xform/(.)ou$/$1Ⓩ/ - xlit/Ⓩ/z/ ou 最终转为了韵母的 z,输入 zz 就可以得到「走 zou」了,xform(变形)不保留原型,(.)ou 就没了,改为保留原型的 abbrev(派生)就可以同时支持全拼和双拼了。(官方文档 - 拼写运算的运算子) 解决副作用 显示效果 为了全拼双拼混输的显示效果,也要清空 translator/preedit_format 中对双拼转全拼的转换。 ong 音的冲突 如果词库中有 唵嘛呢叭咪吽 ong ma ni bei mei hong,其中的这个 ong 与小鹤的默认规则冲突,修改一下就好了: - - derive/i?ong$/Ⓢ/ + - derive/(.)i?ong$/$1Ⓢ/ 全拼与双拼的冲突 例如全拼的 jing(静)与小鹤双拼的 ji’ng(技能),Rime 默认 jing 永远排在 ji’ng 前面,这不太符合双拼为主的情况。 正好可以用长词优先 long_word_filter.lua 将「技能」提到「静」的前面。 示例 雾凇拼音 - 小鹤双拼的补丁示例: # double_pinyin_flypy.custom.yaml patch: # 在 engine/filters 插入长词优先的 Lua engine/filters: - lua_filter@corrector - reverse_lookup_filter@radical_reverse_lookup - lua_filter@search@radical_pinyin - lua_filter@autocap_filter - lua_filter@pin_cand_filter - lua_filter@long_word_filter # 增加长词优先 - simplifier@emoji - simplifier@traditionalize - lua_filter@reduce_english_filter - uniquifier # 长词优先设置为提升 10 个词到第 1 个位置 long_word_filter: count: 10 idx: 1 # 双拼不转换为全拼编码 translator/preedit_format: [] # xform 变形改为 derive 派生 speller/algebra: - derive/^([jqxy])u$/$1v/ - derive/^([aoe])([ioun])$/$1$1$2/ - derive/^([aoe])(ng)?...

2023-11-20

CHD 油猴脚本:每日签到自动答题

用 ChatGPT 写一些小脚本真是太方便了。 GPT-4 发布后试了试,还是蛮不错的,代码是 ChatGPT 生成的。 几个来回就可以编写一个能正常使用的油猴脚本: (略,HTML 代码) 在 https://chdbits.co/bakatest.php 有如上内容。 我要为这个网页编写一个油猴脚本。 通过自动获取 ChatGPT 的 API 来解析此问题的答案,供用户参考。 将内容输出到 `#outer > h1` 的下面,同时输出你提取到的问题内容和答案,以便我看看你是否提取正确。 获取错啦。 问题的获取路径是 `#outer > form > table > tbody > tr:nth-child(1) > td` 选项的获取路径是 `#outer > form > table > tbody > tr:nth-child(2) > td` 使用这个 API: ``` curl https://api.openai.com/v1/chat/completions \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer YOUR_API_KEY' \ -d '{ "model": "gpt-3.5-turbo", "messages": [{"role": "user", "content": "Say this is a test!...

2023-03-16

Rime 配置:雾凇拼音

雾凇拼音,功能齐全,词库体验良好,长期更新修订,仓库:iDvel/rime-ice 基本套路 简体 | 全拼 | 双拼 主要功能 melt_eng 英文输入 优化英文输入体验 部件拆字方案 反查、辅码 自整理的 Emoji 以词定字 长词优先 Unicode 数字、人民币大写 日期、时间、星期、农历 常见错音错字提示 置顶候选项 所有标点符号直接上屏,/ 模式改为 v 模式,/ 直接上屏 增加了许多拼音纠错 简体字表、词库 《通用规范汉字表》 华宇野风系统词库 清华大学开源词库 《现代汉语常用词表》 《现代汉语词典》 《同义词词林》 《新华成语大词典》 腾讯词向量 词库修订 校对大量异形词、错别字、错误注音 全词库完成注音 同义多音字注音 方案设计 . ├── default.yaml # 一些全局设置 ├── rime_ice.schema.yaml # 全拼方案 ├── double_pinyin*.yaml # 双拼方案 ├── rime_ice.dict.yaml # 挂载词库 ├── cn_dicts/ # 词库目录 ├── melt_eng.schema.yaml # 英文方案,作为次翻译器挂载到拼音方案 ├── melt_eng.dict.yaml # 挂载词库 ├── en_dicts/ # 词库目录 ├── radical_pinyin....

2023-01-20 · (updated: 2024-02-05)

Hammerspoon 自动切换输入法

在 macOS 中利用 Hammerspoon 自动切换输入法。 因为 Rime 目前的中英切换不是特别好用: 不能 Shift 全局切换中英:是否有可能将中英文输入状态作全局管理? #145 Rime 的自动切换仍然会记住上一次的状态:请问如何设置打开某app始终切换到英文模式? #164 菜单栏不能显示中英状态 Rime 全局状态功能的进展:global input session, state shared by all client apps #294 我希望的是:无论当前是什么输入法,切换到 iTerm,就是英文,离开 iTerm,回到我原先的输入法。 类似于 Alfred 目前的功能(高级设置中的 Force Keyboard 设置为 ABC)。 我在 Typora 写中文,呼出 Alfred,变成英文输入法,用完了回到 Typora,变回中文输入法。 代码参考于:ibreathebsb/hammerspoon自动切换输入法.lua 使用方法:放到 ~/.hammerspoon/init.lua 重新部署就可以了。 可以用 Cmd + Ctrl + . 来查看当前窗口的 name 或 path; 可以在 Hammerspoon 的控制台输入 hs.keycodes.currentSourceID() 来查看当前输入法的 ID。 做的修改: 以 App name 作为参数,看起来舒服点 退出指定的程序后,恢复到原先的输入法 -- 当选中某窗口按下 ctrl+command+....

2023-01-19

修复 Hugo 本地图片的累计布局偏移(CLS)问题

布局偏移 累计布局偏移 Cumulative Layout Shift(CLS)是一项 Web 指标。 布局偏移如图所示,元素突然变化的高度影响了用户交互体验: 一般给图片一个高度就可以了,但最好是能自动化,而不是手写。 看到了这篇博文 累计布局偏移修复方案改进 —— 自动生成图片宽高,不过他是从腾讯云对象存储获取的图片宽高,而我都将图片存储在了 Hugo 配置目录的 static/img/ 文件夹。 我平时在 Markdown 里都是直接写的 path: ![](/img/example.webp) 解决本地图片的偏移问题 参考 How to prevent CLS in Hugo,利用 Hugo 的 Render Hooks 功能重新渲染图片相关代码,获取图片的宽高,在 <img> 标签里加上 width 和 height 属性。 不知道为什么照他的办法,在配置中加入了 mounts 相关属性,仍然不起作用,不太会前端和 Hugo,摸索着改了改。 创建 layouts/_default/_markup/render-image.html 文件: <p> {{ if hasPrefix .Destination "/img" }} {{ $img := os.ReadFile (path.Join "/static" .Destination) | resources.FromString .Destination }} {{ if ne $img.MediaType.SubType "svg" }} <img loading="lazy" src="{{ ....

2023-01-08

macOS 利用 Karabiner 修改 Emacs 键位为 Vim 键位

上一篇博文用修改 ~/Library/KeyBindings/DefaultKeyBinding.dict 的方法修改按键绑定,但很多地方依然无法响应新的键位设置,体验比较割裂,于是换到 Karabiner。 实现方式的区别 DefaultKeyBinding 在 DefaultKeyBinding.dict 中,用 Ctrl+h 来向左移动,macOS 是通过这样实现的: "^h" = "moveBackward:"; 如果想继续实现 Shift+left(向左移动时选中文本)这个功能,还得需要调用另一个方法: "^H" = "moveBackwardAndModifySelection:"; 苹果原生的方式是直接作用的,比如删除到行首(Ctrl + u)就等于一步操作:直接删除到行首。 Karabiner Karabiner 要实现删除到行首,它是先通过 Command + Shift + left 来选中光标之前所有的文本,再按下删除键,这样的方式来实现的。 影响可能是有的,比如终端上无法响应,如果自己定义了一个 Ctrl + u,反而还覆盖了其本身正常的功能,不过可以屏蔽掉不需要的 App。 另外无须单独实现带选区的那种,因为 Ctrl+h 已经被映射为左箭头了,自己再加上 Shift 就可以了。 Karabiner 还可以实现更多的功能,比如作者直接写了个全局 Vim 映射,还可以启动 App,设置只限定特定设备、特定 App 等等,功能着实强大,还开源免费。 简单使用 Simple Modifications,可以简单映射,比如 CapsLock → Control Complex Modifications,可以引用别人已经写好了的规则。 或者打开 ~/.config/karabiner/assets/complex_modifications 增加自己的规则。 Devices,选择要应用到的设备,比如内置键盘。 Profiles,定义多套方案,按需选择。 官方文档:https://karabiner-elements.pqrs.org/docs/ 社区分享:https://ke-complex-modifications.pqrs.org/ 建议查看官方文档熟悉一点小例子,然后下载别人实现类似的功能的 JSON 代码来参考。 文档最下面有个 External JSON generators,比如用这个 Karabiner Complex Modification 可以自动生成 JSON,不过简单的映射还是直接写 JSON 方便。...

2022-11-25

macOS 修改 Emacs 键位为 Vim 键位

macOS 默认在文本编辑中使用 pnbf 来进行上下左右,还有一些其他键位,但我习惯使用 Vim 的 hjkl 来移动。 我已经在 Vim 中设置好了,但希望这个键位应用到全局。 通过修改 DefaultKeyBinding.dict 来完成。 但只能适配一般输入框的快捷键,很多编辑器都还是老样子,无法覆盖。 比如 Firefox 的输入框、Alfred 的输入框是可以的,但是很多网页编辑框、终端、代码编辑器、Typora 等等还是老键位。 因为这个方法的不一致性,我已经改用 Karabiner 了。 通过 Karabiner 修改,则会真·强制·全局。 不过还是记录一下这种方法。 下一篇博文:macOS 利用 Karabiner 修改 Emacs 键位为 Vim 键位。 macOS 默认的 Emacs-like 键位 官方支持文档:Mac 键盘快捷键 Control-A:移至行或段落的开头。 Control-E:移至行或段落的末尾。 Control-F:向前移动一个字符。 Control-B:向后移动一个字符。 Control-L:将光标或所选内容置于可见区域中央。 Control-P:上移一行。 Control-N:下移一行。 Control-O:在插入点后新插入一行。 Control-T:将插入点后面的字符与插入点前面的字符交换。 Control-H:删除插入点左边的字符。也可以使用 Delete 键。 Control-D:删除插入点右边的字符。也可以使用 Fn-Delete。 Control-K:删除插入点与行或段落末尾处之间的文本。 键位映射文件 默认的键位设置在: /System/Library/Frameworks/AppKit.framework/Resources/StandardKeyBinding.dict 可以自己增加一个来覆盖默认的:(默认没有 KeyBindings 目录,可以自己创建) ~/Library/KeyBindings/DefaultKeyBinding.dict 查看 StandardKeyBinding.dict 的方法: 可以用 Xcode 打开,选择文件类型为 Property List Binary。...

2022-11-24

Surge 配置

原来一直在用机场订阅自带的配置,这回快到期了想换换,同时在用多家,顺便学习了一下 Surge 配置。 一些教程和指引 Surge 官方中文指引:理解 Surge 原理 Surge 官方手册(英文) Surge 官方手册(汉化) 官方帮助中心 官方讨论区 Surge 配置详解 一些仓库 神机 (进入后点击分支,选择有内容的那个分支) 懒人配置 Dler 懒人配置 Hackl0us 懒人配置 blackmatrix7/ios_rule_script 分流规则、重写写规则及脚本。这个比较全面,一般我找规则就来这里找。 GeoIP2-CN 只包含 CN 的 GeoIP,适合白名单模式。 常见的配置方法 黑名单模式:除了我规定的走代理,剩下统统走直连。 白名单模式:除了我规定的走直连,剩下统统走代理。 我个人是觉得白名单模式比较好,省事儿,搭配一些需要直连的规则和 GEOIP,CN,DIRECT 很方便。 配置思路就是: 把特殊的规则放在最上面。比如 JetBrains 在国内是可以访问的,Steam 下载游戏和 BT 之类的没必要走代理浪费流量。 需要配置开关的,可以单独弄一个类型,比如是测速时是走代理还是直连的 SpeedTest。 接下来是国内的规则集,命中就直连。 还有一个 ChinaMax 规则集,比较大,我没试过。 最后是判断 GeoIP,是 CN 的就直连 规则全部检查完了,FINAL 走代理。 我的配置 [General] loglevel = notify skip-proxy = 127.0.0.1, 192.168.0.0/16, 193.168.0.0/24, 10.0.0.0/8, 172.16.0.0/12, 100.64.0.0/10, localhost, *....

2022-11-17

汉字的混乱

在为自己的 Rime 词库 进行修订时,发现了很多以前不曾了解的汉字规范。 从修订记录里翻出了一些,算是自己的吐槽吧。。。 模棱两可 「滴里耷拉、滴里搭拉、滴哩答拉」→「嘀哩嗒啦」,「啰哩啰唆」→「啰里啰唆」,「劈哩叭啦」→「噼里叭啦」,「嘁哩喀喳」→ 「嘁里咔嚓」。。。 为什么上面这些除了「里」都是口字旁,却不用同样是口字旁的「哩」呢? 「暗淡」「黯淡」。 「呆会」「待会」,表「停留」时,《现汉》未作推荐但有一个「待dāi」的一声读音专门用于这个意思,《现规》推荐使用「呆」。 「标识zhi」「标志」,「标识zhi」一直是「标志」的异形词,但《现汉》6、7 开始有了「标识shi」,《现规》直接推荐使用「标志」。 「勾拳」「钩拳」,Hook 本就是钩子的意思,我站「钩拳」。 「抗不住、抗得住」「扛不住、扛得住」。 「嚎叫」「号叫」「嗥叫」。 「定亲」是「定」,「订婚」是「订」。 各种「词」与各种「辞」。 「贻 X」与「遗 X」。 「杆」与「竿」。 「得意洋洋/洋洋得意」「得意扬扬/扬扬得意」。 「发愤图强」「奋发图强」。 「鱼钩」「渔竿」「钓鱼竿」。 「嘁嘁嚓嚓」→「嘁嘁喳喳」,「嘁哩咔喳」→「嘁里咔嚓」,不同的地方用不同的 cha。。。 「下功夫」「费工夫」。 「悲催」「悲摧」。 「备受」「倍受」。 「比划」「比画」。 「西瓜子」「西瓜籽」。 「鄙人」「敝人」。 「闭塞」「蔽塞」。 「侧足」「厕足」。 「闺中密友」的「闺密」与「闺蜜」。 「激凸」「激突」。 「叫作」「叫做」。 「做出」「作出」,以及各种「做 X」和「作 X」。 「绝不」「决不」。 「谩骂」「漫骂」。 「避邪」「辟邪」。 「泄气」「懈气」。 「佚/轶/逸」+「名/事」。。。 「蒸气」「蒸汽 = 水蒸气」。 「属望」「瞩望」。 「启航」「起航」。 「乐呵」「乐呵呵」「乐乐和和」。 「当啷」与「郎当」。 「作何」「做何」。 「订做」「定做」。 「订制」「定制」。 「实验」「试验」。 「畜生」「牲畜」。 「无名火」「无明火」。 「去除」「祛除」「驱除」。 「碾压」「碾轧」 「阵势」「阵式」 过于细致的拆分 很多字词没有作为异形词,而是分别赋予了不同的意思,或运用在不同的语境下。 校对网还看到一个 校对疑难问题分享搜集。 细致的 cha:「道路分岔」「树木分杈」「头发分叉」「河流分汊」,还有个「裤裆开衩」。😅 「群山曼延」「杂草蔓延」「洪水漫延」。...

2022-08-01

Netflix 中英双语字幕的好办法

使用插件 Language Reactor,目前只支持 Chrome,Firefox 很久了一直处于 coming soon 状态。 相比较其他双语插件,它本身就是个学外语的好插件,有方便的快捷键可以穿梭字幕。 但是双语字幕时有一些问题,就是英文字幕为主会带有很多拟声词之类的,太影响体验了。 而且是英文在上面,中文在下面,和平常使用的字幕反了。 将主字幕设置为中文 在 Language Reactor 设置界面的「翻译语言」设置为英文 「显示音译」设置为「无音译」 这样体验就好多啦:

2022-06-17