Rime 输入法
我使用 Rime 输入法并不是其各种高级功能,我之前一直使用搜狗,但是有一次搜狗崩溃了, 然后又不知道恢复,在网上参考了各种资料,都无法解决。
- https://askubuntu.com/questions/1251749/how-to-install-sogou-input-method-on-ubuntu-20-04
- https://leimao.github.io/blog/Ubuntu-Gaming-Chinese-Input/ 忍无可忍,就换成 Rime 了。但是我发现 Rime 的输入法的门槛很高,这里简单记录下配置过程。
安装,这里仅仅考虑 fedora ,并且是最新环境的
https://extensions.gnome.org/extension/261/kimpanel/
参考 rime/linux-install.sh ,其实也就是:
首先在你对应的系统中安装 fcitx-rime,例如:
- fedora : https://fedoraproject.org/wiki/I18N/Fcitx5
sudo dnf install -y fcitx5-rime
检查版本:
sudo rpm -qa | grep rime
perl-experimental-0.034-2.fc42.noarch
librime-1.13.1-1.fc42.x86_64
fcitx5-rime-5.1.12-1.fc42.x86_64
配置 fcitx5
在 Fcitx5 Configure 中增加 rime 输入法。
在 “Available Input Method” 中搜索 Rime,选中之后,点击中间的那个 “<”,让 “Current Input Method” 中增加 Rime 。
当前配置结构
当前使用 Fcitx5 加载 Rime,Rime 中只启用雾凇拼音的小鹤双拼方案。主词典完全由
Rime Ice 管理,个人固定词汇通过独立的 custom_phrase 翻译器加载,不再维护额外的
聚合词典。
Fcitx5
└── fcitx5-rime
└── ~/.local/share/fcitx5/rime/
├── default.yaml
│ └── schema_list: double_pinyin_flypy
├── double_pinyin_flypy.schema.yaml
│ ├── script_translator
│ │ └── dictionary: rime_ice
│ │ └── rime_ice.dict.yaml
│ │ ├── cn_dicts/8105
│ │ ├── cn_dicts/base
│ │ ├── cn_dicts/ext
│ │ ├── cn_dicts/tencent
│ │ └── cn_dicts/others
│ └── table_translator@custom_phrase
│ └── user_dict: custom_phrase_double
├── custom_phrase_double.txt
│ └── -> ~/.dotfiles/rime/custom_phrase_double.txt
└── build/
└── Rime 部署时生成的编译结果
各层的职责:
fcitx5-rime是 Fcitx5 与 Rime 引擎之间的前端插件。double_pinyin_flypy是当前唯一启用的输入方案,定义小鹤双拼编码和输入行为。rime_ice是主词典入口。cn_dicts/*是 Rime Ice 自身拆分出来的字表和词表, 不是本仓库额外叠加的词库。custom_phrase_double是独立的固定短语表,优先级高于主词典,不替换或重新聚合rime_ice。它使用小鹤双拼按键或自定义缩写作为编码。build/、default.yaml、double_pinyin_flypy.schema.yaml和rime_ice.dict.yaml都由 Plum/Rime 安装或生成,不应直接修改。
rime.nvim:在 Neovim 内部使用 Rime
rime.nvim 是另一种 Rime 前端:它把
librime 直接加载进 Neovim,在插入模式中自己处理按键、候选窗口和上屏,和
Fcitx5 在终端外部处理输入是两条独立路径。它不会自动继承 Fcitx5 当前已经打开的
输入状态,但可以复用同一套 Rime 配置和词库。
安装
系统先安装 librime 和 Fcitx5 Rime 配置。当前 Fedora 配置使用:
sudo dnf install -y fcitx5-rime
cd ~/.dotfiles
bash rime/linux-install.sh
Neovim 使用 lazy.nvim 管理插件。插件声明和本仓库中的实际配置入口是
nvim/lua/usr/lazy.lua:
{
"rimeinn/rime.nvim",
lazy = false,
}
第一次启动 Neovim 时,lazy.nvim 会安装插件及其 rockspec 依赖(ime、
platformdirs、lua-cjson 等)。这些依赖需要 Lua 5.1;如果 Nix 环境中的
luarocks 默认指向 Lua 5.2,可以在临时环境中安装:
nix shell nixpkgs#lua5_1 nixpkgs#lua51Packages.luarocks \
nixpkgs#readline nixpkgs#xmake \
--command nvim --headless '+Lazy! install rime.nvim' +qa
当前机器上的 librime 由系统提供,Neovim 的 Nix 动态链接环境还需要确保它能
找到 /lib64/librime.so.1 及其依赖库;如果出现 librime.so.1: cannot open
shared object file,先检查:
ldconfig -p | grep librime
ldd ~/.local/share/nvim/lazy-rocks/rime.nvim/lib/lua/5.1/rime.so
当前接入方式
插件的自动目录探测会优先尝试 IBus、Fcitx 和 Nix profile 目录。当前配置显式指定:
用户配置和词库:~/.local/share/fcitx5/rime/
共享 Rime 数据:/usr/share/rime-data/
这样可以读到 double_pinyin_flypy、Rime Ice 以及仓库维护的
custom_phrase_double.txt。如果机器使用其他前端或目录,需要修改
nvim/lua/usr/lazy.lua 中的 traits.user_data_dir 和
traits.shared_data_dir,不要只修改生成的 build/ 文件。
当前提供以下入口:
:RimeToggle
:RimeEnable
:RimeDisable
插入模式下当前绑定 <C-m>(Ctrl-M)切换 Rime,<C-\> 将按键传给 Rime。这个
切换键属于 Neovim 内部前端,不等同于 Fcitx5 的 Ctrl-Space。启用后输入小鹤双拼编码,例如 nh,应看到
候选窗口;wsm 应得到“为什么”,smartx 应得到“北京志凌海纳科技有限公司”。
曾经出现的两个问题
-
安装成功但完全没有候选
原因不是插件没有加载,而是自动探测选中了旧的
~/.config/fcitx/rime或 Nix profile 下的rime-data,没有读到当前 Fcitx5 目录。定位时先查看:find ~/.local/share/fcitx5/rime -maxdepth 1 -type f | head fcitx5-remote -n再在 Neovim 中确认方案和目录:
nvim --headless \ '+lua local r=require("rime.nvim"); r.init(); print(r.ime.session:get_current_schema())' \ +qa预期方案是
double_pinyin_flypy。 -
wsm、smartx等自定义短语消失词库本身没有消失。
rime.nvim原版在“当前前缀暂时没有候选”时会立即提交 composition;wsm输入到ws时正好会经过这个状态,于是ws被提前上屏, 第三个字符m无法再组成完整编码。smartx的每一步都有英文候选,所以不容易 暴露这个问题。当前配置覆盖了插件的
draw():当没有候选但仍有preedit时保留输入串,直到 后续按键产生候选或用户明确确认。用下面的 headless 测试可以验证:nvim --headless '+lua local r=require("rime.nvim"); r.init(); r.enable(); \ r.ime:process("w"); r.ime:process("s"); local _,lines=r.ime:process("m"); \ print(vim.inspect(lines))' +qa输出中应包含
为什么。
本仓库只维护下面两个入口文件:
| 文件 | 说明 |
|---|---|
rime/linux-install.sh |
安装/更新 Rime Ice,并把个人短语文件链接到 Rime 目录 |
rime/custom_phrase_double.txt |
小鹤双拼个人固定短语,格式为“词汇、编码、权重” |
修改个人短语后执行:
fcitx5 -r -d
完整安装或更新配置时执行:
cd ~/.dotfiles
bash rime/linux-install.sh
fcitx5 -r -d
fcitx5-remote -r 只会重载 Fcitx5 配置,在当前环境中不会触发 Rime 重新部署。
常用快捷键
ctrl space唤出 rime 输入法- shift 切换的 rime 的中文输入和英文输入。
ctrl delete: 删除自造词
皮肤
- 在 mac 中的参考很多,例如:
https://github.com/fcitx/fcitx5-rime/issues/15
nixos 的配置
其他的内容都相同,就是 fcitx 和 rime 的安装和一般的系统不同。
i18n.inputMethod = {
enabled = "fcitx5";
fcitx5.addons = with pkgs; [
fcitx5-rime
];
};
参考 NixOS 中文字体输入法 配置。
2024-05-30 的发现
如果似乎是需要将 fcitx 的配置中的 Shift-L 取消掉,不然他会覆盖掉 rime 的行为。
甚至怀疑是键盘的问题,但是实际上并不是; https://superuser.com/questions/248517/show-keys-pressed-in-linux
小鹤双拼的自定义短语放在 rime/custom_phrase_double.txt。
rime-ls
git clone https://github.com/wlh320/rime-ls
sudo dnf install librime-devel
cd rime-ls
cargo build --release
cp target/release/rime_ls ~/.cargo/bin
在 asahi linux fedora 上尝试的时候,还需要安装如下内容:
这是没有图形界面的哦,一样是可以正常使用的
/home/martins3/.dotfiles/rime/linux-install.sh
sudo dnf install ibus-rime
存在的问题
- 自动选择数值
- 没太搞懂,虽然说,https://github.com/liubianshi/cmp-lsp-rimels 已经解决了,但是实际上不好用,但是问题不大,因为
- , 的输入应该是自动,谁 miaomiao 的输入中文的忽然携带一个英文都好
- 是否可以变为 toggle 的模式
- 没办法切换为双拼,但是在 rime-ls 中是可以的
schema_trigger_character = "&" -- [since v0.2.0] 当输入此字符串时请求补全会触发 “方案选单” - 双拼没办法显示当自动匹配的拼音字母
小鹤双拼的配置
- https://github.com/brglng/rime-xhup
- https://github.com/ASC8384/myRime
配置小鹤双拼还是比较简单的。
- https://www.zhihu.com/question/20698750

- 如何将 emoji 去掉?
不能在赞同了: https://www.zhihu.com/question/383416202/answer/2584564433
使用 rime-ice 加上 rime-auto-deploy
https://github.com/iDvel/rime-ice https://github.com/Mark24Code/rime-auto-deploy
- 这个基础上处理下模糊音
- 默认上屏的操作
- 不要展示拼音
https://github.com/iDvel/rime-ice/issues/133 https://www.mintimate.cc/zh/guide/faQ.html#linux%E8%96%84%E8%8D%B7%E9%85%8D%E7%BD%AE%E6%97%A0%E6%B3%95%E4%BD%BF%E7%94%A8
实在是太复杂了,我靠 : 似乎这里没有插件,所以有问题 https://github.com/NixOS/nixpkgs/blob/nixos-24.05/pkgs/development/libraries/librime/default.nix
切换 ibus 和 fcitx5
似乎 fcitx5 很简单:
https://github.com/fcitx/fcitx5-rime https://github.com/rime/ibus-rime/issues : 这个不维护了
rimels 初步尝试
diff --git a/nvim/lua/usr/lazy.lua b/nvim/lua/usr/lazy.lua
index f49b0c7ef8a1..d1459b277c94 100644
--- a/nvim/lua/usr/lazy.lua
+++ b/nvim/lua/usr/lazy.lua
@@ -185,63 +185,4 @@ require("lazy").setup({
config = true,
},
'ojroques/nvim-osc52',
- {
- "liubianshi/cmp-lsp-rimels",
- dir = "/home/martins3/core/cmp-lsp-rimels",
- -- 这个插件让正常的补全很卡
- enabled = false,
- config = function()
- local compare = require("cmp.config.compare")
- local cmp = require("cmp")
- cmp.setup({
- -- 设置排序顺序
- sorting = {
- comparators = {
- compare.sort_text,
- compare.offset,
- compare.exact,
- compare.score,
- compare.recently_used,
- compare.kind,
- compare.length,
- compare.order,
- },
- },
- })
-
- require("rimels").setup({
- keys = { start = "jk", stop = "jh", esc = ";j", undo = ";u" },
- cmd = { "/home/martins3/.cargo/bin/rime_ls" },
- rime_user_dir = "/home/martins3/.local/share/rime-ls",
- shared_data_dir = "/home/martins3/.local/share/fcitx5/rime",
- filetypes = { "NO_DEFAULT_FILETYPES" },
- single_file_support = true,
- settings = {},
- docs = {
- description = [[https://www.github.com/wlh320/rime-ls, A language server for librime]],
- },
- max_candidates = 9,
- trigger_characters = {},
- schema_trigger_character = "&", -- [since v0.2.0] 当输入此字符串时请求补全会触发 “方案选单”
- probes = {
- ignore = {},
- using = {},
- add = {},
- },
- detectors = {
- with_treesitter = {},
- with_syntax = {},
- },
- cmp_keymaps = {
- disable = {
- space = false,
- numbers = false,
- enter = false,
- brackets = false,
- backspace = false,
- },
- },
- })
- end,
- },
}, {})
语音输入
https://github.com/xifan2333/fcitx5-vinput
参考 && TODO
- 双拼練習
- GNU/Linux 输入法折腾笔记 (RIME)
- 小狼毫 3 分钟入门及进阶指南
- Arch Linux 下给 RIME 中
- Rime 导入搜狗词库
- 也致第一次安装 Rime 的你
- ssnhd 的 rime 教程
本站所有文章转发 CSDN 将按侵权追究法律责任,其它情况随意。