emacs-nerd-icons 一个all-the-icons的替代方案(支持GUI和terminal)

嗯这个图标大小确实是个问题。mono字体为了适应宽度这个字体的图标会比较小,这也是保证宽度一致的一个副作用吧

Windows图标乱码的话请下载最新的nerd font并确保安装到位

emacs-nerd-icons-for-mode函数的参数后可以加:face然后用您想用的face

但是这样原有的face就没有了,我希望保留原有的foreground颜色,设置background颜色 :joy:

之前使用all-the-icons时也遇到这个问题,当时是写了个函数解决的。

vim-devicons 图标也很小吗?mono如果这样的话就只能在terminal下使用了,GUI 下实用性大大下降。

Windows下我是通过scoop安装的FiraCode Nerd Mono。Windows Terminal下表现良好,Emacs GUI 就变成了乱码,很奇怪。

哦哦确实,之后可以加个inherit default什么的,感谢建议

1 个赞

不用mono的话是正常的大小,主要还是要解决为什么会有图标显示不全的问题这样就不用非要用mono了

当然用scale-factor也行,不过得把间距变大的问题解决了,感觉这个目前比较可行

这个mono大小问题算是字体本身的设置,vim-devicon用mono也会小

scoop的字体可能路径不一样,我一般Windows是把ttf什么的下载下来右键install

所以还是解决这个问题就行了,对吧? :joy:

我看这个问题存在很久了: Nerd Fonts Cut Off Characters, No Spacing, or overlapping · Issue #991 · polybar/polybar (github.com)

但似乎vim-devicons图标还是挺正常的

补充下今天Windows下的测试效果(左边是all-the-icons-dired,右边是emacs-nerd-icons-dired):

image

图标如果用mono也会很小,用非mono的基本显示正常,但是某些图标还是偏小,比如 elisp,git。猜测是为了对齐? 感觉Windows上基本可用,但是macOS下还是存在截断的情况。

配置如下:

(use-package emacs-nerd-icons
  :ensure nil
  :demand
  :config (setq emacs-nerd-icons-font-family "FiraCode NF"))

(use-package emacs-nerd-icons-dired
  :ensure nil
  :commands emacs-nerd-icons-dired-mode
  :hook (dired-mode . emacs-nerd-icons-dired-mode))

补充wsl下发现的一个问题:如果显示nerd icons,刷新有问题,显示会差一行,移动光标会把当前行刷新成最新的。GUI下没有这个问题,不知道是Windows Terminal问题还是icons包或者是Emacs本身有问题。我录了一个gif。

emacs

2 个赞

请问这个Windows的是emacs29吗?请问是您自己编译的还是release binary?

我用的是这个:GNU Emacs 30.0.50 (build 1, x86_64-w64-mingw32)。

1 个赞

关于这个刷新问题我偶尔会遇到,但是reproduce的方式不同,我是orgfile的tag会遇到这种情况,平常是正常的

edit: 我重装了一下这个包,现在也遇到这个同样的问题了 :joy:

目前试下来只有linux下的terminal没有这个问题,不知道macos的terminal有没有这个问题,如果只有windows有这个问题那得给Windows下做一些判定

MacOS iterm测试没有刷新问题,会不会跟Windows Terminal有关?

是的,windows的utf-8支持很迷,而且我用的是\u的unicode sequence,Windows原生的terminal现在好像用[char]0x,这个可能要调整一下,但是wsl可能就又不太一样了

请问可以在您渲染图标有问题的那个emacs里输入C-h v cairo-version-string来看一下是否有用cairo吗?

mark一下,回头去试一下,赞:+1::+1::+1:

没有cairo-version-string 变量

这就说得通了,你试试编译的时候加上cairo应该就能正常渲染了

我用的 d12frosted/homebrew-emacs-plus: Emacs Plus formulae for the Homebrew package manager (github.com),并没有这个option :joy:

all-the-icons都能正常渲染,nerd 必须要cairo才行?

我网上查到一些关于cairo对Unicode图标支持更好的帖子,所以认为cairo可能对这个情况有所帮助

当然我在Linux下编译一个不带cairo的emacs也没有出现图标显示的问题所以cairo不是必备条件

看来还得换个方向 :smiling_face_with_tear: 我再研究研究all-the-icons

请问可以试一下这个字体吗?我虚拟机跑新的macos老是死机 :joy: