[原创] 利用 vim 实现 HEXO 文章按更新时间自动排序
2019-02-08 01:15:19 更新:
发现 vim 自动添加修改时间代码有几个打错字的地方,更正了一下。
玩 hexo 博客也有段时间了,自己写一个原创实现 hexo 文章按更新时间排序的方法。为什么要写这个呢?因为确实网上找不到!!我找了好久,要么就是不能实现,要么就是不够方便。还需要通过手动添加时间或索引值来进行排序。
我这个方法是全自动,完全不用手工参与,修改完保存。就会自动将最新修改的文章,排到前面。废话不多说,开始搞!
前言
Hexo 首页的文章列表默认是通过文章建立的日期来排序的,也就是最新的文章排在最前面。
但是,有时候我的文章会持续更新,我希望将我更新后的文章放到最前面。但是只要 md 文件一建立,date:
标签上的值就不会再变更了。
网上有人说 hexo 有提供 updated:
这个参数,只需要将主站配置文件_config.yml
的 order_by: -date
修改成 order_by: -updated
就可以了,实际上是不完全对的。
1 | index_generator: |
正文
HEXO 排序确实是有 updated:
这个参数,但是问题的关键不在于这个参数,而是只要你建立了 MD 博客文件,date:
和 updated:
这二个参数都不会按你的修改时间自动更新的。
所以按更新时间排序,只需将 date:
或 updated:
的时间,改成你修改完成后的时间。然后在_config.yml
主站文件中,使用 order_by: -date
还是 order_by: -updated
这二种参数中的任意一个都是有效的。
思路
1、手动修改 date:
或 updated:
的时间。
2、通过快捷键实现自动插入当前时间。
3、自动在保存时,将 date:
或 updated:
的时间改成当前时间。
手动修改
这个我就不说了,直接在博文中把时间改成当前时间就好了。
快捷键修改
我使用的是 vim, 所以讲一下 vim 实现快捷键插入时间的方法。其它编辑器的可以自己查看相关文档。
打开 ~/.vimrc
的 vim 配置文件。将下面的代码添加到最后,保存退出。
1 | :nnoremap <F6> "=strftime("%F %H:%M:%S")<CR>gP |
再用 vim 打开你的文章或者任意文件,按
终级大招:保存后自动修改
vim 的强大之处,是他支持很多相关事件。我们这次用到的是 autocmd
。
先将_config.yml
主站配置文件中的 order_boy:
修改成 order_by: -updated
, 按 updated
这个参数来排序。
编辑 ~/scaffolds/post.md
模版文件,在文件头加入下面的内容,后保存退出。
1 | title: {{ title }} |
接着打开 ~/.vimrc
的 vim 配置文件。将下面的代码添加到最后,保存退出。
1 | autocmd BufWrite,BufWritePre,FileWritePre *.md ks|call LastModified()|'s |
当我们新建 md 文章时,会自动添加创建时间。而当我们用 vim 编辑器修改 md 文章之后,vim 保存退出后会自动将 updated:
的值,修改成当前时间。这样就完美实现了文章自动排序。快去试试吧!!
当然小伙伴们也可以把快捷键修改的内容也添加进去。这二者是没有冲突的,可以一起使用。