0%

vscode hexo markdown定制思路

思路

参考资料中说的很详细了,利用的是 Markdown Preview Enhanced: Extend Parser功能,在预览时将hexo特有的语法转换为markdown语法,参考资料给的代码片段如下:

1
2
3
4
5
6
7
8
9
onWillParseMarkdown: function(markdown) {
return new Promise((resolve, reject)=> {
markdown = markdown.replace(
/\{%\s*asset_img\s*(.*)\s*%\}/g,
(whole, content) => (`![](${content})`)
)
return resolve(markdown)
})
},

在实际测试时发现存在如下两个问题:

  1. 正则表达式不准确,不能适配完整的asset_img语法
  2. 图片位于和文档同名目录下面,生成的新的markdown语法没有包含前缀路径

本人对vscode和js均不熟悉,经过一番搜索,修改后的代码片段如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
onWillParseMarkdown: function(markdown) {
return new Promise((resolve, reject)=> {
markdown = markdown.replace(
/\{%\s*asset_img\s*(\S+)\s*\S*\s*%\}/g,
(whole, content) => {
//(`![](${content})`)
//console.log("test--" + content);
abs_filename = vscode.window.activeTextEditor.document.fileName
filename = path.basename(abs_filename);
filename = filename.substring(0,filename.indexOf('.'))
//console.log("test--" + filename);

return `![](${filename + "/"+ content})`;
}
)
return resolve(markdown)
})
},

参考资料