本文介绍了近期我在使用Hexo的两个技巧。一是使用Asciinema来录制终端Demo。并在Hexo博客 中显示。二是如何使用目录来管理Hexo文章,当博客越来越多的时候,这将十分必要,当然我并不 是博客太多才去分目录管理,主要是因为强迫症🤪。

Asciinema

Asciinme能够解决Hexo博文中显示多行命令行代码块不太友好的显示方式,同时也能更直观的阐述 命令的输入和输出。

如何使用

  1. 注册Asciinema, 官网。为注册用户 提供一个仓库。
  2. 下载客户端工具;
    1
    2
    3
    4

    # mac下homebrew安装
    brew install ascillnema

  3. 使用asciinema auth登录–>asciinema rec开始记录–>CTRL+D或者输入exit退出。 完成之后会输出对应的链接。具体配置参考官方教程
  1. 安装Hexo插件,支持Asciinema的渲染;

    1
    npm install  --save hexo-tag-asciinema
  2. Vscode设置Markdown的Snippet,方便编写:

    1
    2
    3
    4
    5
    "Asciinema":{
    "prefix": "asciinema",
    "body": "{% asciinema ${1:code}%}",
    "description": "Insert asciinema link"
    }

设置完,就可以酷炫的显示终端录制了。这里有一点需要注意,目前我们博文与第三方工具绑定的很 紧密,会不方便博客的迁移等工作。后续迁移肯定是项大工程。

使用目录管理日益增多的博文

当博文的数量很大时,一会导致目录结构混乱,同时也不方便管理和检索。

默认hexo new post [title]将会在post目录下创建,hexo generate生成的静态文件则是:year/:month/:day/:title.html。 我们来看配置文件中的两个配置项:

1
2
3
4
5
# post生成的文件名
new_post_name: :title.md # File name of new posts

# 静态文件生成规则
permalink: :year/:month/:day/:title/

:variable是hexo中的变量表达形式,hexo内置了一些变量,参考 hexo变量 。修改配置文件:

1
2
3
4
5
# post生成的文件名
new_post_name: :year/:title.md # File name of new posts

# 静态文件生成规则
permalink: :year/:month/:day/:title/

可以根据自身需求进行配置,由于笔者目前没有太多的博客,以年份归档就足够了。对于之前的文章如果需要迁移, 参考以下脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 进入_post目录
cd source/_post

# 修改文章内容,添加permalink
for file in `ls`; do link=`echo $file|sed -n 's/\.md//p'`; sed -i "" "/title.*/ a\
permalink: $link
" $file; done;

# 修改文章的创建时间为Front-matter中的时间
for file in `find . -type f`; do d=`head $file|sed -n 's/^date: //p' |sed -n 's/[- :]//pg' |sed -n 's/\([0-9]\{2\}\)$/\.\1/p'`; echo $d ; done;

# 创建一个2018年1月1日的文件,用于过滤出2018年的文章
touch -t 201801010000 timestamp
# 创建2018文件夹
mkdir 2018
# 将2018年的文章移到2018文件夹下
for file in `find . -type f -newer timestamp`; do mv $file 2018 ; done

# 将timestamp创建时间修改为2017年1月1日,然后参考2018年文章归类方法,这里略

# 完成归类之后删除刚才创建的用于过滤的文件
rm timestamp

# 最后如果想再恢复文章的创建时间,再执行第三步命令
for file in `find . -type f`; do d=`head $file|sed -n 's/^date: //p' |sed -n 's/[- :]//pg' |sed -n 's/\([0-9]\{2\}\)$/\.\1/p'`; echo $d ; done;

参考

如何在Hexo中对文章md文件分类