~cytrogen/.emacs.d

个人的 Emacs 配置文件。
e2b51cc0 — Cytrogen a month ago
chore: 更新 gitignore 和数据文件
6b04fb82 — Cytrogen a month ago
docs: 添加配置功能介绍文档
f8d92bae — Cytrogen a month ago
feat(dictionary): 添加 sdcv 离线词典和 GoldenDict 集成

refs

main
browse  log 

clone

read-only
https://git.cytrogen.icu/~cytrogen/.emacs.d
read/write
ssh://git@git.cytrogen.icu:22222/~cytrogen/.emacs.d

You can also use your local clone with git send-email.

#Cytrogen's Emacs Configuration

模块化的 Emacs 配置,面向中文写作、博客发布、阅读和日常开发。

Emacs 28.1+ | Darcula 主题

#模块概览

模块说明
core-settings.el编码、包管理、补全框架、内置功能增强
ui-theme-fonts.el字体(中英文/Emoji/Nerd Icons)、主题、视觉
keybindings.el全局快捷键(70+ 绑定)
utils.elDashboard、文件工具函数
pkg-org.elOrg-mode:动态 Capture/Refile、Agenda
pkg-blog.el博客工作流:月刊、Hexo/Gemini 导出
pkg-writing.el写作工具:Hugo 导出、自定义链接类型
pkg-dev.el开发:LSP、Tree-sitter、终端、代码工具
pkg-git.elGit:Magit、diff-hl、timemachine
pkg-email.el邮件:mu4e 多账户、OAuth2
pkg-reading.el阅读:RSS、OPDS 电子书、PDF/EPUB
pkg-social.el社交:Mastodon、GPG 加密
pkg-calendar.el日历:Google Calendar 双向同步
pkg-dictionary.el词典:sdcv 离线查词、GoldenDict

#核心功能

#补全框架

使用现代补全栈:

  • vertico — 垂直补全界面
  • orderless — 模糊/乱序匹配
  • consult — 增强搜索:buffer 切换、ripgrep、大纲跳转
  • embark — 对补全候选执行上下文操作
  • marginalia — 补全候选旁显示元信息
  • corfu — 行内补全弹窗 + 文档预览

#中文字体支持

精细控制中英文字体分离,确保代码和写作场景各有最佳字体:

场景英文中文
代码/默认JetBrains Mono思源黑体
写作(变宽)Source Serif 4思源宋体
标题Open SansNoto Sans SC
图标Symbols Nerd Font
EmojiNoto Color Emoji

Org-mode 中代码块、表格、属性强制等宽,正文使用衬线体。

#视觉增强

  • dimmer — 非活动窗口变暗(30%)
  • page-break-lines^L 显示为水平分隔线
  • centered-cursor-mode — 光标始终居中
  • default-text-scaleC-M- / C-M--= 全局缩放字号

#博客工作流

完整的 Capture → Refile → Export 博客发布流程。

#月刊系统

  • C-c b c 创建当月月刊文件,使用中国传统历法命名(天干地支 + 月份)
  • C-c b o 打开当月月刊
  • C-c b r 将 inbox 条目转入月刊
  • C-c b i 批量转入所有 inbox 条目

#多格式导出

  • C-c b e 导出月刊为 Hexo Markdown(含目录生成)
  • C-c b p 导出单篇文章
  • C-c b g 导出为 Gemini 协议格式(.gmi
  • C-c b G 生成 Gemini Capsule 首页索引

支持 Hexo 块标签({% note %}{% em %})和自定义链接类型:

  • [[em:着重内容]] → 着重号(导出为 {% em %}
  • [[ruby:注音|文字]] → Ruby 注音标记

#Webmention

发布文章后通知被引用的站点(W3C 标准):

  • C-c b w 发现目标并打开 staging buffer
  • C-c b W 直接发送(指定 source 和 target)
  • C-c b h 查看发送历史

独立包:webmention.el

#Org-mode 增强

#动态 Capture/Refile 系统

Capture 模板和 Refile 目标由 org-structure.org 数据驱动,无需修改 elisp 代码即可增减分类:

  • 一级标题定义分类(FILE + KEY 属性)
  • 二级标题定义子项(HEADLINE TEMPLATE KEY
  • 支持 datetree 目标和自定义模板

C-c w 提供两步快速 Refile:先选分类,再选目标。

#自定义 Agenda 视图

  • r 前缀:阅读列表(想读 在读 已读)
  • i 前缀:收件箱条目
  • Agenda 操作:S 开始阅读、F 完成阅读

#中文支持

启用 CJK 内联标记(着重号、粗体等无需前后空格)。

#开发工具

#LSP + Tree-sitter

  • eglot(内置):自动检测已安装的 LSP 服务器
    • JavaScript/TypeScript: typescript-language-server
    • Python: pylsp
    • CSS/HTML: vscode-css/html-language-server
  • tree-sitter(内置):语法树精确高亮(level 4),自动 remap 到 -ts-mode

#终端

eat 终端模拟器,适配 Darcula 主题 ANSI 调色板(16 色)。C-c t 启动。

#代码编辑

  • symbol-overlayM-i 高亮当前符号所有出现
  • multiple-cursorsC-c n 前缀多光标编辑
  • move-dupM-S-↑/↓ 移动行,C-c p d/u 复制行
  • origamiC-c z/Z 代码折叠
  • avyM-j 快速跳转到任意字符

#Git

  • magitC-x p m 打开项目 Git 状态
  • diff-hl — 边栏显示增删改标记
  • git-timemachine — 逐版本浏览文件历史
  • ibuffer-vcC-x C-b 按 VC 项目分组 buffer

#阅读与信息获取

#RSS

elfeed + elfeed-protocol 连接 FreshRSS(Fever API)。C-c f 启动。

#OPDS 电子书浏览器

内置 OPDS 客户端,浏览 Calibre Content Server 书库:

  • C-c l 打开 OPDS 浏览器
  • 支持搜索、下载、直接在 Emacs 中打开 EPUB/PDF

#PDF / EPUB

  • pdf-tools — PDF 阅读(支持页码偏移)
  • nov — EPUB 阅读(olivetti 居中 + 变宽字体)

#URL 阅读模式

url-handler-mode 启用后可直接 C-x C-f 打开 URL,自动进入阅读模式(olivetti 居中 + 变宽字体)。

#通信

#邮件

mu4e 多账户配置,支持 OAuth2(Google):

  • C-c e 启动邮件客户端
  • 账户配置从外部文件 email-accounts.el 加载
  • OAuth token 使用 GPG 加密存储

#社交

mastodon.el 客户端:

  • C-c m 启动 Mastodon
  • GPG 加密凭据存储
  • Nerd Icons 美化界面

#日历

org-gcal + calfw 实现 Google Calendar 双向同步:

  • C-c g 打开可视化日历
  • C-c G 强制同步
  • OAuth 凭据从外部文件 calendar-secrets.el 加载

#工具

#离线词典

  • sdcv(StarDict)— C-c k 快速查词(浮窗)、C-c K 详细查词(buffer)
  • GoldenDict — C-c d 光标处查词、C-c D 手动输入查词
  • 自动扫描 ~/.stardict/dic/ 下的词典文件

#学习模式

禁用方向键、Delete 键和鼠标,强制使用 Emacs 原生快捷键:

  • 方向键 → 提示使用 C-p/C-n/C-b/C-f
  • Delete → 提示使用 C-d/M-d/C-k
  • C-c h m 显示移动快捷键速查表

#快捷键速查

#Org

按键功能
C-c corg-capture
C-c aorg-agenda
C-c w快速 Refile
C-c o打开 Org 文件

#应用

按键功能
C-c mMastodon
C-c fElfeed (RSS)
C-c emu4e (邮件)
C-c EElpher (Gemini/Gopher)
C-c lOPDS 电子书浏览器
C-c tEat 终端
C-c g日历

#搜索与导航

按键功能
C-c s sconsult-line
C-c s gconsult-ripgrep
C-c s fconsult-find
C-c s oconsult-outline
C-.embark-act
M-javy-goto-char-timer

#编辑

按键功能
M-i高亮当前符号
C-c n n/p/a多光标 next/prev/all
M-S-↑/↓移动行
C-c z/Z折叠/展开
M-/hippie-expand 补全
M-Q反填充段落
M-Y浏览 kill ring

#博客

按键功能
C-c b c创建月刊
C-c b o打开当月月刊
C-c b e导出月刊 Markdown
C-c b p导出单篇文章
C-c b g导出 Gemini
C-c b wWebmention 发现
C-c b I插入博客图片

#词典

按键功能
C-c ksdcv 快速查词
C-c Ksdcv 详细查词
C-c dGoldenDict 光标查词
C-c DGoldenDict 手动输入

#配置

按键功能
C-c i打开 init.el
C-c r重新加载配置

#安装

git clone <repo-url> ~/.emacs.d

首次启动时会提示设置:

  1. Org 文件目录路径
  2. 博客源文件/导出目录
  3. 邮件、日历等凭据(如需使用)

外部依赖:

  • 字体:JetBrains Mono、Source Serif 4、思源黑体/宋体、Noto Color Emoji、Symbols Nerd Font
  • 工具:ripgrep(搜索)、mu(邮件索引)、msmtp(邮件发送)、aspell(拼写检查)
  • LSP 服务器(可选):typescript-language-serverpylspvscode-css-language-server

#致谢

许多包选择和配置参考了 Steve Purcell 的 emacs.d

#许可证

个人配置,自由使用。