Skip to content
fkxxyz edited this page Aug 22, 2020 · 4 revisions

常见问题

以上目录生成自 sed -n '/^## /{s/^## \(.*\)/- [\1](#\1)/g;p}' issues.md

什么是用户资料夹

所有配置都围绕着用户资料夹展开,参考 Rime 中的数据文件分布及作用

修改配置文件时需要注意:

  • 严格遵守 yaml 语法,缩进都是两个空格,不能用 tab 代替,否则配置是无效的
  • 只能有一个 patch: 行,如有相同的项目请合并。

Rime 中的数据文件分布及作用

除程序文件以外,Rime 还包括多种数据文件。 这些数据文件存在于以下位置:

共享资料夹

  • 【中州韵】 /usr/share/rime-data/
  • 【小狼毫】 "安装目录\data"
  • 【鼠须管】 "/Library/Input Methods/Squirrel.app/Contents/SharedSupport/"

用户资料夹

  • 【中州韵】 ~/.config/ibus/rime/ (0.9.1 以下版本为 ~/.ibus/rime/
  • 【小狼毫】 "%APPDATA%\Rime"
  • 【鼠须管】 ~/Library/Rime/

共享资料夹 包含预设输入方案的源文件。 这些文件属于 Rime 所发行软件的一部份,在访问权限控制较严格的系统上对用户是只读的,因此谢绝软件版本更新以外的任何修改—— 一旦用户修改这里的文件,很可能影响后续的软件升级或在升级时丢失数据。

在「部署」操作时,将用到这里的输入方案源文件、并结合用户定制的内容来编译预设输入方案。

用户资料夹 则包含为用户准备的内容,如:

  • 〔全局设定〕 default.yaml
  • 〔发行版设定〕 weasel.yaml
  • 〔预设输入方案副本〕 <方案标识>.schema.yaml
  • ※〔安装信息〕 installation.yaml
  • ※〔用户状态信息〕 user.yaml

编译输入方案所产出的二进制文件:

  • 〔Rime 棱镜〕 <方案标识>.prism.bin
  • 〔Rime 固态词典〕 <词典名>.table.bin
  • 〔Rime 反查词典〕 <词典名>.reverse.bin

记录用户写作习惯的文件:

  • ※〔用户词典〕 <词典名>.userdb/<词典名>.userdb.kct
  • ※〔用户词典快照〕 <词典名>.userdb.txt<词典名>.userdb.kct.snapshot 见于同步文件夹

以及用户自己设定的:

  • ※〔用户对全局设定的定制信息〕 default.custom.yaml
  • ※〔用户对预设输入方案的定制信息〕 <方案标识>.custom.yaml
  • ※〔用户自制输入方案〕及配套的词典源文件

注:以上标有 ※ 号的文件,包含用户资料,您在清理文件时要注意备份!

发布页两个版本的区别

由于 rime 处理词库的原理是提前将词库转换为二进制文件,这个过程被称为部署,当词库较大时,在 windows 或 32 位的 linux 发行版下会部署失败,有人提出过这个问题 放到用户文件夹后切换到这个输入法就没法用了,所以我在发布页提供了两个压缩包,一个包含二进制文件,一个不包含二进制文件,方便不同的选择。

  • clover.schema 不包含二进制文件,复制到新机器上之后需要重新部署。
  • clover.schema-build 包含二进制文件目录(build目录),复制到新机器上之后重新部署的时间大量缩短,能避免部署失败的情况。

由于国内访问 github 较慢,所以我在蓝奏云也上传了一份 https://fkxxyz.lanzous.com/b00zl958j

如何更新

解压到用户资料夹覆盖所有文件,然后重新部署即可,记忆的词库词频不会丢。

候选词个数

修改用户资料夹的 default.custom.yaml ,找到 menu/page_size 字段,如果没有则创建,设置该字段的值即可。例如

patch:
  "menu/page_size": 8
  schema_list:
    - schema: clover

详见 一例、定制每页候选数

模糊音设置

对于模糊音的配置,目前还没有方便的图形界面的配置,如果有需要的话照做吧:

在用户资料夹创建 clover.custom.yaml ,内容为

patch:
  speller/algebra:

    # 模糊音

    # 基础
    - abbrev/^([a-z]).+$/$1/
    - abbrev/^([zcs]h).+$/$1/
    
    # 补全
    - derive/([dtngkhrzcs])o(u|ng)$/$1o/   # o = ou; o = ong
    - derive/ong$/on/      # on = ong
    - derive/^ding$/din/     # din = ding
    
    # 处理 v 和 u
    - derive/^([nl])ue$/$1ve/   # nve = nue; lve = lue
    - derive/^([jqxy])u/$1v/    # v = u; v = u
    
    # 智能纠错
    - derive/ao$/oa/       # oa = ao
    - derive/([iu])a(o|ng?)$/a$1$2/   # aio = iao; aing = iang; aung = uang
    - derive/([aeiou])ng$/$1gn/   # gn = ng
    - derive/un$/uen/    # uen = un
    - derive/ui$/uei/    # uei = ui
    - derive/iu$/iou/    # iou = ui
    - derive/tie$/tei/    # tei = tie
    - derive/i$/ii/      # ii = i  # i 不小心按两下
    - derive/u$/uu/      # ui = u  # u 不小心按两下

然后参考官方推荐的模糊音配置 https://gist.github.com/lotem/2320943

找到你想添加的模糊音,在第三行前面加上即可。

再次强调 yaml 的语法,上面每个 derive 前面都是四个空格,不能用 tab 代替。

如,我想把 en 与 eng 和 in 与 ing 模糊,那么修改后就变成了这样:

patch:
  speller/algebra:

    # 模糊音
    - derive/([ei])n$/$1ng/    # ing = in; eng = en
    - derive/([ei])ng$/$1n/    # in = ing; en = eng

    # 基础
    - abbrev/^([a-z]).+$/$1/
    - abbrev/^([zcs]h).+$/$1/
    
    # 补全
    - derive/([dtngkhrzcs])o(u|ng)$/$1o/   # o = ou; o = ong
    - derive/ong$/on/      # on = ong
    - derive/^ding$/din/     # din = ding
    
    # 处理 v 和 u
    - derive/^([nl])ue$/$1ve/   # nve = nue; lve = lue
    - derive/^([jqxy])u/$1v/    # v = u; v = u
    
    # 智能纠错
    - derive/ao$/oa/       # oa = ao
    - derive/([iu])a(o|ng?)$/a$1$2/   # aio = iao; aing = iang; aung = uang
    - derive/([aeiou])ng$/$1gn/   # gn = ng
    - derive/un$/uen/    # uen = un
    - derive/ui$/uei/    # uei = ui
    - derive/iu$/iou/    # iou = ui
    - derive/tie$/tei/    # tei = tie
    - derive/i$/ii/      # ii = i  # i 不小心按两下
    - derive/u$/uu/      # ui = u  # u 不小心按两下

当然如果你能看懂上面的正则表达式,那么你也可以自己自定义模糊音了。

修改完成后,记得重新部署生效。

中英文混合输入

中英文混合输入是让类似 “哆啦A梦”、“T恤” 这样的词语能直接出现在候选列表里。

该输入方案默认没有加入中英文混合,加入中英文混合输入有两个方法,但是分别都有相应的弊端,目前没有完美的解决方案。

一、添加自定义词典

这个方法是按照类似 导入自定义词库 的方法,导入了一些现有的中英文混合词典,但是导致严重的问题是普通词组变得只能全拼来输入,简拼的时候候选列表变成了空的。

已经有人提出过这个问题

二、内嵌 easy_en

内嵌 easy_en 的方法是由 https://github.com/fkxxyz/rime-cloverpinyin/issues/4#issuecomment-654979456 启发,将这个项目嵌入该输入方案(需要 rime-lua 支持,旧版本的 rime 没有该功能)

https://github.com/BlindingDark/rime-easy-en

但是我亲自测试发现,导致的后果是输入大写字母无法直接上屏,所以这个办法也要慎重考虑

必须输入全拼才能出候选列表

例如输入 “weisha” 才会出来 “为啥”,而输入 “ws” 的候选列表是空的!

这个问题有人提过 请教,能实现简拼和混拼吗?

该输入方案默认就是可以简拼输入的,简拼失效的原因是自己加入了中英文混合的词典导致的 中英文混合输入

删掉自己加入的那些词典即可恢复正常。

目前暂时没有又能中英文混合输入又能简拼的完美方法。

大写不能直接上屏

在 1.1.4 的版本,我刚修复这个问题。但是内嵌 easy_en 也会导致大写无法上屏。

所以自然两个解决办法

  • 更新到最新版

  • 去掉 easy_en 的内嵌

快捷键

该方案的默认快捷键为:

  • 繁简切换 Ctrl+Shift+2 或 Ctrl+Shift+f 。
  • emoji开关 Ctrl+Shift+3
  • 符号输入 Ctrl+Shift+4
  • ascii标点切换 Ctrl+Shift+5 、 Ctrl+, 或 Ctrl+。
  • 全半角切换 Ctrl+Shift+6 、 Shift+Space

由于 rime 的设定,这些切换也可以通过打开方案选单来完成,方案选单默认有个快捷键 F4 ,按 F4,再按 2,即可看到这些设定,选择相应的开关设定即可。

如果你不想用 emoji 或者符号输入的功能,则需要修改配置文件才能永久关闭该功能:

修改 clover.custom.yaml ,添加一个补丁:

  switches:
    - name: zh_simp_s2t
      reset: 0
      states: [ 简, 繁 ]
    - name: emoji_suggestion
      reset: 1
      states: [ "🈚️️\uFE0E", "🈶️️\uFE0F" ]
    - name: symbol_support
      reset: 1
      states: [ "无符", "符" ]
    - name: ascii_punct
      reset: 0
      states: [ 。,, ., ]
    - name: full_shape
      reset: 0
      states: [ 半, 全 ]
    - name: ascii_mode
      reset: 0
      states: [ 中, 英 ]

将 emoji_suggestion 或 symbol_support 里面的 reset 改成 0 即可。

这里其实是定制方案选单的选项,reset 表示默认选中 states 的第几个选项,更多请看一例、定制简化字输出

修改快捷键

修改用户资料夹下的 clover.key_bindings.yaml ,这里面包含了所有的快捷键,相关的语法在官方文档有介绍 rime其它设置

想删除某个快捷键,删除那一行再重新部署即可。

注意不是快捷键的行不要删否则重新部署会失败。

注:对于 archlinux 用户,从 AUR 安装的该方案用户资料夹没有 clover.key_bindings.yaml,从系统资料夹复制过来即可

/usr/share/rime-data/clover.key_bindings.yaml

设置默认英文

修改 clover.custom.yaml ,添加一个补丁:

  "switches/@5/reset": 1

出现候选框时按Shift字母不会上屏

由于 rime 的中英文切换的快捷键和 fcitx 的切换输入法的快捷键都是 shift ,fcitx 的快捷键优先于 rime,所以会导致这种情况。

解决方法:右键托盘图标,配置,打开 fcitx 的配置,点全局配置,额外的激活输入法快捷键,选择禁用。点显示高级选项,在这里的激活输入法可以设置为 shift

删除一个自造词

有时候错误的输入了一个词语,这个错误的词语每次会出现在候选框中,看着难过,那么可以删除这个词语。

按上下键高亮选中这个词语,然后按 Ctrl+Del 或 Shift+Del即可删除该词。(鼠须管的快捷键是 Fn + Shift + Delete)

词序总是错乱

有时候,发现以为自己最经常打的字候选词里一定排在第一位,但是时间长了发现好像并不是这么回事,似乎自己最近打的词比使用频率最高的词排序还要靠前,这导致大量的输入错误严重降低了打字效率,后来看到这个帖子

『技术贴』『改进版』小狼毫五笔自动造词、网盘同步

原来 rime 的排序特点就是如此,但是这会导致词序经常很乱,也无法固定首位,怎么办呢,我就这个问题向rime作者反馈,得到的回应是,这是记忆力算法,刚开始词序可能会变化较大,长期会趋于稳定,那这么看来暂时先这样用着时间长就好了。

小狼毫在onenote等软件下不能正常使用

这是小狼毫的 bug,我目前无法解决,详见

类似 bug ,全拼程序也无法使用小狼毫。

emoji字体呈方块状

这是因为没有安装 emoji 字体导致。

在 archlinux 下,可以直接从 aur 安装 apple emoji 的字体:

yay -S ttf-apple-emoji

在其它 linux 发行版,可以从这个地址下载到 apple emoji 的字体

https://git.synh.me/dmitry/AUR/-/raw/master/files/ttf-apple-emoji/apple-color-emoji.ttc

下载好之后,需要复制到 /usr/share/fonts 的某个子目录下,然后更新字体缓存

cd /usr/share/fonts
sudo fonts.dir
sudo mkfontdir

在其它平台,需要自己想办法了。

导入自定义词库

可以借助深蓝词库转换这个项目,导入它所能支持的所有细胞词库如搜狗拼音细胞词库等。

基本步骤

首先在用户资料夹下建立 clover.dict.yaml ,内容为

name: clover
version: "1"
sort: by_weight

import_tables:
  - clover.base
  - clover.phrase
  - THUOCL_animal
  - THUOCL_caijing
  - THUOCL_car
  - THUOCL_chengyu
  - THUOCL_diming
  - THUOCL_food
  - THUOCL_IT
  - THUOCL_law
  - THUOCL_lishimingren
  - THUOCL_medical
  - THUOCL_poem
  - sogou_new_words

建立了这个文件之后,会覆盖默认的词库。

关于这个文件的格式详解: Dict.yaml 详解

在这里,需要说明 import_tables 导入表里的每一项。

  • clover.base 这是单字的字库,包含所有字的拼音、字频,对应文件 clover.base.dict.yaml
  • clover.phrase 这是词组的词库,包含所有基本词汇的拼音、词频,对应文件 clover.phrase.dict.yaml
  • THUOCL_* 这是清华大学开源词库,对应文件 THUOCL_*.dict.yaml
  • sogou_new_words 这是每周更新的搜狗网络流行新词,对应文件 sogou_new_words.dict.yaml

然后你可以在该文件的后面,按照上述格式(两个空格一个减号一个空格),任意添加你自己创建或导入的词库,当然你也可以删除上述你不想要的词库。

需要注意以下几点:

  • clover.base 是不可以删除的,否则会失去所有文字的拼音导致导入任何词库都无效。

  • 导入的词库也遵循同样的格式,但是导入的词库的 import_tables 项是无效的(也就是不能嵌套)

  • 导入的词库的 name 字段必须和文件名一致,后缀为 .dict.yaml

    例如文件名 “音乐词汇大全.dict.yaml” 的第一行为

    name: 音乐词汇大全

    否则导入的该词库也会无效

例子详解

下面以导入搜狗音乐词汇大全的细胞词库为例

首先来这里下载该细胞词库 音乐词汇大全

然后用深蓝词库转换为 “音乐词汇大全.txt” ,下面是不同平台的使用方法:

  • Windows端

    下载地址 imewlconverter_Windows.zip

    打开深蓝词库转换,指定好要转换的文件、源类型为 “搜狗细胞词库scel”,目标类型为 “Rime中州韵”,点击转换,提示是否保存点“是”,保存为 “音乐词汇大全.txt”

  • archlinux

    在 archlinux 下直接从 AUR 安装深蓝词库转换即可 yay -S imewlconverter-bin

    然后执行

    imewlconverter -i:scel 音乐词汇大全.scel -o:rime 音乐词汇大全.txt
  • 其它 linux 发行版

    下载地址 imewlconverter_Linux_Mac.tar.gz ,解压得到 ImeWlConverterCmd

    然后执行

    ImeWlConverterCmd -i:scel 音乐词汇大全.scel -o:rime 音乐词汇大全.txt
  • macOS端自测

然后在用户资料夹下创建 “音乐词汇大全.dict.yaml”,内容为

name: 音乐词汇大全
version: "1.0"
sort: by_weight
...
阿炳	a bing	1
阿甲文	a jia wen	1
阿拉伯风格曲	a la bo feng ge qu	1
阿勒曼舞曲	a le man wu qu	1

把“音乐词汇大全.txt”里面的词都追加到后面。

然后在用户资料夹下建立 clover.dict.yaml ,内容为

name: clover
version: "1"
sort: by_weight

import_tables:
  - clover.base
  - clover.phrase
  - THUOCL_animal
  - THUOCL_caijing
  - THUOCL_car
  - THUOCL_chengyu
  - THUOCL_diming
  - THUOCL_food
  - THUOCL_IT
  - THUOCL_law
  - THUOCL_lishimingren
  - THUOCL_medical
  - THUOCL_poem
  - sogou_new_words
  - 音乐词汇大全

右键托盘图标,点击“重新部署”,片刻之后,打字测试看看有没有相应的词汇吧。

同步词库

rime 允许不同系统之间进行词库的同步。

该功能详见 同步用户资料

默认同步的文件夹在用户资料夹下 sync ,点击同步时,会生成这个文件夹,你也可以设置 installation.yaml 里面的 sync_dir 来修改同步文件夹。

用户词库词频信息被保存在 同步文件夹下的对应 id 里的 clover.userdb.txt 里,每次点击同步时,会合并所有 id 里的该文件。

所以可以利用云同步服务例如 坚果云 一类的软件,来实现个人不同电脑之间的词库同步。

其它

其它常见问题看官方文档的常见问题吧。