全新安装最新版doom.emacs后模式行出现乱码,如何解决?
刚装完最新版Doom Emacs就碰到模式行乱码?别慌,这大概率是字体、编码配置或者模块兼容性的问题,我给你捋几个靠谱的解决步骤:
先搞定字体适配问题
模式行乱码最常见的原因就是当前用的字体不支持中文字形。先在Emacs里敲M-x describe-font看看当前激活的字体,如果是纯英文字体(比如Consolas、Fira Code),那肯定显示不了中文。
你需要在~/.doom.d/config.el里指定一款系统已安装的中文字体,比如:(setq doom-font (font-spec :family "Noto Sans CJK SC" :size 14 :weight 'normal) doom-variable-pitch-font (font-spec :family "Noto Sans CJK SC" :size 16))换成你系统里有的字体就行,比如Windows的"微软雅黑"、Mac的"PingFang SC"都可以。
强制统一UTF-8编码
编码不统一也会搞出乱码。在config.el里加上这些配置,把所有编码逻辑锁死在UTF-8:(setq locale-coding-system 'utf-8) (set-terminal-coding-system 'utf-8) (set-keyboard-coding-system 'utf-8) (set-selection-coding-system 'utf-8) (prefer-coding-system 'utf-8)另外别忘了检查系统的LANG环境变量,终端里敲
echo $LANG,如果显示的不是zh_CN.UTF-8或者en_US.UTF-8,得调整一下:Linux在~/.bashrc或~/.zshrc加export LANG=zh_CN.UTF-8,Windows可以在系统设置里把非Unicode程序的语言改成UTF-8(注意这个可能影响部分老程序)。排查Doom模块和第三方包冲突
有些Doom自带模块或者第三方包(比如all-the-icons)可能会和中文字体冲突。你可以先试试临时禁用all-the-icons:(package-disable-packages '(all-the-icons))或者调整modeline的配置,去掉可能出问题的元素:
(setq doom-modeline-major-mode-icon nil) ; 关掉主模式图标,避免图标字体和中文字体冲突 (setq doom-modeline-buffer-file-name-style 'truncate-with-project) ; 简化文件名显示逻辑改完后敲
M-x doom/reload重载配置,看看乱码是不是消失了。最后验证生效
每次改完配置一定要重启Emacs或者重载Doom配置,不然可能不生效。如果还是有问题,你可以试试备份原~/.doom.d后新建一个干净的Doom配置,排除是不是自定义配置里的其他代码搞的鬼。
内容的提问来源于stack exchange,提问作者Wizard

