ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Ubuntu 中文输入法配置与排错:IBus、Fcitx5、Wayland 实战

Ubuntu 中文输入法配置与排错:IBus、Fcitx5、Wayland 实战 每次给机器重装 Ubuntu我第一件做的事不是装 Docker也不是拉代码仓库而是先把中文输入法弄顺。原因很简单装 Docker 失败顶多再试一次输入法没配好你和这台机器之间就隔了一层玻璃——界面看得懂却没法痛快地写中文注释、写文档、在聊天窗口回消息。这篇就是我把 Ubuntu 中文输入法这套流程反复踩坑之后整理出来的完整记录从 IBus 到 Fcitx5从物理机、VMware/VirtualBox 虚拟机到远程终端环境尽量把每一个为什么要这么做都讲清楚。Ubuntu 中文输入法这件事说简单也简单两条命令加一次注销就能用说麻烦也麻烦Wayland、locale、环境变量、第三方 deb 包、虚拟机快捷键任意一个环节出问题表现都是同一个——打不出字。所以我不打算只丢给你一串命令而是按技术栈分层 → 环境体检 → 两条主流路线 → 特殊场景 → 排查的顺序走一遍。看完之后你至少能做到一件事知道问题卡在哪一层而不是盲目重启。适合谁看刚装完 Ubuntu 的新手、被 Wayland 折腾过的老用户、在虚拟机里搭开发环境的同学以及需要给团队写一份统一配置文档的人。下面所有命令我在 Ubuntu 22.04 LTS 和 24.04 LTS 上都实际跑过20.04 也基本通用差异我会单点标出来。1. 先搞懂 Linux 中文输入法的三层结构1.1 框架、引擎、前端拆开看就不玄了很多人配不好输入法根本原因不是命令记错而是脑子里把输入法当成一个整体。在 Linux 上它至少拆成三层理解这三层后面所有报错你都能自己定位。第一层是输入法框架也就是 IBus 和 Fcitx5 这两个东西。它常驻在后台负责从系统手里抢键盘事件再把选好的字送回应用程序。你可以把它理解成公司前台所有访客按键先到它这儿登记它再决定往哪个部门送。第二层是输入引擎比如 libpinyin智能拼音、双拼、五笔、仓颉。引擎负责把 nihao 这串字母翻译成候选词列表它才是真正干活的翻译官。框架和引擎是分开安装的这也是为什么很多人apt install ibus之后发现还是打不出中文——你只请了前台没请翻译。第三层是前端模块也就是fcitx5-frontend-gtk3、fcitx5-frontend-qt5这类包。不同 GUI 工具包写的程序GTK 系的 GNOME 应用、Qt 系的 WPS、Electron 系的微信和 VS Code跟输入法框架的对接方式不一样所以需要各自的前端适配层。这层缺了典型症状就是别的软件能打中文就这一个不行。1.2 全新安装的 Ubuntu 为什么默认打不出中文Ubuntu Desktop 的默认安装流程里语言选择只影响界面显示和 locale不会自动帮你把中文输入引擎装上。哪怕你安装时选了中文简体装完之后 GNOME 的输入源列表里大概率也只有英文US。这不是 bug是 Ubuntu 的一贯策略输入法属于可选项不该默认塞进基础镜像。第二个常见坑是 locale。即使输入引擎装好了如果系统 locale 还是en_US.UTF-8中文能打出来但候选框里的字可能变成方块或者某些老程序的输入框直接乱码。判断方法很直接终端里敲echo $LANG看到zh_CN.UTF-8才算真正到位。第三个坑是语言支持面板只装了一半。GNOME 的 Language Support 会提示你安装语言包那个安装过程会顺带拉一部分输入法相关依赖但经常因为网络中断而半途而废留下一个看起来装了、其实缺文件的状态。我的习惯是语言支持面板跑一遍再手动用 apt 补齐引擎包两条路都走最省心。1.3 X11 与 Wayland 的差别决定了你会不会遇到候选框乱跑Ubuntu 从 21.04 开始默认使用 Wayland 作为 GNOME 的显示协议22.04、24.04 一路继承下来。这件事对输入法的影响非常大值得单独讲。输入法本质上要做两件事截获键盘事件、在光标附近画一个候选框。在 X11 时代任何程序都能全局抓键盘、能在屏幕任意位置画窗口所以输入法想怎么干就怎么干。Wayland 出于安全考虑把这条路堵死了程序之间互相看不见输入法必须通过text-input协议跟应用程序协商我在哪、光标在哪、候选框该画在哪。结果是老版本的 Fcitx4.x在 Wayland 下候选框基本不跟随光标经常死死贴在屏幕左上角。IBus 因为 GNOME 亲儿子身份在新版 Ubuntu 上适配得最好。Fcitx5 从 5.0 开始原生支持 Wayland但要求应用程序本身也实现了text-input协议——老版本 Qt 程序、部分 Electron 应用、Java Swing 程序常常没实现于是又是那一句就它不行。所以选型逻辑很清楚了GNOME Wayland 用 IBus 最省事想要更好的词库和自定义就用 Fcitx5但两者都建议确认一下自己到底跑在哪个协议上。2. 动手之前的环境体检与备份习惯2.1 四条命令先摸清系统底细别急着装东西先花 30 秒确认环境。这四条命令的输出基本决定了后面走哪条路lsb_release -a # 系统版本 echo $XDG_SESSION_TYPE # x11 还是 wayland echo $XDG_CURRENT_DESKTOP # ubuntu:GNOME / KDE / XFCE echo $LANG # 当前 localeXDG_SESSION_TYPE输出wayland就别指望 Fcitx4 能有好体验输出x11则两套方案都很舒服。XDG_CURRENT_DESKTOP直接决定你要不要改 GNOME 的设置项——KubuntuKDE和 XubuntuXFCE的输入法配置入口完全不同KDE 自己还带一套kcm_fcitx的配置模块路径是系统设置 → 输入设备 → 虚拟键盘。lsb_release -a里的版本号很关键24.04 的 GNOME 是 46输入源设置界面和 22.04 的 GNOME 42 有细微差别菜单名字换了别照着旧教程找不到入口就以为系统坏了。2.2 软件源和网络apt 卡在 0% 的真相Ubuntu 官方源在国内的下载速度经常一言难尽而输入法相关的包尤其是语言包和字体体积不小apt update卡在 0% 或者下到一半断流是新手最容易卡住的第一关。换国内镜像源是标准操作sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo sed -i s|http://archive.ubuntu.com|https://mirrors.tuna.tsinghua.edu.cn|g /etc/apt/sources.list sudo sed -i s|http://security.ubuntu.com|https://mirrors.tuna.tsinghua.edu.cn|g /etc/apt/sources.list sudo apt update24.04 用的是新的 DEB822 格式配置文件在/etc/apt/sources.list.d/ubuntu.sources改法不一样别在/etc/apt/sources.list里找半天找不到内容然后懵掉。注意换源之后一定要先sudo apt update成功再往下装。如果 update 报 GPG 签名错误多半是镜像站同步还没完成换一个镜像站阿里、中科大、华为云都行比死磕快得多。2.3 装之前打快照这是血泪教训输入法配置会改环境变量/etc/environment或~/.profile。写错一个字母比如把GTK_IM_MODULE写成GTK_IM_MODULE空值或者把ibus打成Ibus大小写敏感后果可能是登录后进不去桌面一直停在黑屏或者转圈。这种情况新手基本只能重装。所以虚拟机装之前点一下 VMware/VirtualBox 的拍摄快照出问题 10 秒回滚。物理机双系统装之前用 Timeshift 做一次系统快照或者至少把/etc/environment备份到 U 盘。远程服务器如果你是通过 SSH 连的机器改环境变量前先开两个 SSH 会话一个用来改另一个留着救场。改砸了至少还有个活着的连接能把文件改回去。这一步花 2 分钟能省你两小时。2.4 语言包和字体该装的别省sudo apt install language-pack-zh-hans language-pack-gnome-zh-hans fonts-noto-cjk sudo locale-gen zh_CN.UTF-8 sudo update-locale LANGzh_CN.UTF-8fonts-noto-cjk是重点很多人打完中文发现是方块或者歪歪扭扭的点阵字就是因为它没装。Noto CJK 覆盖了简繁日韩体积大概 200MB 左右值得。update-locale之后需要注销重进才生效。如果你不想整个系统界面变中文有些同学习惯英文界面也可以只保留LANGen_US.UTF-8另外设LC_CTYPEzh_CN.UTF-8这样界面英文但中文显示和输入都正常算是一个折中方案。3. 方案一IBus 智能拼音官方源最省心3.1 安装命令与引擎选型IBus 是 Ubuntu GNOME 桌面的默认框架跟系统集成度最高出问题的概率最低。安装就一行sudo apt update sudo apt install ibus ibus-libpinyin引擎的选择值得展开说说Ubuntu 源里有好几个可选包名引擎特点推荐场景ibus-libpinyin智能拼音词库大、支持简拼、整句输入默认首选ibus-pinyin老拼音已多年不更新不建议ibus-sunpinyinSun 拼音轻量、启动快老机器ibus-table-wubi五笔需要额外装码表五笔用户实测下来ibus-libpinyin是最平衡的选择简拼比如打bjdx出北京大学和模糊音zh/z、ch/c 不分都能在设置里打开对南方口音用户很友好。ibus-sunpinyin在老笔记本上启动更快但词库明显弱一档。3.2 用 im-config 把框架定下来系统里同时装了 IBus 和 Fcitx 的时候到底用哪个是由im-config决定的im-config -n ibus这条命令会在你的家目录下写一个~/.xinputrc内容是run_im ibus。如果你之前装过 Fcitx这一步就是关键的改朝换代操作不做的话环境变量和实际运行的框架会打架症状是输入法图标显示正常但打字没反应。im-config不带参数运行会弹出一个文本界面新手用图形版更直观im-config -n ibus就够了。改完之后注销重新登录不是重启终端是注销整个图形会话。3.3 在 GNOME 设置里加输入源这一步是图形操作但入口经常变Ubuntu 22.04设置 → 键盘 → 输入源 → 加号 → 汉语中国→ 智能拼音Ubuntu 24.04设置 → 键盘 → 输入源 → 加号 → 汉语中国→ 智能拼音两个版本菜单名字一样但 24.04 的输入源列表改成了横向排列的按钮加号在最下面或者右上角找一下就有了。加完之后建议顺手改一下切换快捷键默认是SuperSpace但很多人习惯CtrlSpace。注意CtrlSpace在 IDE尤其是 IntelliJ 系列和 VS Code里是代码补全的快捷键两者会冲突。我的做法是输入法保留SuperSpace只在被截获的软件里单独改 IDE 的快捷键这样最不容易乱。3.4 环境变量写在哪、写什么、别写错图形界面配完了但终端里跑的一些程序比如 Matplotlib 弹窗、Qt 写的 GUI 工具不会自动走 IBus需要靠环境变量告诉它们。标准的四个变量是export GTK_IM_MODULEibus export QT_IM_MODULEibus export XMODIFIERSimibus export CLUTTER_IM_MODULEibus写在哪里有讲究。~/.profile只对当前用户的一次图形登录生效/etc/environment是系统级、对所有用户生效。如果你是个人电脑写~/.profile就够了改坏了也容易恢复如果是多人共用的机器写/etc/environment。注意/etc/environment不是 shell 脚本不能写export也不能用$HOME这种变量一行一个KEYvalue就完事。写了export会导致整个 PAM 环境解析失败直接进不去图形界面——这就是前面让你打快照的原因。改完之后用im-config -n ibus其实已经会自动帮你处理一部分变量但手动确认一遍更保险。3.5 验证是否真的跑起来了注销重进之后终端里敲ibus version ibus engineibus engine应该输出libpinyin或者你启用的引擎名。如果输出xkb:us::eng说明输入源没加成功回到第 3.3 步重来。如果提示IBus daemon is not running手动起一个看看报什么错ibus-daemon -drx-d是后台运行-r是替换已有进程-x是启动 XIM 支持。这三个参数组合几乎是排查 IBus 问题的万能钥匙出什么怪事都先执行一遍再说。4. 方案二Fcitx5 中文引擎词库和自定义更舒服4.1 组件装齐一个都别少Fcitx5 是 Fcitx 的完全重写版本性能和 Wayland 支持都比一代好太多。安装包比较多但每一个都有明确用途sudo apt install fcitx5 \ fcitx5-chinese-addons \ fcitx5-frontend-gtk3 \ fcitx5-frontend-gtk4 \ fcitx5-frontend-qt5 \ fcitx5-config-qt逐个解释fcitx5是主程序fcitx5-chinese-addons里包含了拼音、双拼、五笔、仓颉等一堆中文引擎装一个顶一堆三个frontend包分别对应 GTK3、GTK4、Qt5 应用fcitx5-config-qt是图形配置工具没有它你就得手改配置文件。如果你的系统里有 Qt6 程序Ubuntu 24.04 上越来越多再加一个fcitx5-frontend-qt6。想要云拼音联想就加fcitx5-module-cloudpinyin不过这个包在某些版本上和主程序版本有依赖冲突装不上不用强求本地词库其实够用。4.2 环境变量Fcitx5 版本的关键差异export GTK_IM_MODULEfcitx export QT_IM_MODULEfcitx export XMODIFIERSimfcitx export SDL_IM_MODULEfcitx export GLFW_IM_MODULEibus最后两行值得单独说。SDL_IM_MODULE是给基于 SDL 的程序用的典型代表就是Steam 和一堆游戏——你在 Steam 里打不出中文八成就是缺了这一行。GLFW_IM_MODULEibus则是个历史遗留GLFW 库很多 OpenGL 程序用它只支持 IBus 协议所以这里必须写ibus而不是fcitx让 Fcitx5 通过兼容层去接。这个值是反直觉的很多人看到就觉得是笔误删掉了结果某些图形程序就是打不出字。在 Wayland 会话下还有个细节Fcitx5 5.1 之后可以原生走 Wayland 的text-input协议这时候不应该设置GTK_IM_MODULE设了反而会让部分 GTK4 程序出问题。我的实测做法是Wayland 下先不设GTK_IM_MODULE看看常用软件是否正常如果发现某个 Electron 应用打不出中文再针对性地补上。这个没有一刀切的答案取决于你的软件组合。4.3 拼音配置、词库导入和皮肤配置工具打开方式fcitx5-configtool界面分三块左边是输入法中间是全局选项右边是附加组件。点左下角加号取消勾选只显示当前语言搜pinyin添加。建议同时加上键盘-英语(US)方便快速切回英文。拼音引擎的行为在附加组件 → 拼音里调。几个我必改的项模糊音zh/z、ch/c、sh/s、n/l 全开南方人打字速度能提升一大截。云拼音如果装了模块可以开启没装就关掉省得它一直尝试联网。候选词数量默认 5 个改成 7 到 9 个效率更高反正候选框够宽。第二、三候选键改成;和可以不用按数字键就能选词。词库导入是这个方案最大的优势。Fcitx5 支持导入纯文本词库格式就是每行一个词深度学习 卷积神经网络 梯度下降把文件放到~/.local/share/fcitx5/pinyin/dictionaries/没有目录就自己建然后在配置工具里重新加载拼音引擎新词就进去了。我从旧电脑迁移过来的专业词汇、公司内部术语、同事名字用这一招一次性带走比一个个手动加词快得多。皮肤方面Ubuntu 源里有fcitx5-material-color装完之后在附加组件 → 经典用户界面 → 主题里选能改成 Material 风格。虽然是个锦上添花的功能但候选框天天在眼前晃舒服点心情确实不一样。4.4 第三方 deb 包的坑说清楚网上教程里提到最多的第三方输入法就是搜狗输入法的 Linux 版。这里必须给你提个醒它的 deb 包依赖的是 Fcitx 一代不是 Fcitx5。在 Ubuntu 24.04 上装它apt 会尝试卸载你的 Fcitx5 或者报一堆依赖冲突。正确姿势是用sudo apt install ./sogou*.deb带./前缀让 apt 自动解决依赖而不是sudo dpkg -i。后者不解决依赖装完就是个装上了但跑不起来的状态。即使装上了它在 Wayland 下的候选框跟随、在 GTK4 程序里的兼容性都不太理想。我的建议是新系统直接用 Fcitx5 自带的拼音配置成本低、维护成本几乎为零实在对某个特定词库有执念再考虑导入它的词库文本而不是装整个客户端。5. 虚拟机、双系统、远程这些场景怎么处理5.1 VMware / VirtualBox快捷键被宿主机截胡在虚拟机里配输入法最典型的症状是设置里一切正常但按快捷键就是没反应。原因通常不在虚拟机里而在宿主机CtrlSpace、SuperSpace这类组合键被宿主系统先截获了压根没传进虚拟机。VMware 里解决方法是改虚拟机设置里的热键或者干脆把宿主机的输入法切换键改成别的两边错开。VirtualBox 则是检查输入 → 键盘里的自动捕获键盘选项以及是否装了增强功能包Guest Additions——没装增强功能剪贴板共享、分辨率自适应、键盘捕获全都会出问题。还有一个显示相关的坑虚拟机的 3D 加速如果用的是软件渲染候选框可能出现闪烁、残影、位置偏移。关掉虚拟机的 3D 加速改用软件渲染反而更干净代价是动画效果差一点。5.2 双系统时间错乱和分区只读Windows Ubuntu 双系统用户会遇到两个跟输入法看似无关、实际很烦的问题。一是时间错乱。Windows 默认把硬件时钟当本地时间读Ubuntu 默认当 UTC 读切来切去时间就飘了。时间飘了会导致 HTTPS 证书校验失败apt update报错你连输入法包都下不下来。解决办法是在 Ubuntu 里执行timedatectl set-local-rtc 1 --adjust-system-clock或者在 Windows 注册表里把RealTimeIsUniversal设成 1二选一。二是Windows 快速启动导致 NTFS 分区只读。Windows 的快速启动不是休眠是另一个开关会让分区处于未完全卸载状态Ubuntu 挂载时会变成只读你在共享分区里的文件改不了。关掉 Windows 的快速启动就行控制面板 → 电源选项 → 选择电源按钮的功能 → 更改当前不可用的设置 → 取消勾选启用快速启动。5.3 SSH 远程和纯命令行环境这里要说清一个概念中文输入法只在图形会话里有意义。你 SSH 连上一台没有桌面环境的服务器终端里能不能显示中文、能不能输入中文取决于的是 locale 和终端模拟器本身跟 IBus、Fcitx 一点关系都没有。如果你的服务器上中文显示成乱码检查这几项locale # 看 LANG 和 LC_ALL locale -a | grep zh # 看有没有生成 zh_CN.UTF-8没生成就sudo locale-gen zh_CN.UTF-8。至于在 SSH 里输入中文本地的终端模拟器GNOME Terminal、Windows Terminal、iTerm2会把输入好的字符编码后发过去服务器端只负责接收所以本地输入法配好就行。如果你在服务器上跑了带 GUI 的程序比如 Jupyter、Matplotlib 弹窗想通过 X11 转发显示到本地那输入法走的是本地的服务器上不用装任何输入法。这一点经常被搞反白折腾半天。5.4 容器和开发板能省则省Docker 容器里跑 GUI 程序标准做法是挂载 X11 socketdocker run -it \ -e DISPLAY$DISPLAY \ -v /tmp/.X11-unix:/tmp/.X11-unix \ your-image输入法这时候走的是宿主机的框架容器里什么都不用装。但要注意容器里如果没有对应的fcitx5-frontend-gtk3之类的库程序会找不到输入法模块表现就是容器里的程序打不出中文。解决办法要么在镜像里装前端包要么接受容器里只跑代码、不写中文注释。至于开发板、树莓派这类硬件资源有限的设备跑完整桌面环境本身就吃力再挂一个 Fcitx5 会更卡。这类场景我的建议是能用 SSH 就用 SSH实在需要图形界面就用 IBus sunpinyin 这种轻量组合别上重型方案。6. 输入法出问题时的排查顺序与速查表6.1 一张表把常见故障定位到具体层排查输入法问题的效率取决于你能不能快速判断坏在哪一层。下面这张表是我自己攒的按现象查就能定位现象最可能的原因处理方式完全打不出中文图标也没有框架没启动 / im-config 配错im-config -n ibus后注销重进图标在但按键无反应引擎没装 / 输入源没加装ibus-libpinyin设置里加输入源只有某个软件打不出缺对应前端包装fcitx5-frontend-gtk3/qt5候选框固定在屏幕左上角Wayland 下用了不支持的框架换 Fcitx5 或切到 X11 会话中文显示成方块缺 CJK 字体apt install fonts-noto-cjk切换快捷键没反应被 IDE 或宿主机截获改输入法快捷键或改软件快捷键输入源列表里出现重复项GNOME 配置缓存残留见 6.3重启后配置全部失效环境变量写在临时会话里写进~/.profile或/etc/environment6.2 候选框不跟随光标先确认显示协议这是我被问得最多的一个问题。判断路径很清晰第一步echo $XDG_SESSION_TYPE。如果是wayland且你用的是 Fcitx4 或很老的 IBus基本可以确诊换 Fcitx5 或切 X11。第二步如果已经是 Fcitx5 还这样检查是不是没装对应工具包的前端。GTK3 程序用一个前端Qt 程序用另一个缺哪个哪个就不跟随。有个小技巧在终端里启动该程序观察输出里有没有Failed to load module之类的字样Linux 程序对这类错误其实相当诚实。第三步切换 X11 会话验证。在登录界面点右下角的齿轮图标选Ubuntu on Xorg。如果切过去就正常了说明是纯 Wayland 兼容性问题这时候你要做的选择是享受 Wayland 还是享受输入法两者暂时不能完全兼得。提示X11 下有些新硬件比如部分 AMD 显卡会有屏幕撕裂可以在驱动设置里开 TearFree。这是取舍没有完美解。6.3 输入源列表重复、图标出现两个ubuntu 中文输入法在文件管理器重复这个搜索词我见过不少次症状是左上角显示两个输入法状态图标或者设置里同一个输入源列了两遍。原因有两个一是 GNOME 的输入源配置存在 dconf 里和 IBus 自己的配置不同步二是之前装过 Fcitx 又卸了残留的配置还在。重置 GNOME 输入源最直接的办法是用 gsettings 强制写一遍gsettings set org.gnome.desktop.input-sources sources [(xkb,us),(ibus,libpinyin)] gsettings set org.gnome.desktop.input-sources mru-sources [(xkb,us),(ibus,libpinyin)]同时清一下 IBus 的缓存目录rm -rf ~/.cache/ibus ibus write-cache --system如果两个图标是一个 IBus 一个 Fcitx同时跑着那就得把其中一个的自启动关掉。检查启动应用程序gnome-session-properties里有没有遗留的 Fcitx 项~/.config/autostart/目录下的.desktop文件也翻一遍。两个框架共存的后果就是互相抢键盘谁抢到算谁的表现就是偶尔能用偶尔不能用非常折磨人。6.4 特定应用就是不理输入法这类问题占我遇到的输入法故障的三成左右而且很分散。按应用类型分Electron 应用VS Code、部分聊天工具、某些笔记软件走的是 Chromium 的输入处理。在 X11 下一般没问题在 Wayland 下需要程序启用ozone-platformwayland并且实现相关协议老版本可能就不支持。可以试试用--enable-featuresUseOzonePlatform --ozone-platformwayland启动参数或者干脆用 XWayland 模式跑加--ozone-platformx11。Flatpak / Snap 打包的应用是另一类重灾区。它们跑在沙箱里默认看不到宿主机的输入法模块。Flatpak 可以这样处理flatpak override --user --envGTK_IM_MODULEfcitx flatpak override --user --envQT_IM_MODULEfcitxSnap 应用相对封闭很多情况下确实无解只能等上游适配。这也是我不太推荐在主力开发机上大量用 Snap 版工具的原因之一。Java / Swing 程序老版本的 IDE、一些管理工具需要靠XMODIFIERS这个变量而且它只在 X11 下有效。如果你的 Java 程序在 Wayland 下打不出中文切 X11 是最快路径。6.5 输入法把系统搞崩了怎么救最后说个救命方案。如果你改坏了/etc/environment导致进不去桌面在登录界面按CtrlAltF3切到 TTY 字符终端用你的用户名密码登录然后sudo cp /etc/environment.bak /etc/environment # 或者手动删掉出错的那几行 sudo nano /etc/environment sudo reboot如果你事先没备份就把/etc/environment里所有跟IM_MODULE、XMODIFIERS相关的行全删掉让它回到默认状态然后重新走一遍配置流程。这也是我坚持改任何全局配置文件之前先cp一份的原因成本两秒钟收益可能是两小时。7. 用了几年之后才慢慢明白的几件事7.1 环境变量到底写在哪一层最合适关于GTK_IM_MODULE这些变量社区教程众说纷纭我按实际体验给个结论位置生效范围稳定性推荐度/etc/environment全部用户、图形会话高但改错会崩多人共用机器~/.profile当前用户图形会话高个人电脑首选~/.bashrc只有终端低GUI 程序收不到不推荐~/.pam_environment已废弃-别用.bashrc是我见过最多的误用。它只在交互式 shell 里执行GNOME 的图形程序根本不读它所以从终端启动的程序可能正常、从图标启动的就不行。这种半好半坏的状态最迷惑人一定要避开。另外~/.profile在 Ubuntu 的图形登录流程里是通过~/.xsessionrc之类的机制被读到的如果你发现写进去没生效检查一下~/.xsessionrc里有没有把它覆盖掉。7.2 什么时候该果断停止折腾说个实在的如果你在某个特定软件里折腾输入法超过半小时还没搞定我的建议是先停下来想想投入产出比。我现在的判断标准是输入法的主要使用场景在大脑里过一遍。如果你 90% 的中文输入发生在浏览器、终端、代码编辑器里那这三处能用就够本了剩下那个偶尔用的老工具打不出中文用剪贴板绕过去就行。反过来如果那个打不出中文的软件恰好是你的主力办公工具比如某个专用的文档系统那值得为它单独切 X11 会话甚至单独准备一台机器。还有一条经验不要为了输入法去装大版本不一致的第三方软件源。比如为了装某个输入法把系统的整条软件源换成了某个特定版本的仓库之后每次apt upgrade都是一场赌博。这个代价太大了。7.3 重装系统时的清单化习惯折腾久了你会发现真正省时间的方式不是记得住所有命令而是把命令写成脚本存起来。我自己的做法是在家目录里放一个setup-input.sh内容大致是这样#!/bin/bash set -e sudo apt update sudo apt install -y \ language-pack-zh-hans language-pack-gnome-zh-hans \ fonts-noto-cjk \ fcitx5 fcitx5-chinese-addons \ fcitx5-frontend-gtk3 fcitx5-frontend-gtk4 fcitx5-frontend-qt5 \ fcitx5-config-qt # 环境变量追加到 .profile先判断是否已存在避免重复写 grep -q GTK_IM_MODULE ~/.profile || cat ~/.profile EOF export GTK_IM_MODULEfcitx export QT_IM_MODULEfcitx export XMODIFIERSimfcitx export SDL_IM_MODULEfcitx export GLFW_IM_MODULEibus EOF im-config -n fcitx5 echo 配置完成请注销重新登录grep -q ... || cat ...这个写法是重点先判断再写入避免反复执行脚本导致环境变量被追加几十遍。同一个变量重复设置虽然不致命但会给排查问题时增加噪音而且~/.profile会越滚越长。脚本里的set -e也值得加它让脚本在任何一个命令失败时立刻停止。输入法配置最怕的就是装了一半继续往下跑最后得到一个四不像的状态还得从头清一遍。配合这个脚本我还会准备一个setup-input.md记录当前这台机器上验证过的软件组合和特殊处理项比如这台机器上 VS Code 需要单独设--ozone-platformx11。重装的时候照着跑一遍加三分钟手动配置比重新搜教程快得多。我在实际使用中最大的体会是输入法这东西配好之后你就完全忘了它的存在配不好则每天都在提醒你它的存在。所以别嫌前面那些环境检查、备份、写脚本的步骤啰嗦它们的作用不是让配置过程变快而是让这个过程只发生一次。我自己的主力机从 20.04 一路升到 24.04中间换过三次硬件、重装过无数次系统靠的就是这套脚本加清单的做法每次重新上手的时间从最初的两个小时压到了现在的五分钟以内。另一个小经验是如果你同时用着几台 Ubuntu 机器尽量把它们配成同一套框架和同一套快捷键肌肉记忆统一了切换机器的时候才不会莫名其妙在别人的屏幕上敲出拼音。
返回列表