2025年7月13日

WSL GUI 中文输入法踩坑实录:我最终选了 Sunpinyin



用 WSL 跑 GUI 程序时,中文输入法一直是个老大难问题。我前前后后折腾了三个晚上,试过 ibus、fcitx,装过搜狗、Rime,最后发现 Sunpinyin 配起来最省心。这篇文章记录我踩过的坑和最终的解决方案。

先搞清楚输入法的工作机制

WSL GUI(WSLg)的图形显示已经内置了,但输入法得自己配。Linux 下的输入法分两层:输入法框架(比如 fcitx、ibus)负责管理,输入法引擎(比如 Sunpinyin、搜狗、Rime)负责实际输入。

我踩过的坑主要集中在这几个地方:

  • 多个框架打架:我一开始 ibus 和 fcitx 都装了,结果谁也不干活
  • 快捷键被 Windows 抢了:按 Ctrl+Space 弹出的是 Windows 输入法
  • 语言环境没配全:输入法莫名其妙罢工,重启也没用
  • 引擎没启用:框架装了,但没把 Sunpinyin 加进去

直接用 fcitx,别跟 ibus 纠缠

我一开始试了 ibus,配了半天发现和 fcitx 冲突。后来干脆把 ibus 删了,只留 fcitx:

Terminal window
sudo apt purge ibus
sudo apt autoremove

然后装 fcitx:

Terminal window
sudo apt update
sudo apt install fcitx dbus-x11 im-config -y

装完设成默认:

Terminal window
im-config -n fcitx

关键是环境变量,不然图形程序认不出 fcitx。我在 ~/.profile 里加了这几行:

Terminal window
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
fcitx-autostart &>/dev/null

注意:别把这些写进 /etc/environment/etc/locale.gen,我就踩过这个坑,后面 dpkg-reconfigure locales 直接报错。

Sunpinyin:简单够用

Sunpinyin 没搜狗那么多功能,也没 Rime 那么复杂,但配起来快。我就是想打个字,不想折腾 YAML 配置文件。

装 Sunpinyin:

Terminal window
sudo apt install fcitx-sunpinyin sunpinyin-utils -y

然后运行 fcitx-configtool,点左下角 + 号,取消勾选 “Only Show Current Language”(这个我找了十分钟才发现),搜索 “Sunpinyin” 添加进去。

我用双拼,所以又跑了 sunpinyin-config,在 “Pinyin mode” 里选 “ShuangPin”,“Shuangpin scheme” 选了 MSPY(微软双拼)。

快捷键冲突:Windows 抢了 Ctrl+Space

我配完之后兴冲冲打开 VSCode,结果按 Ctrl+Space 还是 Windows 输入法蹦出来。试了十几次都不行,后来才意识到 Windows 把这个快捷键拦截了。

解决办法:改 fcitx 的切换快捷键。运行 fcitx-configtool,切到 “Global Config”,点 “Trigger Input Method”,我改成了 Ctrl+Shift。

还有个坑:切到 Sunpinyin 之后只能打英文。这是因为 Sunpinyin 默认是英文模式,按一下左边的 Shift 键就能切到中文模式。我一开始不知道,以为又哪里没配对。

语言环境得配全

我遇到过输入法装好了、快捷键也改了,但还是用不了的情况。后来发现是语言包没装全:

Terminal window
sudo apt install language-pack-zh-hans -y
sudo locale-gen zh_CN.UTF-8

检查 /etc/default/locale 文件,确保有这两行:

LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN:zh:en_US:en"

我之前运行 dpkg-reconfigure locales 报了个莫名其妙的错。查了半天发现是我手贱,把 fcitx 的环境变量写进了 /etc/locale.gen,这文件根本不该放这些东西。删掉那几行就好了。

改完配置记得彻底重启 WSL

配置文件改完后,重开终端可能不够,得彻底关 WSL。我一般在 Windows PowerShell 里跑:

Terminal window
wsl --shutdown

然后重开 WSL 和图形程序。

搜狗和 Rime:我为什么没选它们

搜狗:得从官网下 .deb 包,装完还得 sudo apt --fix-broken install 修依赖。我试了一次,能用,但感觉没比 Sunpinyin 好到哪里去,懒得折腾了。

Rime:功能确实强大,但配置文件是 YAML 格式,我看了一眼就头大了。光是搞懂它的部署机制就花了一个小时,最后还是放弃了,觉得 Sunpinyin 够用就行。如果你跟我一样不想折腾 YAML,直接跳过 Rime 吧。

写在最后

折腾了这么久,我的经验是:先搞清楚输入法框架(fcitx/ibus)和输入法引擎(Sunpinyin/Rime)是两回事,然后盯紧快捷键冲突和语言环境配置。如果你不想踩我踩过的坑,直接装 fcitx + Sunpinyin,改个快捷键,十分钟搞定。