Rime 导入词库

2023/07/13
共 630 字
约 2 分钟
归档: 技术
标签: Ubuntu

Ubuntu 下的中文输入法真是一言难尽:百度极其难安装成功,搜狗会导致 IDE 卡死/闪退/打不了中文。Ficix 能够提供跟 Windows 一样的体验,但实在不稳定。退而求其次,用更稳定的 IBus,搭配好的词库,虽然比不上联网联想,但总比自带的智能拼音强。


启用 Rime

  • IBubs 一种输入框架

  • Rime 一种输入法引擎

设置–区域和语言–点击加号–汉语–选择中文(Rime)

202307131030606

进入 ~/.config/ibus/rime 新建 default.custom.yaml

patch:
  # 输入方案,这里是简明拼音
  schema_list:
    - schema: luna_pinyin_simp
  menu:
    # 候选词数目
    page_size: 6
  ascii_composer:
    # 中英文切换快捷键
    switch_key:
      Shift_L: commit_code
      Shift_R: commit_code
    # 切换输入方案快捷键
    switcher/hotkeys:
      - "Control+grave" # Ctrl + `

重启 ibus 即可使用

ibus restart

横排显示候选词,新建 ~/.config/ibus/rime/build/ibus_rime.yaml 写入

style:
   horizontal: true

候选词个数、方案列表、快捷键等设置都可以在 ~/.config/ibus/rime/default.yaml 中调整。

自定义词库

词库推荐:雾凇拼音
https://github.com/iDvel/rime-ice/tree/main/cn_dicts

如果想省事,备份/清空 ~/.config/ibus/rime 里的文件,把这个项目克隆下来,解压,把所有文件复制过去,重启 IBus

这里以添加 8105 + base + ext 为例,下载需要的词库,新建以下文件:

luna_pinyin_simp.custom.yaml 输入方案自定义文件

patch:
  # 指定词库
  "translator/dictionary": luna_pinyin.extended

自定义词库 luna_pinyin.extended.dict.yaml
可以在 import_tables 添加其他词库,输入 .dict.yaml 前的文件名即可

---
name: luna_pinyin.extended
version: "1.0"
sort: by_weight
use_preset_vocabulary: true
import_tables:
  - luna_pinyin
  - 8105
  - base
  - ext
...
# 也可以在这里直接添加词组
哆啦A梦 duo la a meng

最后重新部署/重启 IBus

迁移手机词库

补充一下个人词库,日常体验会更上一个台阶。

手机里有百度输入法,写个程序转换下格式,加在 import_tables 即可

const fs = require('fs')
const readline = require('readline');

const lines = [];
const results = [];

const rl = readline.createInterface({
    input: fs.createReadStream('ch3.txt', { encoding: 'utf-8' }),
    crlfDelay: Infinity
});

rl.on('line', (line) => {
    lines.push(line);
});


rl.on('close', (line) => {

    lines.forEach(function (item) {
        item = item.replaceAll('|', ' ').replace('(', '\t').replace(')', '').replace(' 55000', '');
        results.push(item);
    })

    fs.open('jack.dict.yaml', 'w', (err, fd) => {
        if (err) throw err;

        results.forEach((num) => {
            fs.write(fd, num.toString() + '\n', (err) => {
                if (err) throw err;
            });
        });

        fs.close(fd, (err) => {
            if (err) console.log(err)
        });
    });

});

留言

本站已运行
© 2024 Jack  由 Hexo 驱动
复制成功