1 安装
- 从obsidian.md安装 Obsidian
- 在“设置”下的“社区插件”中启用社区插件
- 安装 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 则会粘贴图片,并将图片保存到你的保险库中:

变成
![[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 文件。