1 安装

  1. 从obsidian.md安装 Obsidian
  2. 在“设置”下的“社区插件”中启用社区插件
  3. 安装 Better Paste:点击“浏览”,搜索“Better Paste”,然后点击“安装”

2 功能介绍

以下是十个示例。有些在每次粘贴时都会自动执行,有些则是需要时才执行的命令。

2.1 自定义代码片段

使用正则表达式编写自己的查找和替换规则,这些规则会在每次粘贴时自动运行。以下规则可移除 Perplexity 的引用标记:

The fix shipped last week[1][2] and rollout begins today[3].

变成

The fix shipped last week and rollout begins today.

该插件附带两个代码片段,可供编辑或禁用:移除标题中的粗体和折叠空行。维基上还有更多可导入的规则,例如转换 ChatGPT中的数学表达式。规则的编写方法详见第 3.5 节。

2.2 来自 Safari 的图片

在 Safari 中使用“复制图片”功能后,剪贴板会保存两个内容:图片本身及其网页地址。Obsidian 会粘贴地址,但你复制的是图片,自然希望粘贴的是图片。Better Paste 则会粘贴图片,并将图片保存到你的保险库中:

![](https://images.example.com/2026/05/skyline-8f21a.jpg?auto=format&w=2400)

变成

![[skyline-8f21a.jpg]]

2.3 跟踪参数

从新闻通讯和社交应用中复制的链接往往会附带大量追踪垃圾信息。Better Paste 可以将其清除:

https://www.theverge.com/2026/1/9/story?utm_source=newsletter&utm_medium=email&fbclid=IwAR2x9

变成

https://www.theverge.com/2026/1/9/story

2.4 链接标题

粘贴一个纯URL,它就会变成一个带有真实页面标题的Markdown链接:

https://obsidian.md

变成

[Obsidian - Sharpen your thinking](https://obsidian.md)

URL 会立即被粘贴,并在标题出现时自动更新,因此不会造成任何阻塞。

链接列表也可以。将几个网址分别粘贴在每行,每个网址都会显示其标题。

获取的标题通常以网站名称结尾,例如· GitHub 或- YouTube 。其中包含的“从标题中移除网站名称”链接代码片段会去除这些网站名称,您还可以添加自己的规则,详见第 3.5 节。

Reddit、YouTube、TikTok 和 Loom 会阻止常规页面查询,因此它们的标题会从各网站自身的嵌入服务中获取;而 Stack Overflow 及其他 Stack Exchange 网站的标题则通过 Stack Exchange API 获取。Dropbox 共享链接会将文件或文件夹名称作为标题,而 Obsidian 链接则将笔记名称作为标题。

2.5 嵌套列表

复制一个嵌套列表,将其粘贴到另一个列表的深处时,原有的缩进也会一并保留,导致树形结构被破坏。Better Paste 会重新调整整个列表的缩进,使其与粘贴的位置相匹配。例如:

- [ ] Trip planning
    - [ ] Book hotel
    - [ ] Pack
        - [ ] Chargers

粘贴到中的空项目上

- Projects
    - Summer
        -

变成

- Projects
    - Summer
        - [ ] Trip planning
            - [ ] Book hotel
            - [ ] Pack
                - [ ] Chargers

无论目标位置嵌套多深,无论源文本使用的是制表符还是空格,该功能均可处理项目符号、编号列表和复选框。若粘贴的内容并非纯粹的列表,或未定位到列表项上,则显示效果与之前完全一致。来自网页的富文本内容则会经过 Obsidian 的 HTML 转换处理。

2.6 段落引用

将几段文字粘贴到块引用中时,只有第一行被引用,这是Obsidian 多年来存在的一个问题。Better Paste 会将每行粘贴的内容都放入引用中,因此整个粘贴内容都会保留在引用内。例如:

We started in a garage.

Two years later we were forty people.

粘贴到图注中

> [!quote] From the interview
>

变成

> [!quote] From the interview
> We started in a garage.
>
> Two years later we were forty people.

它既适用于普通块引用,也适用于注释框。

2.7 终端输出

终端会在窗口边缘将长行拆分为多行。每次粘贴时都会去除转义码,当你选中粘贴后的内容并运行“清理终端输出”时,这些行会重新合并:

npm warn deprecated inflight@1.0.6: This module is not supported and leaks memory. Do
  not use it. Check out lru-cache instead.

变成

npm warn deprecated inflight@1.0.6: This module is not supported and leaks memory. Do not use it. Check out lru-cache instead.

2.8 PDF 中的文本

PDF 会将段落折行成短行,并用连字符将单词拆分。请选中粘贴的文本,然后运行“清理 PDF 文本”功能:

The findings suggest that long-term expo-
sure has a measurable effect on the out-
come in both groups.

变成

The findings suggest that long-term exposure has a measurable effect on the outcome in both groups.

像“fi”这样的连字符也会被视为真正的字母,因此搜索又能找到这些单词了。

该命令会打开一个带预览的对话框,因此您可以在结果应用之前先查看效果。两个开关用于处理规则无法自动识别的情况:移除页码,或将所有内容合并为一个段落。您的选择会被记住,以便下次使用。

2.9 人工智能生成的文本清理

聊天机器人的文本中包含花括号引号、长破折号和不可见字符。每次粘贴时,不可见字符都会被移除;如果启用了“引号”和“破折号”功能,其余内容也会变成纯文本:

“It works,” she said — finally.

变成

"It works," she said - finally.

2.10 逗号和引号

更喜欢将逗号放在引号外面吗?请选中文本,然后运行“将逗号移至引号外”功能:

She called it "finished," then left.

变成

She called it "finished", then left.

将引号内的逗号移到引号外,情况则相反。


3 设置

以下是您实际需要查找的设置。

3.1 行为

  • 清理所有粘贴内容:主开关。将其关闭可仅使用命令,或仅清理标记为bp: true 的笔记(参见第4节)。
  • 笔记属性(默认值为bp ):第4节中提到的“按笔记设置”开关。如果该名称与您保险库中的其他内容冲突,请将其重命名;若要关闭此功能,请留空。

3.2 附件

  • 网页图片:当粘贴内容链接到网页上的图片时(无论是单纯的图片 URL,还是包含在复制的网页内容中),会发生什么情况?默认选项“带预览的链接”会粘贴一个嵌入代码,直接从网页显示图片。“带预览的下载”会将副本保存到您的保险库中(具体位置取决于您的附件设置),文件名与源文件一致,因此不再出现类似image.png 的链接。“不执行任何操作”将图片粘贴处理交由 Obsidian 自动处理。在浏览器中复制的图片会将实际图片保存到剪贴板中,因此无论选择“带预览的链接”还是“带预览的下载”,该图片都会被保存到您的保险库中(参见示例 2.2)。
  • 粘贴文件:当你从设备粘贴文件(如 PDF 和截图)时会发生什么。选择“不执行任何操作”(默认选项)将由 Obsidian 自动处理粘贴操作,并包含预览。选择“仅链接(不显示预览)”则会插入纯文本链接,例如![[Document.pdf]] 将变为[[Document.pdf]] 。这些文件仍会根据你的 Obsidian 附件设置进行保存。
  • 文件名:请添加您自己的格式,例如{{name}}-YYYY-MM-DD 。您还可以使用{{noteName}} 作为笔记名称,{{property:xyz}} 作为任何前置信息属性,以及{{counter}} 或{{counter:2}} 作为递增的编号。 截图没有源文件名,因此其名称为Pasted image 加上时间戳,这与 Obsidian 赋予它的名称相同。若笔记中包含attachName: demo 且采用{{property:attachName}}-{{counter}} 这种格式,粘贴的截图将分别变为demo-1.png 、demo-2.png 和demo-3.png 。该格式适用于 Better Paste 保存的每一张图片,包括截图。
  • 尺寸和样式:为每张保存的图片指定宽度、类名或两者兼有,这样粘贴时生成的链接形式为![[photo.jpg#invert|400]] 。您可以自定义以逗号分隔的列表,例如200, 400, 600 和invert, invertW ,然后将某个值应用到所有情况,或者选择“每次粘贴时询问”,以便每次通过一个小对话框进行选择(按下回车键即可应用,且上次的选择会被预先选中)。 诸如#invert 之类的类由主题和 CSS 代码片段定义,例如在深色模式下将图像反转。Image width 属性(默认值为image-width )用于设置每条笔记的宽度,详见第 4 节。

替代文本会保留,如果下载失败,原始链接仍会保留在笔记中。大于 50 MB 或加载时间超过 30 秒的图片将保留为链接。如果笔记具有自己的image-width 属性(参见第 4 节),则该属性将覆盖大小设置。

3.3 链接

  • 获取粘贴链接的标题:默认开启,参见上文示例 2.4。
  • 清理粘贴的链接:移除所有常见追踪器,以及来自YouTube、Google和Amazon等网站的已知冗余内容。
  • 链接移除:添加您希望在所有位置或特定网站上一并移除的参数名称。在粘贴之前,实时测试工具会显示结果:
https://www.youtube.com/watch?v=dQw4w9WgXcQ&list=PLxAbC123&si=8f2a1c&utm_source=share&t=42
https://www.amazon.com/dp/B0CHX1W1XY/ref=sr_1_3?crid=2ABCDE&keywords=usb+hub&qid=1735689600&sr=8-3
https://www.google.co.uk/search?q=obsidian+plugins&client=safari&sca_esv=9f1&sourceid=chrome

变成

https://www.youtube.com/watch?v=dQw4w9WgXcQ&list=PLxAbC123&t=42
https://www.amazon.com/dp/B0CHX1W1XY/ref=sr_1_3?keywords=usb+hub
https://www.google.co.uk/search?q=obsidian+plugins

删除操作如下所示:

fbclid
mine.example | source, ref

fbclid 会在每个网站上移除该参数。mine.example | source, ref 会从 mine.example 及其子域名中移除source 和ref ,同时保留其他所有参数。而google.* 则同时匹配 google.com 和 google.se。 您可以查看所有内置的移除规则,该文件的更新会随插件版本发布而推送。建议您在移除规则时,先打开 betterpaste.md 并填入您的列表。在那里审核后,再在邮件应用中创建草稿。加密签名的链接保持不变。共享文件和赠阅文章将保留其访问参数。

在文件中添加一行! ,以关闭某个站点的内置移除功能:

!youtube.com

3.4 文本处理

  • 修剪周围的空白:删除粘贴内容周围的空行和多余空格。中间的空行保留不变。
  • 不可见字符:删除零宽度空格,并将不可分隔空格转换为普通空格。表情符号、波斯语和阿拉伯语连接符以及中日韩(CJK)间距保持不变。
  • 引号:将花括号引号和撇号转换为直引号,因此“don’t” 将变为"don't" 。默认处于关闭状态,因此您的排版效果将保持不变,直到您选择启用该功能。
  • 破折号:将半破折号和长破折号转换为连字符。此功能默认也处于关闭状态。代码、链接和注释名称中的引号和破折号保持不变。

3.5 定制加工

  • 文本片段:您自定义的正则表达式规则,会在内置规则之后对整个粘贴内容进行处理。每个片段都有独立的开关,且按列表顺序执行,因此可通过拖拽调整顺序。插件自带“移除标题中的粗体”和“折叠空行”功能。
  • 链接片段:同样类型的规则,在每个粘贴的链接的标题生成后对其执行一次。规则会识别完整的 Markdown 链接,而链接地址保持不变。该插件自带“从标题中移除网站名称”功能,并会去除诸如· GitHub 和- YouTube 之类的后缀。
  • 每行规则应包含一个 JavaScript 正则表达式替换,格式为s/find/replace/flags 。以# 开头的行是注释:
# Remove Perplexity citations
s/\[\d+\]//g
  • 试试看:输入示例文本,实时查看所有已启用的代码片段如何对其进行处理。链接代码片段配有专用的测试工具,该工具支持接收 Markdown 链接。代码片段编辑器也会对你正在编写的代码片段显示相同的预览。
  • 导入片段和导出片段:通过剪贴板在各个保险库之间传输片段。维基上提供了现成的片段;从那里复制一个,然后粘贴进来。
  • 打开正则表达式练习平台:打开regex101,该平台按照规则机制设计,用于构建和测试查找模式。

3.6 结构

  • 粘贴时保持列表嵌套:默认开启,参见上文示例 2.5。
  • 粘贴时延续块引用:默认也处于启用状态,参见上文示例 2.6。

结构规则在文本规则之后执行,因为它们会读取光标周围的注释,并重新调整清理后的文本以适应该注释。


4 逐音符控制

在笔记的前置信息中添加bp: false ,Better Paste 就会忽略该笔记。非常适合日志和记录:

---
bp: false
---

反之亦然:即使“每次粘贴时清理”选项处于关闭状态,bp: true 仍会清理笔记。

清理所有粘贴内容 不存在bp 属性 bp: true bp: false
已 已清理 已清理 未处理
关闭 保持原状 已清理 被单独留下

此外,image-width 用于设置粘贴到该笔记中的图片宽度:

---
image-width: 400
---

图像以![[picture.png|400]] 格式输出,这是Obsidian特有的尺寸语法。400x300 同样有效。


5 条命令

九条命令,可自定义热键(设置,热键)。这些 ID 用于 URI 方案和 Commander 等插件,前缀为better-paste: 。

  • 粘贴(paste ):即使在已选择不参与的笔记中,也会按照规则进行粘贴。
  • 不进行处理直接粘贴(paste-raw ):将剪贴板中的内容原样粘贴。
  • 清理选定内容(selection-clean ):对选定的文本应用文本规则。
  • 清理终端输出(selection-clean-terminal ):将换行后的行重新合并,去除开头缩进,并将选定内容中的• 项目符号转换为Markdown列表。此操作需按需进行,因为只有你知道该文本来自终端。
  • 清理 PDF 文本(selection-clean-pdf ):将PDF 版面布局导致的短行重新合并,修复被连字符拆分的单词,并展开选定范围内的连字。对话框中可预览处理结果,并提供页码和段落相关选项。
  • 运行代码片段(selection-run-snippet ):选择一个代码片段并将其应用到选定内容上,即使该片段的“粘贴”功能已被关闭。
  • 将逗号移至引号内(selection-commas-inside )和将逗号移至引号外(selection-commas-outside ):将逗号置于右引号旁,应用于所选内容。
  • 切换自动清理功能(toggle-cleanup ):切换主开关。

6 值得了解

  • 粘贴到代码块、内联代码或前置信息中的文本保持不变,而粘贴内容中的围栏代码也会原样保留。 有一个例外:当Web 图片设置为“下载并预览”时,在源代码模式下将图片地址粘贴到空属性中,系统会将图片保存到您的存储库中,并将其属性设置为"[[skyline-8f21a.jpg]]" 。Obsidian Bases 可以将其显示为封面图片,且本地副本可在离线时使用。
  • 截图由 Better Paste 保存,文件名与 Obsidian 生成的名称相同,除非您自行设置了文件名格式。
  • Obsidian 会先将富文本(HTML)转换为 Markdown;随后,Better Paste 会清理链接,并将“Web 图片”设置应用到转换结果中的图片上。

7种语言

Better Paste 支持 21 种语言:阿拉伯语、中文(简体)、中文(繁体)、荷兰语、英语、法语、德语、印尼语、意大利语、日语、韩语、波斯语、波兰语、葡萄牙语、葡萄牙语(巴西)、俄语、西班牙语、泰语、土耳其语、乌克兰语和越南语。 该软件将遵循 Obsidian 设置的语言(切换后需重启才能生效)。


8 隐私

Better Paste 在本地运行,仅在以下三种情况下才会发起网络请求:

  • 下载您粘贴的图片
  • 获取您粘贴的链接标题(若要停止此操作,请关闭“为粘贴的链接获取标题”功能)
  • 从 GitHub 加载“欢迎”和“最新动态”对话框的图标

不进行遥测,不进行分析,且绝不会上传任何数据。设置保存在.obsidian/plugins/better-paste/data.json 中,并始终存储在您的保险库内。

每次发布都会使用TypeScript、ESLint(配合官方的Obsidian ESLint 插件)、Stylelint、Prettier、Vitest以及死代码检查进行验证。若出现警告,构建将失败。


9 关于

我是约翰·桑内布拉德。我拥有软件开发领域的博士学位,曾为苹果、艺电、谷歌、微软、乐高、SKF、沃尔沃汽车、沃尔沃集团和雅马哈等公司从事创新开发工作。此外,我还开发了“Notebook Navigator”——这是 Obsidian 最受欢迎的文件资源管理器插件。

欢迎在领英上与我建立联系!


10个问题或疑虑?

请在GitHub 仓库中提交一个问题。对于粘贴类 bug,您提供的最有价值的信息是剪贴板中的内容:请在您进行复制操作的应用程序中打开https://dynalist.io/clipboard,将内容粘贴到该页面,并附上页面显示的结果。

不接受拉取请求;请以功能请求的形式提交您的想法。详情请参阅CONTRIBUTING.md。


11 许可

GNU 通用公共许可证 v3.0。参见LICENSE 文件。