请教:Doom emacs里面的“dirvish”插件怎么显示icons图标? 新手求教

如题,我看好像大家的dirvish都有花花绿绿的icon,辨识文件特别方便,但是我的dirvish却是这样的:

我下载了“nerd-icons”,并且我的主页和minibuffer都可以显示icons:

所以我想问问这是什么情况,是不是我没开启显示图标或者少做了什么?

你估计还要安装 nerd-icons-dired 这个包:

我提一点,你的 dirvish-attributes 必须包含 nerd-icons 才行,比如我的配置:

(setq dirvish-attributes '(nerd-icons file-size subtree-state))

太感谢了老师,你的回复给我了很关键的指引,当我手动 ‘set-variable’ 修改了 dirvish-attributes 变量为 nerd-icons 的时候,图标真的出现了!

我试着把他添加进 Doom-emacs 的 config.el 配置文件里,但是很奇怪,刚启动doom的时候他的变量值是正确的:

但是当我打开dirvish的时候,他变回去了:

有点神奇,好像开启 dirvish 的时候,我的改变都被重置了。

老师可不敢当 :rofl:

看来你并不是特别清楚 Doom 的配置架构。

Doom 包含了很多定制化的配置,比如对于 dired 而言,其存储在 ~/.emacs.d/modules/emacs/dired 里面,其中包含了以下配置:

(setq dirvish-attributes nil
      dirvish-use-header-line nil
      dirvish-use-mode-line nil)

(when (or (daemonp) (display-graphic-p))
  (push 'vc-state dirvish-attributes))

他们会在加载 dirvish 后执行(而非 Emacs 启动后,这是因为 Doom 的大部分配置都是 lazy load 的),这就覆盖了你自己的配置(如果你自己的配置是在 Emacs 启动后就执行了的话)。

所以你可以尝试(在你的个人配置文件中):

(after! dirvish
  (setq dirvish-attributes '(nerd-icons file-size subtree-state)))

把自己的个性化配置放在相应的包加载完毕之后再执行,可能就可以啦。