小辛的互联网作坊

强大的开源输入法 Rime 安装记录和配制指南

2023-04-08
Linux
rime
ibus-rime
最后更新:2024-05-03
11分钟
2042字

Rime 输入法介绍

最近一直在寻找一款合适的输入法,突然搜索到了 Rime/中州韵 输入法,瞬间就被它独特的功能吸引到了,写下这边文章记录一下我的整个安装&配置过程。 Rime/中州韵输入法是一款强大的开源输入法框架,支持 Windows、MacOS、Linux、Android 等平台。

安装

各个平台的安装方法:

Linux

编译安装查看官方 wiki : https://github.com/rime/home/wiki/RimeWithIBus 使用 ibus-rime ,各发行版安装:

ArchLinu :

Terminal window
1
sudo pacman -S ibus-rime

Ubuntu/Debian :

Terminal window
1
sudo apt install ibus-rime

Fedora :

Terminal window
1
sudo dnf install ibus-rime

fcitx 安装:https://github.com/fcitx/fcitx-rime

MacOS

MacOS 上的 rime 叫鼠须管/Squirrel,下载: https://github.com/rime/squirrel/releases

Windows

Windows 上的 rime 叫小狼毫/weasel,下载:https://github.com/rime/weasel/releases

Android

Android 上的 rime 由第三方开发,叫同文输入法,下载地址:https://github.com/osfans/trime/releases

配置

安装完成之后就是配置了,首先我们先选择一个适合自己的输入方案,然后了解 rime 的配置文件存储位置。目的是更好的完成一个适合自己的输入法。

输入方案可以通过东风破 plum 配置管理器安装。 东风破 plum 使用:

Terminal window
1
git clone --depth 1 https://github.com/rime/plum.git
2
cd plum
3
bash rime-install :preset ###要安装的方案

各平台配置文件路径: Linux : ~/.config/ibus/rime/ 0.9.1 以下版本为 ~/.ibus/rime/ fcitx5 为 ~/.local/share/fcitx5/rime/ MacOS : ~/Library/Rime/ Windows : %APPDATA%\Rime

配置文件说明: (如不存在可手动创建) 用户资料夹 则包含为用户准备的内容,如:

  • 全局设定 default.yaml

  • 发行版设定 weasel.yaml squirrel.yaml build/ibus_rime.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
  • ※用户自制输入方案及配套的词典源文件

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

优先级: 用户对全局设定的定制信息-default.custom.yaml > 用户对预设输入方案的定制信息-<方案标识>.custom.yaml > 全局设定-default.yaml

选择方案

在输入界面按默认快捷键:ctrl + ~ 或者 F4 选择一个适合自己的方案。

default

部署

修改完配置文件之后配置还没有生效,用户须要使用 Rime 重新进行部署操作。

以 Linux Gnome 桌面为例:

default

终端部署:

Terminal window
1
touch ~/.config/ibus/rime/; ibus restart

其它平台也大同小异,一样的方式。

修改实例

修改为横排展示:

squirrel.custom.yamlweasel.custom.yaml 只需要添加以下语句:

1
"style/horizontal": true # 横排展示

build/ibus_rime.yaml 修改:

1
style:
2
horizontal: true # false 改为 true 横排展示

修改翻页按键(修改输入方案的配置 custom 文件),以明月拼音为例:

luna_pinyin.custom.yaml 修改为方括号[]翻页:

1
patch:
2
"key_binder/bindings":
3
- { when: paging, accept: bracketleft, send: Page_Up }
4
- { when: has_menu, accept: bracketright, send: Page_Down }

修改为加减号-+翻页:

1
patch:
2
"key_binder/bindings":
3
- { when: paging, accept: minus, send: Page_Up }
4
- { when: has_menu, accept: equal, send: Page_Down }

修改更多按键请参考:Rime_description

配置词库

default.custom.yaml 文件中开启:

1
"translator/enable_user_dict": true

然后在 当前输入法方案的定制文件(如我的是明月拼音简体) luna_pinyin_simp.custom.yaml 中添加内容:

1
patch:
2
"translator/dictionary": custom_dict.all

custom_dict.all : 为字典总表文件。对应就是配置文件目录内custom_dict.all.dict.yaml ,这个可以直接自定义。

编辑 custom_dict.all.dict.yaml

1
name: custom_dict.all ##注意name和文件名一致
2
version: "2020.6.7"
3
sort: by_weight
4
use_preset_vocabulary: true
5
# 此处为 输入法所用到的词库,既补充拓展词库的地方
6
import_tables:
7
- luna_pinyin # 系统基础字库
8
- dicts/luna_pinyin.chaizi # 拆字词库
9
- dicts/custom_simple # 自定义
10
- dicts/luna_pinyin.sougou # 搜狗词库
11
- dicts/luna_pinyin.xiandaihanyu # 现代汉语词典
12
- dicts/se_words # 互联网网络词汇
13
- dicts/luna_pinyin.biaoqing # 表情
14
- dicts/luna_pinyin.emoji # emoji Ext

luna_pinyin 是输入法方案默认的词库,其它的词库都是在dicts 目录下的。如字段 dicts/custom_simple 对应的就是 dicts 目录下的 custom_simple.dict.yaml文件,新添加词库须要放到这个目录下并添加到 custom_dict.all.dict.yaml 文件内启用。

词库转换软件:深蓝词库转换

启用 Rime 的 Lua脚本插件

启用 Rime 的 Lua 脚本插件可实现更多功能,如时间组件等。

自编译 librime 添加 librime-lua 插件(Fedora 37)

首先安装依赖:

Terminal window
1
sudo dnf install git cmake boost boost-devel glog glog-devel leveldb-devel marisa marisa-devel opencc opencc-devel yaml-cpp yaml-cpp-devel gtest gtest-devel

然后克隆源码:

Terminal window
1
mkdir ~/workspace/
2
cd ~/workspace/
3
git clone https://github.com/rime/librime.git
4
cd librerime/
5
bash install-plugins.sh hchunhui/librime-lua
6
cd plugins/lua/
7
git clone https://github.com/hchunhui/librime-lua.git -b thirdparty --depth=1 thirdparty

编译安装:

Terminal window
1
# On Linux, merged build
2
make merged-plugins
3
sudo make install

default ok,完成重启或者注销重新登录就行了。

启用时间日期组件&英文输入

使用 plum 安装 easy_en:

Terminal window
1
bash rime-install BlindingDark/rime-easy-en

在配置目录下创建 rime.lua 文件,写入如下内容:

1
time_translator = require("time")
2
date_translator = require("date")
3
week_translator = require("week")
4
easy_en_translator = require("easy_en")

在配置幕下创建 lua 目录,并在目录下创建 time.lua date.lua week.lua 组件。

1
--lua语言中的注释用“--”
2
local function translator(input, seg)
3
if (input == "time") then --关键字更改,你也可以用or语句定义多个关键字
4
yield(Candidate("time", seg.start, seg.\_end, os.date("%H:%M"), " "))
5
yield(Candidate("time", seg.start, seg.\_end, os.date("%H点%M分"), " "))
6
yield(Candidate("time", seg.start, seg.\_end, os.date("%H:%M:%S"), " "))
7
yield(Candidate("time", seg.start, seg.\_end, os.date("%H点%M分%S秒"), " "))
8
end
9
end
10
return translator
11
12
13
--lua语言中的注释用“--”
14
local function translator(input, seg)
15
if (input == "date") then
208 collapsed lines
16
17
---
18
19
--普通日期1,类似2022年01月02日
20
date1=os.date("%Y年%m月%d日")
21
date_y=os.date("%Y") --取年
22
date_m=os.date("%m") --取月
23
date_d=os.date("%d") --取日
24
--yield(Candidate("date", seg.start, seg.\_end, date1, " "))
25
26
---
27
28
--普通日期2,类似2022年1月1日
29
num_m=os.date("%m")+0
30
num_m1=math.modf(num_m)
31
num_d=os.date("%d")+0
32
num_d1=math.modf(num_d)
33
date2=os.date("%Y年")..tostring(num_m1).."月"..tostring(num_d1).."日"
34
yield(Candidate("date", seg.start, seg.\_end, date2, " "))
35
36
---
37
38
--普通日期3,类似1月1日
39
num_m=os.date("%m")+0
40
num_m1=math.modf(num_m)
41
num_d=os.date("%d")+0
42
num_d1=math.modf(num_d)
43
date3=tostring(num_m1).."月"..tostring(num_d1).."日"
44
yield(Candidate("date", seg.start, seg.\_end, date3, " "))
45
yield(Candidate("date", seg.start, seg.\_end, os.date("%Y/%m/%d"), " "))
46
yield(Candidate("date", seg.start, seg.\_end, os.date("%Y-%m-%d"), " "))
47
48
---
49
50
--大写日期,类似二〇二〇年十一月二十六日
51
date_y=date_y:gsub("%d",{
52
["1"]="一",
53
["2"]="二",
54
["3"]="三",
55
["4"]="四",
56
["5"]="五",
57
["6"]="六",
58
["7"]="七",
59
["8"]="八",
60
["9"]="九",
61
["0"]="〇",
62
})
63
date_y=date_y.."年"
64
date_m=date_m:gsub("%d",{
65
["1"]="一",
66
["2"]="二",
67
["3"]="三",
68
["4"]="四",
69
["5"]="五",
70
["6"]="六",
71
["7"]="七",
72
["8"]="八",
73
["9"]="九",
74
["2"]="二",
75
["3"]="三",
76
["4"]="四",
77
["5"]="五",
78
["6"]="六",
79
["7"]="七",
80
["8"]="八",
81
["9"]="九",
82
["0"]="",
83
})
84
date_d=date_d.."日"
85
if num_d1>9 then
86
if num_d1<19 then
87
date_d="十"..string.sub(date_d,4,#date_d)
88
end
89
end
90
if num_d1>19 then date_d=string.sub(date_d,1,3).."十"..string.sub(date_d,4,#date_d) end
91
date4=date_y..date_m..date_d
92
yield(Candidate("date", seg.start, seg.\_end, date4, " "))
93
94
---
95
96
--英文日期
97
local date_d=os.date("%d")
98
local date_m=os.date("%m")
99
local date_y=os.date("%Y")
100
local date_m1=""
101
local date_m2=""
102
if date_m=="01" then
103
date_m1="Jan."
104
date_m2="January"
105
end
106
if date_m=="02" then
107
date_m1="Feb."
108
date_m2="February"
109
end
110
if date_m=="03" then
111
date_m1="Mar."
112
date_m2="March"
113
end
114
if date_m=="04" then
115
date_m1="Apr."
116
date_m2="April"
117
end
118
if date_m=="05" then
119
date_m1="May."
120
date_m2="May"
121
end
122
if date_m=="06" then
123
date_m1="Jun."
124
date_m2="June"
125
end
126
if date_m=="07" then
127
date_m1="Jul."
128
date_m2="July"
129
end
130
if date_m=="08" then
131
date_m1="Aug."
132
date_m2="August"
133
end
134
if date_m=="09" then
135
date_m1="Sept."
136
date_m2="September"
137
end
138
if date_m=="10" then
139
date_m1="Oct."
140
date_m2="October"
141
end
142
if date_m=="11" then
143
date_m1="Nov."
144
date_m2="November"
145
end
146
if date_m=="12" then
147
date_m1="Dec."
148
date_m2="December"
149
end
150
151
if date_d=="0" then
152
symbal="st"
153
elseif date_d=="1" then
154
symbal="nd"
155
elseif date_d=="2" then
156
symbal="rd"
157
else
158
symbal="th"
159
end
160
161
date5=date_m1.." "..date_d..symbal..", "..date_y
162
date6=date_m2.." "..date_d..symbal..", "..date_y
163
164
yield(Candidate("date", seg.start, seg.\_end, date5, " "))
165
yield(Candidate("date", seg.start, seg.\_end, date6, " "))
166
yield(Candidate("date", seg.start, seg.\_end, os.date("%Y%m%d"), " "))
167
end
168
end
169
170
---
171
172
return translator
173
174
175
--lua语言中的注释用“--”
176
function translator(input, seg)
177
if (input == "week") then
178
local day_w=os.date("%w")
179
local day_w1=""
180
local day_w2=""
181
local day_w3=""
182
if day_w=="0" then
183
day_w1="星期日"
184
day_w2="Sunday"
185
day_w3="Sun."
186
end
187
if day_w=="1" then
188
day_w1="星期一"
189
day_w2="Monday"
190
day_w3="Mon."
191
end
192
if day_w=="2" then
193
day_w1="星期二"
194
day_w2="Tuesday"
195
day_w3="Tues."
196
end
197
if day_w=="3" then
198
day_w1="星期三"
199
day_w2="Wednesday"
200
day_w3="Wed."
201
end
202
if day_w=="4" then
203
day_w1="星期四"
204
day_w2="Thursday"
205
day_w3="Thur."
206
end
207
if day_w=="5" then
208
day_w1="星期五"
209
day_w2="Friday"
210
day_w3="Fri."
211
end
212
if day_w=="6" then
213
day_w1="星期六"
214
day_w2="Saturday"
215
day_w3="Sat."
216
end
217
yield(Candidate("date", seg.start, seg.\_end, day_w1, " "))
218
yield(Candidate("date", seg.start, seg.\_end, day_w2, " "))
219
yield(Candidate("date", seg.start, seg.\_end, day_w3, " "))
220
yield(Candidate("week", seg.start, seg.\_end, os.date("%w"),""))
221
end
222
end
223
return translator

调试

查看日志文件:

Windows Weasel: %TEMP%

Mac OS X Squirrel: $TEMPDIR

Linux iBus: /tmp

查看日志文件(Linux):

Terminal window
1
cd /tmp
2
cat rime.ibus.INFO
3
cat rime.ibus.WARNING
4
cat rime.ibus.ERROR

推荐

推荐一个超级方便的词库配置雾凇拼音。写完这篇后发现了这个配置,我感觉用起来挺舒服的;作者已经配置好了,跟着教程安装就行了,以下是链接:

{% ghcard iDvel/rime-ice theme:light %}

安装或更新:全部文件

Terminal window
1
bash rime-install iDvel/rime-ice:others/recipes/full

安装或更新:所有词库文件(包含下面三个)

Terminal window
1
bash rime-install iDvel/rime-ice:others/recipes/all_dicts

安装或更新:拼音词库文件

Terminal window
1
bash rime-install iDvel/rime-ice:others/recipes/cn_dicts

安装或更新:英文词库文件

Terminal window
1
bash rime-install iDvel/rime-ice:others/recipes/en_dicts

安装或更新:opencc(emoji)

Terminal window
1
bash rime-install iDvel/rime-ice:others/recipes/opencc

参考资料

本文标题:强大的开源输入法 Rime 安装记录和配制指南
文章作者:Encore Xin
发布时间:2023-04-08
版权声明:本作品采用 「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可