求助:如何给dirvish设置较小的字体?

我最近使用dirvish时有个小问题感觉非常不方便:字体太大显示丑陋。如何给dirvish设置较小字体?

因为项目文件较多,目录层级较深,dirvish显示时把较长较深的文件换行显示,看起来非常丑:

vscode显示文件的侧栏就使用了比编辑区更小的字体。

dirvish很好用,最近作者也回归开发了,希望越来越好。

按理说,这种界面,不应该开启折行呀。

可以关闭折行试一试:

(toggle-truncate-lines 1)

另外,改变字体,你需要看看上面用的什么 face 或 overlay:

  1. 光标定位到你想要调字体的字符上;
  2. 使用 describe-char 命令;
  3. 弹出的界面,最下面说明了该字符上的 face 或 overlay

然后就可以修改对应的 face,就可以调整字号、颜色等

有时候,字符字体没有特别设置,那就是继承的 default,而你又不想改变 default 的样式,那么可以自己新建一个 face,然后利用 hook,在这个 buffer 打开时,覆盖一下 default 的 face:

(defface test '() "new face")
(set-face-attribute 'test nil :height 150)
;; add to hook
(face-remap-add-relative 'default 'test)
;; Doom Emacs, for `solaire-mode' is enable in special buffer
(face-remap-add-relative 'solaire-default-face 'test)
2 个赞

直接hook一下text-scale-decrease?text-scale-FOO应该都只对当前buffer生效的

1 个赞

确实呀!如果只改变字号的话,用 text-scale-decrease 更直接方便。

可以使用根据模式来设置字体,height就是设置字体的大小

(defun my-set-font-for-mode ()
  (cond
   ((derived-mode-p 'dired-mode)
    (setq-local face-remapping-alist '((default (:family "M PLUS Code Latin 50" :height 180) default))))
   ((derived-mode-p 'vterm-mode)
    (setq-local face-remapping-alist '((default (:family "Kode Mono" :height 160) default))))
   ))