chore: 更新 gitignore 和数据文件
docs: 添加配置功能介绍文档
feat(dictionary): 添加 sdcv 离线词典和 GoldenDict 集成
模块化的 Emacs 配置,面向中文写作、博客发布、阅读和日常开发。
Emacs 28.1+ | Darcula 主题
| 模块 | 说明 |
|---|---|
core-settings.el | 编码、包管理、补全框架、内置功能增强 |
ui-theme-fonts.el | 字体(中英文/Emoji/Nerd Icons)、主题、视觉 |
keybindings.el | 全局快捷键(70+ 绑定) |
utils.el | Dashboard、文件工具函数 |
pkg-org.el | Org-mode:动态 Capture/Refile、Agenda |
pkg-blog.el | 博客工作流:月刊、Hexo/Gemini 导出 |
pkg-writing.el | 写作工具:Hugo 导出、自定义链接类型 |
pkg-dev.el | 开发:LSP、Tree-sitter、终端、代码工具 |
pkg-git.el | Git: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 Sans | Noto Sans SC |
| 图标 | Symbols Nerd Font | — |
| Emoji | Noto Color Emoji | — |
Org-mode 中代码块、表格、属性强制等宽,正文使用衬线体。
dimmer — 非活动窗口变暗(30%)
page-break-lines — ^L 显示为水平分隔线
centered-cursor-mode — 光标始终居中
default-text-scale — C-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 注音标记
发布文章后通知被引用的站点(W3C 标准):
C-c b w 发现目标并打开 staging buffer
C-c b W 直接发送(指定 source 和 target)
C-c b h 查看发送历史
独立包:webmention.el
Capture 模板和 Refile 目标由 org-structure.org 数据驱动,无需修改 elisp 代码即可增减分类:
FILE + KEY 属性)
HEADLINE TEMPLATE KEY)
C-c w 提供两步快速 Refile:先选分类,再选目标。
r 前缀:阅读列表(想读 在读 已读)
i 前缀:收件箱条目
S 开始阅读、F 完成阅读
启用 CJK 内联标记(着重号、粗体等无需前后空格)。
eglot(内置):自动检测已安装的 LSP 服务器
typescript-language-server
pylsp
vscode-css/html-language-server
tree-sitter(内置):语法树精确高亮(level 4),自动 remap 到 -ts-mode
eat 终端模拟器,适配 Darcula 主题 ANSI 调色板(16 色)。C-c t 启动。
symbol-overlay — M-i 高亮当前符号所有出现
multiple-cursors — C-c n 前缀多光标编辑
move-dup — M-S-↑/↓ 移动行,C-c p d/u 复制行
origami — C-c z/Z 代码折叠
avy — M-j 快速跳转到任意字符
magit — C-x p m 打开项目 Git 状态
diff-hl — 边栏显示增删改标记
git-timemachine — 逐版本浏览文件历史
ibuffer-vc — C-x C-b 按 VC 项目分组 buffer
elfeed + elfeed-protocol 连接 FreshRSS(Fever API)。C-c f 启动。
内置 OPDS 客户端,浏览 Calibre Content Server 书库:
C-c l 打开 OPDS 浏览器
pdf-tools — PDF 阅读(支持页码偏移)
nov — EPUB 阅读(olivetti 居中 + 变宽字体)
url-handler-mode 启用后可直接 C-x C-f 打开 URL,自动进入阅读模式(olivetti 居中 + 变宽字体)。
mu4e 多账户配置,支持 OAuth2(Google):
C-c e 启动邮件客户端
email-accounts.el 加载
mastodon.el 客户端:
C-c m 启动 Mastodon
org-gcal + calfw 实现 Google Calendar 双向同步:
C-c g 打开可视化日历
C-c G 强制同步
calendar-secrets.el 加载
sdcv(StarDict)— C-c k 快速查词(浮窗)、C-c K 详细查词(buffer)
C-c d 光标处查词、C-c D 手动输入查词
~/.stardict/dic/ 下的词典文件
禁用方向键、Delete 键和鼠标,强制使用 Emacs 原生快捷键:
C-p/C-n/C-b/C-f
C-d/M-d/C-k
C-c h m 显示移动快捷键速查表
| 按键 | 功能 |
|---|---|
C-c c | org-capture |
C-c a | org-agenda |
C-c w | 快速 Refile |
C-c o | 打开 Org 文件 |
| 按键 | 功能 |
|---|---|
C-c m | Mastodon |
C-c f | Elfeed (RSS) |
C-c e | mu4e (邮件) |
C-c E | Elpher (Gemini/Gopher) |
C-c l | OPDS 电子书浏览器 |
C-c t | Eat 终端 |
C-c g | 日历 |
| 按键 | 功能 |
|---|---|
C-c s s | consult-line |
C-c s g | consult-ripgrep |
C-c s f | consult-find |
C-c s o | consult-outline |
C-. | embark-act |
M-j | avy-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 w | Webmention 发现 |
C-c b I | 插入博客图片 |
| 按键 | 功能 |
|---|---|
C-c k | sdcv 快速查词 |
C-c K | sdcv 详细查词 |
C-c d | GoldenDict 光标查词 |
C-c D | GoldenDict 手动输入 |
| 按键 | 功能 |
|---|---|
C-c i | 打开 init.el |
C-c r | 重新加载配置 |
git clone <repo-url> ~/.emacs.d
首次启动时会提示设置:
外部依赖:
ripgrep(搜索)、mu(邮件索引)、msmtp(邮件发送)、aspell(拼写检查)
typescript-language-server、pylsp、vscode-css-language-server
许多包选择和配置参考了 Steve Purcell 的 emacs.d。
个人配置,自由使用。