paste image插件需正确配置pasteimage.path和pasteimage.insertpattern才能正常工作:path决定图片存储位置(必须为相对路径且目录手动创建),insertpattern决定markdown中引用路径,二者必须严格匹配,否则图片存错位置或预览裂图。

Paste Image 插件不是“装了就能用”,关键在 pasteImage.path 和 pasteImage.insertPattern 这两个配置项是否匹配当前项目结构。配错一个字符,图片就存错地方或路径写死失效。
为什么粘贴后图片没进 assets/images 文件夹?
绝大多数人卡在这一步:插件确实装了、快捷键也按了(Ctrl+Alt+V),但截图还是直接丢在文档同级目录,甚至弹出“无法保存到指定路径”的报错。
根本原因不是插件坏了,而是 pasteImage.path 的值没生效——它依赖 VSCode 当前打开的是「文件夹」而非单个文件,且该文件夹必须是项目根目录(即包含 .vscode/ 或你希望图片归档的父级目录)。
- 如果你只是用 VSCode 打开了一个单独的
readme.md,${projectRoot}就是undefined,路径计算失败,插件会退回到默认行为(存当前文件所在目录) -
pasteImage.path中不能写绝对路径(如C:/mydocs/assets/images),否则跨平台协作时必然失效 - 路径中用了
${currentFileNameWithoutExt}但当前文件还没保存(即无文件名),变量为空,导致生成路径非法
pasteImage.path 和 pasteImage.insertPattern 必须对齐
这两个配置像一对齿轮:前者决定图片物理存在哪,后者决定 Markdown 里怎么引用它。错位就会出现“文件明明存进去了,但预览里裂图”的情况。
典型错误配置:
"pasteImage.path": "${projectRoot}/assets/images",
"pasteImage.insertPattern": ""
问题在于:路径存到了 assets/images,但插入语法却从 ./images/ 开始找——少了一级 assets/。
正确写法(假设 Markdown 文件在 docs/ 下,想把图存到 assets/images/):
"pasteImage.path": "${projectRoot}/assets/images",
"pasteImage.insertPattern": ""
- 如果 Markdown 文件和
assets/同级(都在${projectRoot}下),则用 - 如果 Markdown 在
docs/article.md,而assets/在项目根,则需向上两级: -
${imageFileName}是插件生成的实际文件名(含扩展名),不要手动加.png
命名混乱?用 namePrefix + 时间戳控制可读性
默认的 image.png 或随机字符串(如 a1b2c3.png)在协作中毫无意义。靠人脑记“这张是昨天改接口时截的流程图”不可持续。
推荐组合配置:
"pasteImage.defaultName": "${currentDate:YYYY-MM-DD}-${currentTime:HH-mm-ss}",
"pasteImage.namePrefix": "md-",
"pasteImage.nameSuffix": ""
-
${currentDate:YYYY-MM-DD}确保同一天的图按时间排序,避免覆盖 - 加
md-前缀可快速区分是 Markdown 粘贴图,还是设计稿、原型图等其他来源 - 不建议用中文命名(部分 Windows 环境或 Git 工具处理异常),小写+连字符最稳妥
工作区设置比用户设置更可靠
你在全局用户设置里配好了所有参数,但换个项目又得重配?说明你没用对作用域。
真正稳定的方案是:在项目根目录下建 .vscode/settings.json,把 Paste Image 配置写进去。这样:
- 每次打开这个文件夹,配置自动加载,不依赖你的个人偏好
- 团队成员克隆仓库后,开箱即用,路径逻辑一致
- 避免不同项目因结构差异(比如有的用
docs/,有的用content/)导致配置冲突
注意:.vscode/settings.json 默认不被 Git 跟踪,记得显式添加它——这是让自动化真正落地的关键一环,而不是靠口头约定。











