obsidian社区插件
QuickAdd 脚本 - 右键复制文件夹路径
插件ID:quickadd%E8%84%9A%E6%9C%AC-%E5%8F%B3%E9%94%AE%E5%A4%8D%E5%88%B6%E6%96%87%E4%BB%B6%E5%A4%B9%E8%B7%AF%E5%BE%84
quickadd%E8%84%9A%E6%9C%AC-%E5%8F%B3%E9%94%AE%E5%A4%8D%E5%88%B6%E6%96%87%E4%BB%B6%E5%A4%B9%E8%B7%AF%E5%BE%84
quickadd%E8%84%9A%E6%9C%AC %E5%8F%B3%E9%94%AE%E5%A4%8D%E5%88%B6%E6%96%87%E4%BB%B6%E5%A4%B9%E8%B7%AF%E5%BE%84:运行该脚本后可以在在文件列表中鼠标右键复制文件夹路径
QuickAdd 脚本 - 右键复制文件夹路径
运行该脚本后可以在在文件列表中鼠标右键复制文件夹路径。
// 获取库的基本路径
const basePath = (app.vault.adapter).getBasePath().replace(/\\/g, '/');
// 添加到右侧菜单
let addi = (menu, param, func) => menu.addItem(i => i.setTitle('复制文件夹/多个文件路径').setIcon('percent').onClick(async () => await func(param)));
let multiFRN = async (menu, items) => addi(menu, items, async items => {
let files = items.filter(item => item.extension);
if (!files || files.length === 0) return;
const paths = files.map(file => `${basePath}/${file.path}`).join('\n');
copyToClipboard(paths);
});
let folderFRN = async (menu, item) => !item.extension && addi(menu, item, async folder => {
copyToClipboard(`${basePath}/${folder.path}`);
});
uniReg('files-menu', multiFRN, 0);
uniReg('file-menu', folderFRN, 0);
// 注册事件
function uniReg(str, func, isVault) {
let place = isVault ? app.vault : app.workspace;
place._[str].map(ev => String(ev.fn) == String(func) && place.offref(ev));
app.plugins.plugins.quickadd.registerEvent(place.on(str, func));
};
// 复制文本
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);
}
Reference
讨论
若阁下有独到的见解或新颖的想法,诚邀您在文章下方留言,与大家共同探讨。
反馈交流
其他渠道
版权声明
版权声明:所有 PKMer 文章如果需要转载,请附上原文出处链接。