Hexo添加文章时自动打开编辑器

前言:

  • Hexo 中新建一篇博文非常简单,只需要在命令行中键入以下命令然后回车即可:
    1
    hexo new "The title of your blog"
  • 此后 Hexo 便会在 Hexo 的根目录的 source 文件夹下的 _ports 目录下自动帮你创建相应的 md 文件。然后我们打开该目录,找到刚刚 Hexo 自动生成的文件打开编辑即可。
  • 但是当我们的博文比较多,这样我们就需要在成堆的 Markdown 文件中找到刚才自动生成的文件,这样做显然是一件比较痛苦的事情。

解决思路

在访问 Hexo 的 Github 项目时,发现有类似的 issue,Hexo 作者也给出来解决办法,以下为作者原文:

ou can try to listen to the new event. For example:

1
2
3
4
5
6
7
8
9
10
11
var spawn = require('child_process').exec;

// Hexo 2.x
hexo.on('new', function(path){
exec('vi', [path]);
});

// Hexo 3
hexo.on('new', function(data){
exec('vi', [data.path]);
});

解决方案

根据作者给出的示例,一番折腾过后博主终于在自己的机器上实验成功了,下面给出操作步骤:

  1. 首先在 Hexo 目录下的 scripts 目录中创建一个 JavaScript 脚本文件。
  2. 如果没有这个 scripts 目录,则新建一个。
  3. scripts 目录下新建的 JavaScript 脚本文件可以任意取名,如:open-editor.js,其中内容如下:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    var exec = require('child_process').exec;
    var os = require('os');

    hexo.on('new', function (data) {
    var editorPath = "D:\\Program Files\\Typora\\Typora.exe"; // 修改为你的编辑器路径,比如 Typora 的路径

    // 检测操作系统并使用相应的命令
    if (os.platform() === 'win32') {
    // Windows 系统
    exec(`start "" "${editorPath}" "${data.path}"`);
    } else if (os.platform() === 'darwin') {
    // macOS 系统
    exec(`open -a "${editorPath}" "${data.path}"`);
    } else {
    // 其他系统 (Linux)
    exec(`"${editorPath}" "${data.path}"`);
    }
    });
  4. 保存并退出脚本之后,在命令行中键入:
    1
    hexo new "auto open editor test"
  5. 是不是就顺利的自动打开了自动生成的md文件啦~
本文结束 感谢您的阅读
正在加载今日诗词....