TIL = Today I learned

2024-11-06 给 Emacs 打 Patch#

来源: Telegram 群组 “Emacs_CN Lite 轻聊版” @Lucius_Chen

/opt/homebrew/Library/Taps/d12frosted/homebrew-emacs-plus/Formula/ 下的 [email protected] 文件需要修改 Path 栏的 local_pathcommit

如果需要打 patch,可以将 patch 文件放在: /opt/homebrew/Library/Taps/d12frosted/homebrew-emacs-plus/patches/emacs-31


2024-11-05 Vim 命令 - Scroll & Move#

Scroll#

  • 滚动一页: C-f / C-b
  • 滚动半页: C-d / C-u
  • 滚动一行: C-e / C-y

以词定位#

  • 下一个单词的开头: w / WW 更加直接)
  • 当前单词的末尾: e / E
  • 上一个单词的开头: b / B

以行定位#

  • 去到行首: 0
  • 去到行尾: $
  • 去到第一个非空字符: ^
  • 去到最后一个非空字符: g_

以屏定位#

  • 去到当前屏幕中的第一行: H
  • 去到当前屏幕的中间一行: M
  • 去到当前屏幕的最后一行: L

2024-10-27 解决一个神出鬼没的 Bug#

一句话说明问题#

升级 org-zettel-ref-mode 的数据库格式导致加载数据库的函数无法读取正确的数据库,结果引发内存错误链。报错信息仅显示 “let*: End of file during parsing”,未提供具体细节。

辛苦的过程#

  1. 起初以为是代码括号匹配问题,检查后无果。
  2. Emacs 群中请教后仍未找到问题。
  3. 尝试将所有 let* 改为 let,但问题依旧。

灵光一闪#

总结经验后怀疑是别处问题。直接运行导致报错的函数,终于获得详细的错误报告,从而顺利解决问题。

问题分析#

关键错误:

  • read 函数失败返回 nil
  • 后续试图从 nil 中获取 :entries,导致问题传递。

调用链分析:

  1. org-zettel-ref-db-load()
  2. 内部 let* 执行失败,触发错误。

2024-10-20 让大陆用户顺利访问部署在 Vercel 上的网站程序#

在域名服务商的 DNS 记录中使用: cname-china.vercel-dns.com


2024-10-17 使用 Emacs 的 Register 方便工作#

观看视频 Emacs: Store anything with registers and bookmarks 后,更清楚 Register 的作用。

Register 的特点#

  • 临时保存:
    • 光标位置
    • 窗口布局
    • 文件(需自定义命令)
  • 内容会随 Emacs 重启或被覆盖而丢失。
  • 快速覆盖机制适合处理临时性任务。

Register 与 Bookmark 的结合#

Register 适合临时任务,Bookmark 可用于长期保存,高效结合使用能提升工作效率。


2024-10-16 不移动光标的情况下滚动行#

Emacs 内置了两个命令:

  • scroll-up-line
  • scroll-down-line

2024-10-07 软件工程的性能测试#

所有软件工程都应通过 Profiler 测试性能。Emacs 中可以通过以下命令实现:

  • 启动性能测试: M-x profiler-start
    • 选择 CPU 消耗、内存消耗,或 CPU+内存消耗。