轻松使用 ox-hugo 来创建博文

细心的你可能会发现,上次的博客的格式略有不同了,这是因为我开始用 ox-hugo 来写文章了,我们来看一下如何用 emacs 的 ox-hugo 包来写博文

使用 ox-hugo 的原因

其实我原本是觉得 hugo 的原生 org 支援是够用的,当然缺点很多,比如

  • 不支持表格
  • 不支持插入图片

对于表格我之前的态度是能用列表,就用列表,图片的话没有办法,不过直接写 html 也不是很烦,不过最近 # more 无效真的是让人有些烦恼, <!--more--> 敲起来真的是心情很糟糕,而且看上去短期官方也无意去修正这个问题

我的英文抱怨文下有读者提到可以试试 ox-hugo,其实我开始用 hugo 时就已经听说这个工具,但是出于够用不折腾的态度,只使用了 hugo。而且 emacs 的包,总是给人一种非常难配难用的感觉,包括这次的 ox-hugo,无论是官网,或是其他中英博客,全是大段的配置和函数,让人头痛。

emacs 的高可配置性确实是其很重要的特点,但也的确会吓退很多人。而且当我用 ox-hugo 写出第一篇博客时,我发现其实我并不需要那么多配置和函数,配置好 ox-hugo 需要的说明甚至没有我这里啰哩啰嗦的文字长,如果你也是想用 ox-hugo 却又对复杂配置望而却步的 emacser(可能很多人认为这样不算 emacser),我们话不多说开始吧

门槛

emacs 说没有门槛那都是骗人的,所以要使用 ox-hugo 你需要具备以下经验,这些内容不会在本文中介绍

emacs org

这是一种类似 markdown 的文本格式,如果你没有用过 org 也就没办法用 ox-hugo 写博客

melpa

你的 emacs 应该已经配置好 melpa 来安装一些 emacs 包

hugo 及配置好的博客

ox-hugo 只负责把 org 文件转换成 hugo 更友好的 markdown 文档,你依然需要 hugo 来生成你的博客站

步骤

安装 ox-hugo

使用 M-x list-packages 打开包列表,光标移至 ox-hugo,按 i 设为待安装包,按 x 执行,之后根据提示确认安装,直至安装结束

配置 ox-hugo

打开你的 emacs 配置档,加入以下内容,重启 emacs,大功告成

(with-eval-after-load 'ox
  (require 'ox-hugo))
(require 'ox-hugo-auto-export)  ;; 更新:目前已不需要这一行了

创建博客模版

我们可以开始写博客啦,但是为了方便以后写更多的文章,我们可以先创建一个 org 文件作为模版,之后我们只需要复制模版,改名,就可以方便写博了

我们在 hugo 博客目录下创建一个 ox-hugo 目录,在目录中创建一个 template.org 文件,内容同这个链接

其中配置项及其含义如下(是的我们要用表格了)

配置 含义
HUGO_BASE_DIR 博客目录相对于该文件的位置
HUGO_SECTION 之前保存 hugo 创建的 org/md 文件的相对位置,ox-hugo 的输出位置
HUGO_WEIGHT hugo 排序权重
HUGO_AUTO_SET_LASTMOD 自动修改编辑时间
TITLE 文章标题
HUGO_TAGS 标签
HUGO_DRAFT 草稿标记
hugo: more 摘要正文分隔符
Footnotes 用来保存文档的配置
org-hugo-auto-export-on-save 保存时自动导出

其中你最需要修改的是 HUGO_SECTION 的位置,这个根据博客目录结构可能会不同,其他都可以套用现有配置

创建博文

现在我们写博客,只要复制一份模版,改名后填入内容,保存文件时,ox-hugo 就会自动生成一份 md 文档到 hugo 的原始博文目录,是不是又有了一等公民的感觉呢,当然对于 hugo 来说,其实它只是 parse 了一份 md 文档而已,跟 org 已经没有关系

总结

使用 ox-hugo 的步骤其实没有那么复杂,安装包,配置,复用模版,然后我们就可以开始码字啦