求大佬 帮忙写一个 JS 代码,功能为为思源的导出 markdown 格式 添加快捷键。或者告知写代码方法也行,我是小白。
或者能把这下方这个 "Markdown 批量转换" 插件设置一个快捷键,能呼出转换面板 就更好啦~
求大佬 帮忙写一个 JS 代码,功能为为思源的导出 markdown 格式 添加快捷键。或者告知写代码方法也行,我是小白。
或者能把这下方这个 "Markdown 批量转换" 插件设置一个快捷键,能呼出转换面板 就更好啦~
确实用 zip 解压的方式较复杂,不过还有更简单方法,比如,直接读取文档 Markdown 源码,然后把内容直接写入到文件,这样只需要两步即可。
代码如下
// alt+d 导出markdown文档(docId为空导出当前文档) // see https://ld246.com/article/1743689632996 { // 导出文档的id(docId为空导出当前文档) const docId = ''; // 写入markdown文件路径 // 需填写绝对路径 // windows路径需要用\转义,比如 c:\\ const toPath = '/your/path/Downloads/'; // alt+d事件 document.addEventListener('keydown', async function(event) { // 检查是否按下了 Alt 键和 D 键,并确保没有按下其他修饰键 if ( event.altKey && // Alt 键被按下 event.code === 'KeyD' && // D 键被按下 !event.shiftKey && // Shift 键未被按下 !event.ctrlKey && // Ctrl 键未被按下 !event.metaKey // Cmd 键(Meta 键)未被按下 ) { event.preventDefault(); // 阻止默认行为(可选) if(!isElectron()) { showMessage('仅在Electron客户端有效', true); return; } // 获取Markdown文本 const doc = await fetchSyncPost("/api/lute/copyStdMarkdown", {id: docId || getCurrentDocId()}); if(!doc || doc.code !== 0) { showMessage(doc.msg || '获取文档失败', true); return; } const markdown = doc.data || ''; // 写入文本到文件 const fs = require('fs'); if (!fs.existsSync(toPath)) { showMessage('保存路径不存在', true); return; } let title = '未命名文档'; if(docId) { const docInfo = fetchSyncPost('/api/block/getDocInfo',{id:docId}); if(docInfo && docInfo.data && docInfo.data.name){ title = docInfo.data.name; } } else { title = getCurrentDocTitle() || title; } const path = require('path'); fs.appendFileSync(path.join(toPath, title + '.md'), markdown, 'utf8'); showMessage('已导出成功', false, 3000); } }, true); // 获取当前文档id function getCurrentDocId() { return (document.querySelector('[data-type="wnd"].layout__wnd--active .protyle:not(.fn__none)')||document.querySelector('[data-type="wnd"] .protyle:not(.fn__none)'))?.querySelector('.protyle-title')?.dataset?.nodeId; } function getCurrentDocTitle() { return (document.querySelector('[data-type="wnd"].layout__wnd--active .protyle:not(.fn__none)')||document.querySelector('[data-type="wnd"] .protyle:not(.fn__none)'))?.querySelector('.protyle-title__input')?.textContent; } // api请求 async function fetchSyncPost(url, data, method = 'POST') { return await (await fetch(url, {method: method, body: JSON.stringify(data||{})})).json(); } function isElectron() { return navigator.userAgent.includes('Electron'); } // 发送消息 function showMessage(message, isError = false, delay = 7000) { return fetch('/api/notification/' + (isError ? 'pushErrMsg' : 'pushMsg'), { "method": "POST", "body": JSON.stringify({"msg": message, "timeout": delay}) }); } }
Lute 是一款结构化的 Markdown 引擎,支持 Go 和 JavaScript。
MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。
Markdown 是一种轻量级标记语言,用户可使用纯文本编辑器来排版文档,最终通过 Markdown 引擎将文档转换为所需格式(比如 HTML、PDF 等)。
InfluxDB 是一个开源的没有外部依赖的时间序列数据库。适用于记录度量,事件及实时分析。
应用程序编程接口(Application Programming Interface)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
大数据(big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。
Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。
FlowUs.息流 个人及团队的新一代生产力工具。
让复杂的信息管理更轻松、自由、充满创意。
Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。
Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。
知乎是网络问答社区,连接各行各业的用户。用户分享着彼此的知识、经验和见解,为中文互联网源源不断地提供多种多样的信息。
BookxNote 是一款全新的电子书学习工具,助力您的学习与思考,让您的大脑更高效的记忆。
笔记整理交给我,一心只读圣贤书。
强迫症(OCD)属于焦虑障碍的一种类型,是一组以强迫思维和强迫行为为主要临床表现的神经精神疾病,其特点为有意识的强迫和反强迫并存,一些毫无意义、甚至违背自己意愿的想法或冲动反反复复侵入患者的日常生活。
TextBundle 文件格式旨在应用程序之间交换 Markdown 或 Fountain 之类的纯文本文件时,提供更无缝的用户体验。
服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。
发布对别人有帮助的原创内容是最好的 SEO 方式。
HTML5 是 HTML 下一个的主要修订版本,现在仍处于发展阶段。广义论及 HTML5 时,实际指的是包括 HTML、CSS 和 JavaScript 在内的一套技术组合。
Shell 脚本与 Windows/Dos 下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比 Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,因为它使用了 Linux/Unix 下的命令。
Latke 是一款以 JSON 为主的 Java Web 框架。
Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。
VirtualBox 是一款开源虚拟机软件,最早由德国 Innotek 公司开发,由 Sun Microsystems 公司出品的软件,使用 Qt 编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。