谢谢!
还得在终端启动 fcitx
fcitx&
正好我也遇到了这个问题, 采取的方案是如果通过终端直接登录, 则切换到美式英语, 否则保持不变, 起码做系统管理没问题了.
vim /etc/profile.d/lang.sh
#
# Bind language to english to defend font not found
#
consoletype=$(tty | awk '/^\/dev\/[^\/]+$/ {print "vt"}')
if [ -n "$LANG" ]; then
case $LANG in
*.utf8*|*.UTF-8*)
if [ "$TERM" = "linux" ]; then
if [ "$consoletype" = "vt" ]; then
case $LANG in
ja*) LANG=en_US.UTF-8; LANGUAGE=en_US:en ;;
ko*) LANG=en_US.UTF-8; LANGUAGE=en_US:en ;;
si*) LANG=en_US.UTF-8; LANGUAGE=en_US:en ;;
zh*) LANG=en_US.UTF-8; LANGUAGE=en_US:en ;;
ar*) LANG=en_US.UTF-8; LANGUAGE=en_US:en ;;
fa*) LANG=en_US.UTF-8; LANGUAGE=en_US:en ;;
he*) LANG=en_US.UTF-8; LANGUAGE=en_US:en ;;
en_IN*) ;;
*_IN*) LANG=en_US.UTF-8 ;;
esac
fi
fi
;;
*)
if [ "$TERM" = "linux" ]; then
if [ "$consoletype" = "vt" ]; then
case $LANG in
ja*) LANG=en_US.UTF-8; LANGUAGE=en_US:en ;;
ko*) LANG=en_US.UTF-8; LANGUAGE=en_US:en ;;
si*) LANG=en_US.UTF-8; LANGUAGE=en_US:en ;;
zh*) LANG=en_US.UTF-8; LANGUAGE=en_US:en ;;
ar*) LANG=en_US.UTF-8; LANGUAGE=en_US:en ;;
fa*) LANG=en_US.UTF-8; LANGUAGE=en_US:en ;;
he*) LANG=en_US.UTF-8; LANGUAGE=en_US:en ;;
en_IN*) ;;
*_IN*) LANG=en_US.UTF-8 ;;
esac
fi
fi
;;
esac
fi
unset consoletype
嗯, 效果就是, 从 ssh 之类的连上服务器, 用的就是中文, 直接从控制台登录, 就是英文. 平常用 xshell 的时候, 中文完美显示, 如果不小心把ssh玩坏了, 直接终端登录, 命令提示就是英文的, 不怕撞方块了.