2022-07-17    2022-07-17    520 字  2 分钟

好久没有写 blog 了,我决定重新折腾 hugo 生成 blog

hugo 介绍

hugo 是一个使用 go 语言编写的生成静态 blog 工具,原生支持 org-mode

安装 hugo

1
2
3
4
5
# 使用macos且安装 brew
brew install hugo

# 如果你和我一样使用 nix-darwin 管理macOS命令行下的一些工具,你也可以使用如下命令临时安装hugo或将hugo包放入你的nix配置中安装
nix-shell -p nixpkgs#hugo

hugo 常用命令

1
2
3
4
5
6
7
8
9
# 生成一个名为 myblog 新的站点
hugo new site myblog

# 创建一个页面,会在content/posts目录自动生成一个MarkDown格式的first.md文件:
cd myblog
hugo new posts/first.md

# 启动一个hugo 服务
hugo server -D

theme

hugo 默认的 theme 非常不好看,我选择了一个比较简单的virgo theme,具体使用方法如下

安装 theme

1
2
3
# 当前工作路径为你新建的site目录
cd themes
git submodule add https://github.com/loveminimal/hugo-theme-virgo.git virgo

修改配置

virgo的下面有一个很好的配置介绍,你可以直接复制后使用它

使用 emacs 发布文章

使用 easy-hugo 插件

安装 easy-hugo

我使用 doom-emacs 配置,故用以下方式安装和配置 easy-hugo 包

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
;;; package.el
(pacakge! easy-hugo)

;;; config.el
(use-package! easy-hugo
  :init (map! :leader (:desc "easy-hugo" "oh" #'easy-hugo))
  :config
  (setq easy-hugo-default-ext ".org" ; 默认使用org文件纪录文章
        easy-hugo-url "https://blog.shanyouli.gq" ; hugo 网址
        easy-hugo-basedir (expand-file-name "repo/blog/" (getenv "HOME"))
        easy-hugo-postdir "content/posts")

   (unless (file-exists-p easy-hugo-basedir)
        (make-directory easy-hugo-basedir)))

easy-hugo 和 evil-mode 的冲突

如果你使用 evil-mode ,会发现使用 SPC-o-h 或者使用命令 easy-hugo 打开 buffer 下的快捷键无法使用,此时你可以使用下面配置使 easy-hugo-mode 下的编辑模式为 emacs 而不是 vi 模式

1
2
(after!
  (evil-set-initial-state 'easy-hugo-mode 'emacs))