介绍一下怎么在vscode中预览hexo的图片、label和note~
本文提到的方法有两个前提:
1.适用于把所有素材放到images下时;
2.适用于使用NexT主题时
开启了post_asset_folder
功能的请参考reference的链接和本文修改,或者直接使用hexo-image-link
这类插件。使用其他主题可以参考本文修改。
Paste Image
首先需要安装插件Paste Image,这个插件是用来粘贴图片的,直接把图片复制,然后在vscode中粘贴即可,十分方便。
需要注意的是,当粘贴的时候,只需要将文件名用鼠标圈住,然后再粘贴,就可以把圈住的文件名当作粘贴后的文件名,十分方便。具体操作可见插件说明页。
安装好后在当前项目的.vscode/setting.json
中写上以下配置项,这些配置项只会影响当前项目,不推荐写入系统配置项。
1 2 3 4 5 6 7 8
| { "pasteImage.namePrefix": "${currentFileNameWithoutExt}-", "pasteImage.path": "${projectRoot}/source/images", "pasteImage.basePath": "${projectRoot}/source", "pasteImage.forceUnixStyleSeparator": true, "pasteImage.prefix": "/", "pasteImage.insertPattern": "{% img ${imageFilePath} %}" }
|
解释一下,意思是使用(当前文件名-圈住的名字)当前缀,然后粘贴到/images/XXX下。上个图一看(图是之前的,fi已经替换成了img语法,道理不变):
Markdown Preview Enhanced
这个插件是用来预览的,支持自定义扩展,安装好后ctrl+shift+P
输入Markdown Preview Enhanced: Extend Parser
,修改对应部分:
文件名支持.
,-
,数字,英文字符。
闲暇的时候现学了俩小时js,然后改了改。为什么只做了下边这几个,因为这几个参数容易控制且在一行之内…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| onWillParseMarkdown: function(markdown) { return new Promise((resolve, reject)=> { markdown = markdown.replace( /\{%\s*img\s*([\w/\.-]*)\s*(\d*)\s*(\d*).*%\}/g, `<center><img src="../$1" width="$2" /></center>` ).replace( /\{%\s*label\s*(|default|primary|success|info|warning|danger)\s*\@\s*([\u4e00-\u9fa5]+)\s*%\}/g, `==$2==` ).replace( /\{%\s*note.*%\}\s*\n*(.*)\n*\{%\s*endnote\s*%}/g, `> $1` ) return resolve(markdown) }) },
|
上边使用了一个链式得替换,逐步把markdown文件中的所需部分进行替换。一共替换了3次,则实现了3个功能:
img
的解析,同时也把写好的宽度解析出来了
label
的解析,使用这个插件进行预览的时候可以进行高亮设置,于是无论用的那个参数都进行了高亮
note
缺点是note只支持一行note的解析,匹配多行调不好,但是平常用是没问题了
其他的问题就诸如{\% \%}
必须要连在一起写啊这都是习惯问题了,我平常习惯这么写了,这个就没改。
在这里再推荐一个Markdown All in One,功能也很强大,比如直接插入链接等,很实用。
旧版,适合7.4.0之前含有fi标签的图片
1 2 3 4 5 6 7 8
| { "pasteImage.namePrefix": "${currentFileNameWithoutExt}-", "pasteImage.path": "${projectRoot}/source/images", "pasteImage.basePath": "${projectRoot}/source", "pasteImage.forceUnixStyleSeparator": true, "pasteImage.prefix": "/", "pasteImage.insertPattern": "{% fi ${imageFilePath},,, %}" }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| onWillParseMarkdown: function(markdown) { onWillParseMarkdown: function(markdown) { return new Promise((resolve, reject)=> { markdown = markdown.replace( /\{%\s*fi\s*([\w/\.-]*)\s*,.*,.*,\s*(\d*)\w*\s*%\}/g, `<center><img src="../$1" width="$2" /></center>` ).replace( /\{%\s*label\s*(|default|primary|success|info|warning|danger)\s*\@\s*([\u4e00-\u9fa5]+)\s*%\}/g, `==$2==` ).replace( /\{%\s*note.*%\}\s*\n*(.*)\n*\{%\s*endnote\s*%}/g, `> $1` ) return resolve(markdown) }) },
|
reference
《利用vscode插件与git hook提升hexo编写部署体验》link
菜鸟工具,在线匹配正则,如果要修改正则的话可以用这个看看 link
w3school JavaScript replace() 方法 link $n
的写法就是从这里学来的
官方文档