自动更新文件中的修改时间

发布: 2021-12-28   更新: 2022-12-18   标签: tips org-mode edit

写博客多年,除了 EmacsTalk 这个网站,我还有个 Keep Coding 的个人博客。写博客的好处这里不想多说,可以参考这篇文章:

一般来说,文章发布后,后续经常会有更新,因为观点可能随着时间会变,而且也很难保证之前的内容准确无误。我看其他人的文章时,也会留意这个文章最近是不是有更新过。如果很久没更新了,那文章的参考价值将大打折扣。

对于使用 hugo 建站的文章来说,主要就是 date、lastmod 两个字段:

hugo 提供了非常方便的配置,来动态获取文件的更新时间,比如以下配置:

1
2
3
4
enableGitInfo = true

[frontmatter]
  lastmod = [':git', 'lastmod', ':fileModTime', ':default']

frontmatter 里面的 lastmod 字段表示『更新时间』的获取方式,依次为:

个人比较倾向 :git ,读者可根据自身情况调整配置顺序。

最近逛 Managing your life and work with Emacs 时发现,Emacs 默认就提供了修改文件更新时间的功能,配置如下:

1
2
3
4
5
; 在博客根目录的 .dir-locals 中添加如下代码
((org-mode . ((time-stamp-start . "#\\+LASTMOD:[ \t]*")
              (time-stamp-end . "$")
              (time-stamp-format . "%Y-%m-%dT%02H:%02M:%02S%5z")
              (eval . (add-hook 'before-save-hook 'time-stamp nil t)))))

time-stamp 函数会根据 time-stamp-start 指定的模式进行匹配,之后换成 time-stamp-format 指定的时间格式。比如配置如下:

#+TITLE: 关于
#+DATE: 2021-06-26T13:06:19+0800
#+LASTMOD: 2021-12-28T23:12:23+0800

那么在每次保存 org 时,都会自动去更新 #+LASTMOD: 的值。

其实,time-stamp 这个函数可以作用在任何文件中,定义好匹配的模式就好了,是不是很强大呢?



收听方式

反馈