HugZephyr
关注
124636 号成员,2024-01-05 18:44:41 加入
1.5k
个人主页 浏览
557
帖子 + 回帖 + 评论
66h49m
在线时长
  • [js] 高亮选中文本和快捷键搜索下一个关键词

    2024-12-18 14:30

    我之前搞过一个, 高亮搜索插件弹窗 自动填充选中文本的, 感觉有空可以合并下
    [js] 搜索时自动填充选取内容

  • 笔记本分类

    2024-12-06 17:25

    太赞同了, 搜索比目录好用多了, 文档树很难维护的

  • [css] 字体样式排除下划线

    2024-12-02 21:20

    在你的 css 里面加上下划线颜色

    .protyle-wysiwyg [data-node-id].bq [data-type~=u]{ color: red; border-bottom-color:red; }
  • 喜欢之前默认主题,想恢复,请教怎么弄?

    2024-12-02 16:52

    只改了下背景色, 其他的看起来没啥改动

    .protyle-wysiwyg .bq {background-color: var(--b3-theme-surface-light);}
  • [css] 字体样式排除下划线

    2024-12-02 16:28

    颜色自己调

    .protyle-wysiwyg span[data-type~=u] {border-bottom-color:#222222;}
  • 有没有自定义表格样式的 css 代码

    2024-12-02 14:50

    颜色自己调吧

    /* 设置偶数行颜色*/ .protyle-wysiwyg table tr:nth-child(even) td{background-color: var(--b3-theme-background);} /* 设置表头边框颜色 */ .protyle-wysiwyg table th{border-color:red;} /* 设置表格边框颜色 */ .protyle-wysiwyg table td{border-color:red;}
  • 有没有自定义表格样式的 css 代码

    2024-12-02 12:49

    没看出来, 这个主题和默认的有啥区别, 不也是开头粗体么, 无非就是少个灰白间隔

    你是想把这个间隔去掉么?

  • [js] 快捷键 合并和拆分块 -- 完善版

    2024-12-02 09:29

    自动置顶是什么意思, 截图看下(原始内容, 操作后效果, 希望效果)

  • 复制行内代码时,默认带上 Markdown 语法的反引号 `

    2024-11-29 16:12

    [js] 复制行级代码或图片时, 替换原始复制

    可以看下这个: 光标在行级代码内部, 且不选中字符, 使用 ctrl+c 只复制纯文本

  • 建议给“未引用资源”加个“刷新”键

    2024-11-29 11:48

    js 可以做, 可以等大佬做一下

    方式一: 增加刷新按钮

    监听 未引用的资源文件, 有就增加刷新按钮

    (不太好处理, 感觉有点浪费性能)

    方式二: 使用快捷键, 比较好做

    触发流程

    1. 监听到刷新快捷键后
    2. 触发快捷键 alt+p 两次
    3. 点击 资源按钮
  • 请问能不能在笔记本里面出个类似于文件夹的东西

    2024-11-26 09:20

    该说不说, 我就是因为 思源文档也可以当文件夹才入坑的, 哈哈

  • shift 键相关

    2024-11-26 09:19

    点击文档左右侧的时候, 文档树会变蓝

    这个时候, 可以通过 shift + 上下箭头 选取文档, 类似于普通文本编辑那样

    image.png

  • 有办法点圆点折叠吗,左边的小三角不习惯

    2024-11-22 08:15

    圆点不好做,因为每个块的原点不一样

    这个鼠标中键折叠的你试试

    [js] 鼠标中键折叠块

  • 从思源代码块复制代码时, 不要删掉末尾换行

    2024-11-21 16:19

    末尾的空格也没了

    image.png

    image.png

  • 思源笔记能否设置标签点击进去默认是全局搜索而不是固定搜索?

    2024-11-19 16:44

    ctrl+shift+f 默认不就是全局搜索么?

  • 求助实现多个块的快速合并及折叠

    2024-11-19 14:31

    选中后 ctrl+q 触发, 触发后会将选中的内容转换成引用, 过程中会有点卡顿, 因为不知道为啥, 延时低了就会报错, 所以只能先让 sleep 时间长一点

    触发前, image.png, 触发后, image.png

    (()=>{ // 延迟执行 function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } function press_once(keyInit, selector = null) { keyInit["bubbles"] = true; if (selector == null) { selector = document.querySelector('[data-type="wnd"].layout__wnd--active .protyle:not(.fn__none) .protyle-wysiwyg.protyle-wysiwyg--attr') } else if (typeof selector === 'function') { selector = selector() } else if (typeof selector === 'string') { selector = document.querySelector(selector) } if (!selector) return selector.dispatchEvent(new KeyboardEvent('keydown', keyInit)); selector.dispatchEvent(new KeyboardEvent('keyup', keyInit)); } async function add_new_line_before() { press_once({ key: 'Enter', ctrlKey: true, shiftKey: true, keyCode: 13, // 不推荐使用,但某些情况下需要 }); } function click_right(ele) { // 创建一个右键点击的 MouseEvent const rightClickEvent = new MouseEvent('contextmenu', { bubbles: true, cancelable: true, view: window, button: 2 }); ele.dispatchEvent(rightClickEvent); } // 获取光标所在的元素 function getElementAtCursor() { const selection = window.getSelection(); if (selection.rangeCount > 0) { const range = selection.getRangeAt(0); const startContainer = range.startContainer; // 如果是文本节点,获取其父元素 const element = startContainer.nodeType === 3 ? startContainer.parentNode : startContainer; return element; } return null; // 如果没有选中内容或光标位置无效 } // 获取当前选中的文本 async function get_selected_data() { // 触发 ctrl+c, 复制选中的块 document.execCommand('copy'); // 获取剪贴板文本 return await navigator.clipboard.readText(); } // 设置文本 async function paste_data(data) { // 将处理后的文本复制到剪贴板 await navigator.clipboard.writeText(data); // 触发 ctrl+v, 粘贴处理后的内容 document.execCommand('paste'); await sleep(20) } // 清空选中的内容: 先剪切, 再增加空行 async function clear_selected_data() { // 触发 ctrl+x, 剪切选中的块, 目的是删除原有内容 document.execCommand('cut'); await add_new_line_before() } // 转换引用 - 使用系统自带的转换功能 function convert_quote_from_sys(event) { click_right(event.target) // 创建 mouseover 事件 const mouseOverEvent = new MouseEvent('mouseover', { view: window, bubbles: true, cancelable: true, }); let turn_ele = document.querySelector('.b3-menu__items>[data-id="turnInto"]') turn_ele?.dispatchEvent(mouseOverEvent); turn_ele = turn_ele?.querySelector('.b3-menu__submenu>.b3-menu__items>[data-id="quote"]') if (!turn_ele) return false turn_ele.click() return true } // 转换引用 - 使用自己实现的的转换功能 async function convert_quote_from_my(clipboardText) { // 删除原有内容, 并增加空行 await clear_selected_data() let clipboardTextRet = clipboardText .split('\n') .map(line => "> " + line) .join('\n') // 粘贴处理后的文本 await paste_data(clipboardTextRet); } async function fold_block() { await sleep(300); let ele = getElementAtCursor(); if (!ele) return while (!ele.parentNode.classList.contains("protyle-wysiwyg--attr") && ele.getAttribute('data-type') != 'NodeBlockquote') { ele = ele.parentNode } click_right(ele) await sleep(300) document.querySelector('.b3-menu__items>[data-id="fold"]')?.click() } // 合并选中的块 async function handle_merge(event) { // 获取当前选中的文本 let clipboardText = await get_selected_data(); // 如果不需要处理, 则直接返回 if (clipboardText == "") { console.log("不需要处理") return; } if (convert_quote_from_sys(event)) { console.log("系统转换成功") } else { await convert_quote_from_my(clipboardText) console.log("自定义转换成功") } await fold_block(); } // 事件监听 document.addEventListener('keydown', async (event) => { // 检查是否按下了 Ctrl + q if (event.ctrlKey && event.key === 'q') { // event.preventDefault(); // 防止快捷键默认行为 await handle_merge(event); } }); })()
  • 求助集市分组以及隐藏引述块的角标

    2024-11-15 09:30

    你是开了什么主题么, 为什么我没有右上角这些内容

    image.png

  • 求助集市分组以及隐藏引述块的角标

    2024-11-14 21:07

    是只隐藏了计数

    备注不知道你要什么效果

    其他的功能我没用过, 没找到在哪使用 😂

  • 求助集市分组以及隐藏引述块的角标

    2024-11-14 19:12

    引述块, 超级块

    [data-type="NodeBlockquote"], [data-type="NodeSuperBlock"]{ .protyle-attr--refcount.popover__block {display:none;} }
  • 图标隐藏

    2024-11-14 11:35

    .protyle-background__icon {display:none;}

  • 能不能通过 API 获取“当前活动文档的 ID”?

    2024-11-14 10:19

    这个可以不?

    // 打印显示内容的文档的id document.querySelectorAll('div.fn__flex-1.protyle:not(.fn__none) span.protyle-breadcrumb__item.protyle-breadcrumb__item--active').forEach( file_ele => console.log(file_ele.getAttribute("data-node-id")) ) // 打印所有页签文档的id document.querySelectorAll('div.fn__flex-1.protyle span.protyle-breadcrumb__item.protyle-breadcrumb__item--active').forEach( file_ele => console.log(file_ele.getAttribute("data-node-id")) )
  • [js] 鼠标中键折叠块

    2024-11-13 09:38

    代码是通过模拟点击这个菜单里面的折叠 实现的

    必须有这个按钮之后, 中键才会生效, 我个人体验下来, 也感觉不是特别丝滑

    image.png

  • 有没有大佬帮忙做一个中键折叠的功能

    2024-11-12 10:51

    功能已更新, 可以去试下, 上面说的问题(短时间内第二次点击不生效)也解决了

    [js] 鼠标中键折叠块

  • 有没有大佬帮忙做一个中键折叠的功能

    2024-11-11 20:13

    这个, 应该能符合你的需求

    备注

    1. 只会折叠标题, 感觉你这个需求挺有意思的, 后续可能会研究下怎么折叠其他种类的块
    2. 折叠之后, 马上再次点击不会生效(不会展开), 需要等待 1s(很短)后再次点击才会生效, 应该是思源本身的问题, 折叠的图标连续两次点击, 第二次也不会生效, 写味也有这个问题, 暂时先不管了
    document.addEventListener('mousedown', function(event) { // 判断是否是中键点击 if (event.button === 1) { // 中键的 button 值为 1 let fold_ele = document.querySelector('.protyle-gutters:not(.fn__none)')?.querySelector('[data-type="fold"]'); if (fold_ele) { event.preventDefault(); // 阻止默认中键点击的行为 fold_ele.click() } } });
  • [js] 解决双击选取内容末尾带空格的问题

    2024-11-10 21:56

    像这种的, endOffset 会是负数, 导致代码报错

    image.png

  • [js] 解决双击选取内容末尾带空格的问题

    2024-11-10 19:43

    @JeffreyChen @fpxkHaj8dE 问题已经解决, 帖子的代码已经更新了

  • [js] 解决双击选取内容末尾带空格的问题

    2024-11-10 18:52

    截个图, 标记一下呗, 我这种看着没啥问题

    image.png

  • 建议行级代码内备注不要阻断文本复制

    2024-11-07 19:38

    最近刚做过这个, 光标在行级代码里面(不选中)的时候, ctrl+c 复制的是这个行级代码的纯文本, 而不是整行, 可以看下

    备注: 里面还有替换复制图片的功能, 如果不需要, 就把这个删掉

    handle_cp_img(element);

    [js] 复制行级代码或图片时, 替换原始复制