obsidian社区插件
QuickAdd 脚本 - 复制 wiki 对应文档内容并删除文件
插件ID:quickadd%E8%84%9A%E6%9C%AC-%E5%A4%8D%E5%88%B6wiki%E5%AF%B9%E5%BA%94%E6%96%87%E6%A1%A3%E5%86%85%E5%AE%B9%E5%B9%B6%E5%88%A0%E9%99%A4%E6%96%87%E4%BB%B6
quickadd%E8%84%9A%E6%9C%AC-%E5%A4%8D%E5%88%B6wiki%E5%AF%B9%E5%BA%94%E6%96%87%E6%A1%A3%E5%86%85%E5%AE%B9%E5%B9%B6%E5%88%A0%E9%99%A4%E6%96%87%E4%BB%B6
quickadd%E8%84%9A%E6%9C%AC %E5%A4%8D%E5%88%B6wiki%E5%AF%B9%E5%BA%94%E6%96%87%E6%A1%A3%E5%86%85%E5%AE%B9%E5%B9%B6%E5%88%A0%E9%99%A4%E6%96%87%E4%BB%B6:复制 wiki 对应文档内容并删除文件,适用于快速将子笔记内容整理到剪切板,以及删除子文档的操作。
QuickAdd 脚本 - 复制 wiki 对应文档内容并删除文件
该脚本的功能是复制通过鼠标选中的 [[]]
文本,然后将对应文档的内容(不包括 Yaml)复制到剪贴板,并删除该文档。
适用于快速将子笔记内容整理到剪切板,以及删除子文档的操作。
QuickAdd Macro 设置
第一个命令 1. Select link on active line
在 Add editor command 的下拉菜单找,然后配置下面的脚本,即将下面代码复制到 js 文件 (如:复制并删除文件.js
) 中,并存放到 QuickAdd 对应的脚本文件夹下,即可在 User Scripts 里面找到并添加。
脚本
const fs = require('fs');
const path = require('path');
const process = require('process');
module.exports = async (params) => {
// 获取选中的文本
const selection = getSelection().toString(); // 将 selection 转换为字符串
let selectionEmbed = matchSelectionEmbed(selection);
console.log(selectionEmbed);
const files = app.vault.getFiles();
// Wiki: 获取库所有文件列表
wikiPath = getFilePath(files, selectionEmbed); // 匹配Wiki链接
console.log(wikiPath);
if (!wikiPath) {
new Notice("❌未找到对应文件");
return;
};
let markdownText = getMarkdownText(wikiPath);
// 复制并删除文件
copyToClipboard(markdownText);
await app.vault.trash(app.vault.getAbstractFileByPath(wikiPath));
new Notice("💡已复制内容到剪切板,并删除文件");
return;
};
function matchSelectionEmbed(text) {
const regex = /\[\[(.*)\]\]/;
const matches = text.match(regex);
return matches ? matches[1] : "";
}
function getFilePath(files, baseName) {
let files2 = files.filter(f => path.basename(f.path).replace(".md", "") === baseName.replace(".md", ""));
let filePath = files2.map((f) => f.path);
return filePath[0];
}
function copyToClipboard(extrTexts) {
const txtArea = document.createElement('textarea');
txtArea.value = extrTexts;
document.body.appendChild(txtArea);
txtArea.select();
if (document.execCommand('copy')) {
console.log('copy to clipboard.');
} else {
console.log('fail to copy.');
}
document.body.removeChild(txtArea);
}
// 获取文件路径下的 md 中的文本(排除 Yaml)
function getMarkdownText(filePath) {
// 获取文件的完整路径
const fileFullPath = app.vault.adapter.getFullPath(filePath);
// 读取文件内容
const fileContent = fs.readFileSync(fileFullPath, 'utf8');
// 排除首行YAML区域
const markdownText = fileContent.replace(/---[\s\S]*?---\n*/, '').replace(/\n*/, '');
return markdownText;
}
讨论
若阁下有独到的见解或新颖的想法,诚邀您在文章下方留言,与大家共同探讨。
反馈交流
其他渠道
版权声明
版权声明:所有 PKMer 文章如果需要转载,请附上原文出处链接。