本脚本解决了由于动态词频导致五笔输入时词组优先级高于单字的问题,并且在官方示例脚本的基础上进行了如下改进:
- 优化了性能,解决了退格时卡顿的问题。
- 仅当键入长度 < 4 时才使单字强制优先(因为键入 4 码时期望输入词组的机率较高)
- 只改变优先级最高的单字的顺序,即如果有多个单字,只将正常排序时的第一个单字候选移至最前。
--[[
single_char_filter: 候选项重排序,使单字优先(当键入长度<4,且只使一个单字优先,其它单字正常排序)
--]]
local function filter(input, env)
local inputKeys = env.engine.context.input
if (#inputKeys < 4) then
local l = {}
for cand in input:iter() do
if (utf8.len(cand.text) == 1) then
yield(cand)
break
else
table.insert(l, cand)
end
end
if (#l > 0) then
for _, cand in ipairs(l) do
yield(cand)
end
end
end
for cand in input:iter() do
yield(cand)
end
end
return filter
安装方法
需要 Fcitx 5 和 librime-lua。
-
将以上脚本复制到
~/.local/share/fcitx5/rime/lua/single_char.lua
里(一般需要新建)。 -
在
~/.local/share/fcitx5/rime/rime.lua
里,加入package.path = "./lua/?.lua;"..package.path -- 单字优先 single_char_filter = require("single_char")
-
编辑或新建
wubi86.custom.yaml
,加入以下部分:patch: engine/+: filters/+: - lua_filter@single_char_filter
-
重新部署 Rime。