惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Vulnerabilities – Threatpost
博客园 - 司徒正美
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
大猫的无限游戏
大猫的无限游戏
酷 壳 – CoolShell
酷 壳 – CoolShell
Forbes - Security
Forbes - Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security
小众软件
小众软件
人人都是产品经理
人人都是产品经理
Know Your Adversary
Know Your Adversary
Security Latest
Security Latest
雷峰网
雷峰网
Cisco Talos Blog
Cisco Talos Blog
Latest news
Latest news
GbyAI
GbyAI
Last Week in AI
Last Week in AI
Hacker News: Ask HN
Hacker News: Ask HN
U
Unit 42
S
SegmentFault 最新的问题
月光博客
月光博客
Security Archives - TechRepublic
Security Archives - TechRepublic
Attack and Defense Labs
Attack and Defense Labs
S
Secure Thoughts
N
News and Events Feed by Topic
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
A
Arctic Wolf
Schneier on Security
Schneier on Security
C
CERT Recently Published Vulnerability Notes
I
Intezer
V
Visual Studio Blog
Microsoft Security Blog
Microsoft Security Blog
SecWiki News
SecWiki News
Google Online Security Blog
Google Online Security Blog
N
Netflix TechBlog - Medium
I
InfoQ
T
Tor Project blog
腾讯CDC
T
Tenable Blog
Webroot Blog
Webroot Blog
Y
Y Combinator Blog
TaoSecurity Blog
TaoSecurity Blog
Google DeepMind News
Google DeepMind News
AI
AI
C
Cisco Blogs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V2EX - 技术
V2EX - 技术
PCI Perspectives
PCI Perspectives
C
CXSECURITY Database RSS Feed - CXSecurity.com
G
GRAHAM CLULEY
S
Schneier on Security

mephisto.cc

开机滚动字体显示优化 个人网站安全防护 树莓派上部署Vaultwarden 使用goaccess实时分析Caddy日志 个人网站监控 Hugo全站AVIF记 Linux下尝试使用Godot开发小游戏 Arch linux dae 透明代理 Airflow接管galler-dl下载任务 如何使用gallery-dl批量下载图像 Arch核显下如何愉快玩Dota2和CS2 Arch/labwc 环境网络相关设置 Rime添加dota2词库 Arch 重装记录 Supertuxkart iOS版终于发布了 打造自己的流媒体音乐服务 剪切板管理工具clipcat推荐 MangoHud性能监控 微信小程序开发记 Rofi试用 解决Arch下VSCode无法输入中文的问题 独立窗口管理器下无法录屏问题处理 上海市二手房成交数据监控 OpenLDAP监控 Arch linux如何顺畅连接蓝牙设备 使用Git和Ansible管理配置文件 Arch Linux SSL VPN 客户端配置 简单获取celery任务实时结果 Arch linux下iNode客户端的安装和使用方法 券商费率调整记 迷你主机组装记 Labwc更换定制皮肤 树莓派跑分流代理 实用自动代理配置示例 九年老鼠标复活记 Openvpn示例 Mac下如何旋转webp图片 如何隐藏Vscode中Markdown PDF插件的头部内容 解决Linux下网络配置无法变更保存的问题 labwc环境启用wlogout Ubuntu下新官方微信尝鲜 简单检测用户是否开启广告屏蔽 Atuin ZFS下卡顿问题解决 Wine安装64位微信 Fish 和 Atuin使用记 Fastapi简单实现临时下载链接 Fastapi微信公众号开发简要 Hugo根据语种展示不同内容 如何修复Waybar微信图标错误 信封加密简要 Linux环境下维护公众号记录 快速隐藏和呼出终端 Wayland环境自动切换壁纸 SuperTuxKart 试玩 简单抓取雪球股票快讯 为什么你的kill命令不能列出信号表 Wine安装微信保姆教程 Hysteria科学上网简要 Ubuntu 23.10 钉钉无法启动解决方法 网站导航栏防止插入Adsense自动广告 Linux环境按键检测 Hugo文末添加最后修改时间 Wayland环境ksnip无法复制问题解决 我眼中的股票市场 Caddy简单图片防盗链 greetd和regreet使用教程 Wayland环境下截图加后期修改 Wayland 环境下gif录屏 Firefox的一些有趣功能 Ubuntu 切换系统语言 Firefox 标题栏高度调整 网站添加回到顶部功能 Hugo自定义字体 Labwc 便捷配置 Wofi使用教程 窗口管理器labwc使用记 文件共享软件Dufs推荐 Hugo静态站点接入Adsense广告 Fcitx5配置详解 Ubuntu安装chrome的方法总结 一种Xterm.js的全屏方案 Google网址收录api Python示例 手机听离线音乐 Snipe it资产导入 应用启动器yofi使用配置 Snipe it资产管理系统安装使用 Ubuntu开机启动加速 Vue3 vite TypeScript跨域等相关设置 Ubuntu手动升级Libreoffice Ubuntu设置alacritty为默认终端 简体文章批量转换为繁体 使用Inkscape调整svg图片大小 实用命令 使用mitmproxy给手机app抓包 Python中rstrip方法细解 Github同主机多仓库部署deploy key问题处理 Linux安装最新版本Python KeePassXC使用教程 Ubuntu 22.10连接蓝牙耳机报错br-connection-profile-unavailable解决方法 Caddy日志配置轮转和格式化
修复rime-ice无法弹出候选框的问题
2026-03-26 · via mephisto.cc

Linux 下的中文输入是个老生常谈的问题,我也写过很多相关文章,自从 chromium 和 electron 新版本后,已经很久没遇到无法输入中文的问题了。

可是最近突然发现,晚上在家玩 Dota2 时没法打中文(弹不出候选框!),切换到终端 ghostty、Firefox、obsidian 问题一样存在。当局我的队友选了个小强、到 6 级不抓人还赖线占本大哥敌法师的资源,打不了中文干着急(只能打拼音)。

游戏结束后,赶紧排错,记录过程如下,希望能帮到更多人。

一开始我以为是中英文切换的问题,实际不是的。因为 waybar 上显示状态切换正常,鼠标点击手动切换问题依旧。

1. 打开调试模式排错

可以先把输入法进程杀了 pkill fcitx5, 再运行调试模式:

5 意为 debug,fcitx5 --help 能查到相关说明。如果你不打开 debug,基本等于盲人摸象瞎折腾!其实,往后遇到类似问题,优先建议打开调试日志。

针对我的情况,心里清楚那么多软件同时有问题,肯定是输入法本身有问题,和上层软件关系不大(Linux 中文输入相关的排错链路比较长,有兴趣可以去翻翻我之前写的文章)。

这个时候会触发报错,会输出如下错误日志:

1E20260326 13:45:19.376029 140583420058240 lua_gears.cc:83] Lua Compoment of autoload error:( module: *search name_space: radical_pinyin status: 2 ): error loading module 'search' from file '/usr/share/rime-data/lua/search.lua':
2	/usr/share/rime-data/lua/search.lua:24: attempt to assign to const variable 'i'
3E20260326 13:45:19.376039 140583420058240 lua_gears.cc:131] Lua Compoment of initialize  error:( module: *search name_space: radical_pinyin func type: string ): func type error expect function
4E20260326 13:45:19.640052 140583420058240 lua_gears.cc:17] LuaTranslation::Next error(2): [string "table.unpack = table.unpack or unpack..."]:4: attempt to call a string value (upvalue 'f')
5E20260326 13:45:19.775707 140583420058240 lua_gears.cc:17] LuaTranslation::Next error(2): [string "table.unpack = table.unpack or unpack..."]:4: attempt to call a string value (upvalue 'f')
6E20260326 13:45:21.215213 140583420058240 lua_gears.cc:17] LuaTranslation::Next error(2): [string "table.unpack = table.unpack or unpack..."]:4: attempt to call a string value (upvalue 'f')

到这里,问题很明朗了。

/usr/share/rime-data/lua/search.lua:24: attempt to assign to const variable 'i' 新版本的 Lua 5.4 及以上版本中,for i=1,n do 定义的循环变量 i 是常量,不允许在循环内部重新赋值。

 1-- 获取指定字符在文本中的位置
 2local function get_pos( text, char )
 3    local pos = {}
 4    if text:find( char ) then
 5        local tmp = text
 6        for i = 1, utf8.len( tmp ) do
 7            local first_char = tmp:sub( 1, utf8.offset( tmp, 2 ) - 1 )
 8            if first_char == char then pos[i] = true end
 9            tmp = tmp:gsub( '^' .. first_char, '' )
10	          i = i + 1  -- 错误在这里
11        end
12    end
13    return pos
14end

把上面的 search.lua 的代码块,i = i + 1, 直接注释掉即可解决问题。

或者

1for i = 1, #list do
2    local j = i  -- 用新变量 j 代替 i 做运算
3    j = j + 1    -- 修改变量 j,不碰循环变量 i
4end

截图示例:

rime-ice-lua

保存后,fcitx5 -rd 重启下,问题即可修复。

2. 这个问题如何产生的

大概率是因为 Arch linux 中的 fcitx5-lua 于 2026-03-23 15:27 UTC 包更新了,升级了 lua,里面的 lua 版本调用逻辑未考究,没那么多时间。

1➜  ~ paru -Ql rime-ice-pinyin-git | grep search
2rime-ice-pinyin-git /usr/share/rime-data/lua/search.lua

从上面的输出中可以看到,问题代码 search.lua 来自 rime-ice-pinyin-git

查看 rime-ice 源码,发现 https://github.com/iDvel/rime-ice/issues/1502 此问题已经有人在 MacOS 上报告,且已经合并修复。

而不巧的是 AUR 仓库中 rime-ice-pinyin-git还没有及时更新(Last Updated: 2025-10-31 20:42 (UTC)),所以触发了问题。

rime-ice 的 search.lua 原始来源 https://github.com/mirtlecn/rime-radical-pinyin,具体 rime-radical-pinyin 的作用可看其仓库说明。( 看该仓库的提交记录,也已修复该问题)

总结错误链路:

lua 升级 --> search.lua 语法错误 --> rime-ice 无法弹出候选框

上游修复了,下游的包还没有来得及更新,包没有更新,用户就遭罪了,只能自己定位搜索修复,我也是先修复再查资料才理顺情况的。

3. 总结

这个问题说小也小,毕竟只是 AUR 包没来得及更新,说大也大,中文用户汉字都没法输入了,还玩个鬼!能怪谁呢?这就是 Linux 用户的日常,遇到问题自己想办法搞定,还能学到奇怪的知识😅。也许维护 rime-ice-pinyin-git 这个包的人要养儿育女无暇兼顾,要知道大多数包维护人员是免费无私奉献的。

记录发布这个文章也要消耗我不少时间,只希望能帮到更多的人,比如下次遇到别的 Fcitx5 的问题,能举一反三也打开调试模式,查看情况准确定位问题。