hexo日记本
打算从纸质日记转到电子日记。
之前是一个月的日记放在一个 markdown 文件里面,每天一个一级标题。昨天突发奇想,为啥不用 Hexo 来搭建日记本呢?它本来就是用来写博客(blog 网络日志)的呀。
于是今天就来搭建 hexo 日记本
前言
本文只分享设计思路以及步骤,不提供详细教程,详细教程可以看这个:【持续更新】最全 Hexo 博客搭建+主题优化+插件配置+常用操作+错误分析-遇见西门
优点
利用 hexo 搭建日记本有很多优点:
- 好看,并且可以随时换主题
- 比我之前的方式更加地将日记格式化,便于以后编写脚本来管理
- 可以在
scaffolds
里面设置日记模板 - 可以设置分类与标签
- 有的主题甚至能搜索文章
需求
不联网:这个日记本和我部署到 github 上面的博客有些不一样,因为这个是比较隐私的,我不打算放在网上,仅利用移动硬盘备份。并且看日记都在本地,不使用外链图片,以免断网的时候无法查看
功能少:并且不需要评论,阅读计数等功能,起到的只是一个阅读器的作用。
重美观:需要能够方便地切换主题。
无需侧边目录:因为我打算一篇只记录一天的内容,写不了太多,标题层级不会太多。
写日记要便捷
步骤
参考链接:
初始化 hexo
刚开始的时候我不是很清楚 hexo 在一台电脑上是否可以搭多个博客,后来发现,hexo 的每个博客其实就是一个“项目”,那些命令得在已经搭建博客的文件夹里面才能使用,而不是我之前想的“全局命令”。
首先初始化:
1 | hexo init <folder> |
然后就可以通过以下命令查看本地内容了:
1 | hexo server |
或简写为
1 | hexo s |
全局设置
在博客根目录下的_config.yml
内配置
标题相关
1 | title: 日记 |
permalink
这个设置会决定你的文件最后渲染之后放在哪里。
利用hexo g
来渲染 markdown 文件,它会将渲染好的 html 文件放在public
目录下,部署到 github 时,上传的就是这个文件夹里面的内容。
比如最开始的设置:
1 | permalink: :year/:month/:day/:title/ |
则会将最开始的hello-world.md
示例文章给生成在public\2019\06\26\hello-world
这个文件夹当中。
我觉得一天的内容单独放一个文件夹有点不太合适,而一年的内容全部放在一个文件夹的话,三百多个文件也不好管理,所以按照一个月的内容放在一个文件夹内的规则,将这个设置改成:
1 | permalink: :year/:month/:title/ |
new_post_name
新建文章的文件名,因为日记按照时间管理比较方便,因此在文件名中加入日期
1 | new_post_name: :year-:month-:day-:title.md # File name of new posts |
图片问题
我之前一直是将图片上传到 github 的一个 repo 上面然后使用链接的,看了文档之后才发现原来还有更简便的方法!
方法一 外链
首先开启仓库的 github page 这个设置。
比如用户名是HaneChiri
,创建的仓库名叫blog_images
,那么在这个仓库根目录下的图片avatar.jpg
的链接就是
1 | https://hanechiri.github.io/blog_images/avatar.jpg |
而不是
1 | https://github.com/HaneChiri/blog_images/avatar.jpg |
后者是浏览编辑这个图片的链接,而不是图片本身。
上传之后无法访问这个链接也不要急,等几分钟就可以了。
日记本不能使用这个,因为我需要在不联网的时候也能看。
方法二 资源文件夹
资源(Asset)代表
source
文件夹中除了文章以外的所有文件,例如图片、CSS、JS 文件等。比方说,如果你的 Hexo 项目中只有少量图片,那最简单的方法就是将它们放在source/images
文件夹中。然后通过类似于![](/images/image.jpg)
的方法访问它们。
早知道认真看文档了,插图片就简单多了。
这个是将图片放在source/images
中,而我将 Typora 设置成将图片自动保存在同目录下的images
中,编辑之后只要将这个文件夹内图片给复制到前者所述文件夹,就可以在编辑以及渲染时都看到图片了。
方法三 下载插件
我不需要每个文章的图片分开管理,这样会导致source\_posts\
内有太多没用的空文件夹,因此我使用方法二,读者可以选择适合自己的方法。
主题
为了防止和联网的博客弄混(毕竟一旦将日记上传上去,repo 里面就会留下痕迹,哪怕删掉也看得到,除非删 repo),我打算换个别的主题。
找到了几个心仪的:
但是考虑到个人的一些因素,还是先用着 Next 吧,反正可以换。
外观
Next 主题有四种外观(scheme),在配置文件(themes\next\_config.yml
)中可以找到并修改:
1 | # Schemes |
侧边栏
社交链接
最右边的||
后面跟着的是文字边上显示的图标
1 | social: |
头像
在对应的位置放上头像图片
1 | # Sidebar Avatar |
左右
为了防止和博客混淆而误将日记上传,而将侧边栏调整到相反方向
1 | sidebar: |
回到顶部
这么好用的小功能当然要开着呀!
1 | back2top: |
菜单
首先在解开“分类”(categories
)和“标签”(tags
)的注释
1 | menu: |
但是这个还只是在侧边的菜单栏处显示了“分类”和“标签”两项,还没有功能。
需要在根目录下使用指令来生成这两个页面:
1 | hexo new page categories |
这下能显示了,但是仍然不够,因为 Next 还没有识别出这两个页面就是分类和标签页面。
打开source\categories\index.md
,里面是:
1 |
|
在里面加上一句,变成:
1 | title: categories |
这样就能识别出这是分类页面了,能够使用了。标签页面同理。
本地搜索
第一步 修改主题设置
找到这个设置:
1 | # Local search |
将enable
改为 true 之后就会在菜单显示一个”搜索“,但是还无法使用。
照着注释里面那个 github 项目内的说明
第二步 下载插件:
1 | npm install hexo-generator-searchdb --save |
第三步 添加全局设置
在根目录下的_config.yml
加上如下设置:
1 | search: |
我把帮助中的注释复制过来就是下面这样:
1 | # see https://github.com/theme-next/hexo-generator-searchdb |
意外地轻松便捷呢。
编写快捷打开的脚本
虽然弄好了,但是每次想写还得打开命令行输入命令,再进入文件夹用 Typora 打开文件,太麻烦了。
于是写一下 bat 批处理脚本。
这东西其实就是把在命令行执行的命令放在一个文本文件然后把后缀名改成.bat 而已。
不过我不是很熟命令,弄了很久。
快速打开本地预览
首先是快速查看我的日记。目标是双击一下脚本文件就可以在浏览器中看到我的日记。
一般情况下的步骤:
- 在根目录打开命令行
- 输入
hexo s
- 打开浏览器
- 在地址栏输入
localhost:4000
我写出来的.bat 文件是这样的:
1 | set browser="C:\Program Files (x86)\Tencent\QQBrowser\QQBrowser.exe" |
只有两行,第一行是设置用于打开日记本的浏览器所在的位置,当然,如果设置了环境变量,这里可以直接写浏览器的名字。
第二行是利用这个浏览器打开localhost:4000
,打开成功才执行hexo s
来启动 hexo。
新建日记
一般情况下的步骤:
- 在根目录打开命令行
- 输入
hexo new <title>
- 打开
source\_posts\
- 找到并打开新建的日记
获取标题
1 | set /p title=请输入标题: |
/p
表示动态输入
创建文件
1 | hexo new "%title%" |
%变量名%
表示引用已经赋值的变量。
打开文件
由于我设置的文件名不只是标题,因此还需要获取日期来组成文件名。
1 | set year=%date:~0,4% |
其中:
%date%
是系统变量,用于获取系统时间,返回的值的格式是2019/06/26 周三
%date:~x,y%
代表从第 x 个字符开始,获取 y 个字符
刚开始的脚本代码是这样的:
1 | set /p title=请输入标题: |
但是我发现在执行完hexo new "%title%"
之后,命令行直接退出,加pause
都没用。
猜测是因为,hexo 创建文件需要时间,还没创建好就打开,于是出错了。
后来改成:
1 | hexo new "%title%" && call z_open_editor.bat |
在创建完之后,才会执行后面的内容,后面的代码都放在z_open_editor.bat
里面
最终代码:
1 | rem z_new_diary.bat |
1 | rem z_open_editor.bat |