ryanoasis/nerd-fonts · 上手攻略

  • 仓库:ryanoasis/nerd-fonts
  • 链接:https://github.com/ryanoasis/nerd-fonts
  • 分类:skill(开发者工具 / 终端环境)
  • 作者:spark
  • 更新:2026-07-14

是什么

ryanoasis/nerd-fonts 是把 Nerd Fonts 项目聚合起来的图标字体仓库:50+ 已修补(patched)开源等宽字体 × 3 600+ 额外字形。来自 Font Awesome、Material Design Icons、Devicons、Octicons、Powerline Extra Symbols、Font Logos 等图标库全部拼到一块儿,覆盖 10 000+ 字形。MIT 协议。

Nerd Fonts 的核心不是新造字体,而是用 FontForge Python 脚本给现成的开发者字体(Hack、Fira Code、JetBrains Mono、Iosevka、Cascadia Code、Source Code Pro、Geist Mono、Commit Mono、Rec Mono、Monaspace、Intel One Mono…)打补丁,把私有 PUA 区里塞满图标字形,让终端提示符、tmux / vim / nvim / VS Code、starship / p10k / oh-my-posh 状态栏能稳定地显示箭头、git 分支、电源符号、电池格、Python 蛇、AWS 图标等。

解决什么问题

  • 终端 / 编辑器里看 tmux、vim 状态栏和 ls 增强工具(eza、lsd、delta)想用真实图标。
  • 想让每台机器、每个 shell、每个 IDE 用同一套字形。
  • 想换字体又不想自己跑 FontForge 打补丁——67 个现成等宽字体已经打好。

快速安装

README 列了 10 种安装方式,下面按"日常用得最多"排序。

macOS(Homebrew Cask,强烈推荐)

brew tap homebrew/cask-fonts
# 装一个
brew install --cask font-jetbrains-mono-nerd-font
# 或者一键装所有 nerd 字体
brew search '/font-.*-nerd-font/' | awk '{ print $1 }' | xargs -I{} brew install --cask {}

完事到 Terminal.app / iTerm2 / WezTerm / Alacritty 里把字体设为 "JetBrainsMono Nerd Font Mono" 即可。

Windows(Chocolatey / Scoop)

choco install nerd-fonts-jetbrainsmono
# 或者
scoop bucket add nerd-fonts
scoop install nerd-fonts/JetBrainsMono-NF

记得在 Windows Terminal 偏好 → 外观 → 字体面 里改。

Arch Linux

sudo pacman -S nerd-fonts           # 装所有(占空间大)
sudo pacman -S ttf-jetbrains-mono-nerd   # 装单个
yay -S nerd-fonts-jetbrains-mono        # AUR 备选

通用 PowerShell 跨平台脚本

irm https://raw.githubusercontent.com/ryanoasis/nerd-fonts/master/install.ps1 | iex

裸 curl(容器 / 临时机器)

curl -sSLo /tmp/Hack.zip https://github.com/ryanoasis/nerd-fonts/releases/latest/download/Hack.zip
unzip -o /tmp/Hack.zip -d ~/.local/share/fonts
fc-cache -fv

别克隆仓库

README 第一条警告:仓库带 LFS、几十 GB,clone 只在你打算给上游贡献时才做。日常安装从 Release 拉 zip 即可。

核心用法

在终端显示图标

eza / lsd 配合 nerd 字体:

# eza
alias ls='eza --icons=always --git'
# lsd
alias ls='lsd --icon=always'

tmux / nvim 状态栏

oh-my-tmux / NvChad / LazyVim 等发行版默认要求 nerd 字体——README 在 iTerm2 截图里展示的漂亮状态栏基本都是 nerd 字体加 p10k 实现的。

Starship 提示符

# ~/.config/starship.toml
[character]
success_symbol = "[➜](bold green)"

字符 在 nerd 字体里有专属码位 U+E0B0,会显示成实心三角箭头。

字体回退(不想全装)

README Option 8 提到的 "font fallback" 思路:在系统里只装一个符号字体(如 Symbols Nerd Font Mono),其他常规字体里缺字形时自动 fallback。可以用 fontconfig 配置(Linux):

<!-- ~/.config/fontconfig/fonts.conf -->
<alias>
  <family>monospace</family>
  <prefer>
    <family>JetBrainsMono Nerd Font Mono</family>
    <family>Symbols Nerd Font Mono</family>
  </prefer>
</alias>

自己打补丁(font-patcher)

仓库根目录有 font-patcher/font-patcher.py,基于 FontForge,可以对任何字体打补丁:

git clone --depth=1 https://github.com/ryanoasis/nerd-fonts.git
cd nerd-fonts/font-patcher
python3 font-patcher.py /path/to/MyFont.ttf
# 输出 ~/Library/Fonts/NerdFonts/MyFont/ 或 ~/.local/share/fonts/NerdFonts/MyFont/

gotta-patch-em-all-font-patcher.sh 是批量打补丁脚本,给仓库里所有 patched-fonts 目录外的原字体用。

典型适用场景

  • 开发者终端:WSL、macOS、Linux 桌面都需要。
  • 演示 / 录屏:用真图标比 unicode 表情符号一致性好很多。
  • 多机器同步:dotfiles 仓库里只管装 nerd 字体 cask,配置里统一引用 JetBrainsMono Nerd Font Mono
  • CI / Docker 镜像:在 Dockerfile 里 apt install fonts-nerd-fonts-jetbrainsmono 让 GitHub Actions 日志里的图标正常显示。
  • 教学 / 课堂:把 icons cheat sheet(nerdfonts.com/cheat-sheet)打印出来,让学生查码位。

坑与注意

  1. 看不到图标但是方块:99% 是没把 IDE / 终端字体改成 Nerd Font 变体,而是用了原版(如 "JetBrains Mono" 而不是 "JetBrainsMono Nerd Font Mono")。
  2. fallback 链断:某些 GNOME 桌面 / Wayland 下需要 fc-cache -fv 强制刷新,否则新的 .ttf 不进 fontconfig 缓存。
  3. Cask 命名:Homebrew 里是 font-{basename}-nerd-font(单数带连字符),不是 nerd-fonts-…,别装错。
  4. 变体选择:Mono 用于终端 / 代码;Propo 比例字体用于普通 UI;用错会出现对齐错位。
  5. 许可证:仓库本身 MIT,但被 patch 的原字体各有协议(Hack 是 MIT、Fira Code 是 OFL、JetBrains Mono 是 OFL…),商业分发时分别确认。
  6. 大小:全部装下来 1-2 GB,磁盘吃紧的话用 fontconfig 字体回退(Option 8)。

与同类对比

工具 来源 字形量 协议 适合
Nerd Fonts 社区聚合 + FontForge patch 10 000+ MIT(多 OFL/MIT 子字体) 终端、IDE 全场景
Powerline Fonts Powerline 官方 各异 仅 Powerline 提示符
Devicons 单独图标字体 200+ MIT 纯编程语言图标
Bootstrap Icons SVG 字体 2 000+ MIT UI 页面而非终端
Apple Symbols / Segoe MDL2 Assets 系统 系统自带 系统 临时、跨平台不灵

差异化:Nerd Fonts 修了 67 个等宽字体,是 nerd-fonts 项目把"开发者字体 + 图标"两条线焊死——对手要么只给图标,要么只给字体,没有一站式。

一句话推荐结论

Nerd Fonts 是把开发者终端从"黑白"变"图标可读"的成本最低路径——一行 brew、一行字体设置,立刻解锁 eza、starship、p10k、delta 全部图标体验。