Block Editor

by MarcBolo
5
4
3
2
1
Score: 50/100

Description

Notion 风格的 Obsidian 块编辑插件:块手柄、拖拽排序、多选、块类型转换与斜杠命令。

Reviews

No reviews yet.

Stats

4
stars
62
downloads
0
forks
1
days
1
days
1
days
0
total PRs
0
open PRs
0
closed PRs
0
merged PRs
0
total issues
0
open issues
0
closed issues
14
commits

Latest Version

2 days ago

Changelog

优化一些细节

README file from

Github

Block Editor

English | 简体中文

Notion 风格的 Obsidian 块编辑插件:块手柄、拖拽排序、多选、块类型转换、分栏与块颜色。仅桌面端。

alt text alt text

功能

  • 块手柄:鼠标悬停或光标所在块的左侧显示六点拖拽手柄(Notion 样式),对应块浅色高亮

  • 拖拽排序:拖动块出现浮动预览与插入指示线(宽度取编辑器行宽);拖到编辑区上下边缘自动滚动;拖到列表 / 引用 / Callout 正文右侧变为其子块(缩进 4 个字符,可用「缩进步长」调整),向左拖出自动降级缩进;拖到普通段落 / 标题右侧时自动把目标转为列表项(- 前缀)并把被拖块缩进为其子项(Markdown 下只有列表项有父子结构);拖到目标块左 / 右边缘快速与它合成两栏分栏;按住 Alt 拖拽 = 复制到落点;支持跨分屏拖到其他文档(移动 = 目标插入 + 源删除,Alt 同样为复制;同一文件的分屏按文档内移动处理)

  • 拖动动作提示:拖动时浮动预览上实时显示松手将执行的动作——移动 / 缩进为子块 / 复制(Alt)/ 移动到其他文档 / 复制到其他文档(Alt)/ 分栏 · 左 / 分栏 · 右,不会出现落点提示时(拖回自身等)不显示

  • 多选:Shift + 点击手柄把块加入 / 移出选区,可整组拖动、删除、复制、批量转换类型;Esc 退出多选

  • 块菜单:点击手柄弹出菜单——18 种类型互转(代码块带 30 种语言子菜单、Callout 带 26 种类型子菜单)、折叠块展开 / 折叠切换、上/下方插入块、复制块内容 / 生成块 ID / 引用其他块…、创建副本(副本不带块 ID)、上移 / 下移、块颜色(设置 / 清除)、分栏(组合为分栏 / 添加分栏 / 添加一栏 / 追加一行 / 取消分栏)、本块字数、删除(标题为删除整段)

  • 斜杠命令:正文输入 / 模糊搜索(子序列匹配 + 相关度排序,中英文可混查)快速转换块类型,或插入媒体嵌入(图片 / 音频 / 视频 / PDF,从仓库选择附件;代码块内自动禁用)

  • 块 ID:生成易拼写的 ^block-id(正确处理代码块 / 列表等结构化块 ID 独立成行的规则)、复制块链接、图形化「引用其他块…」(选笔记 → 选块 → 插入 [[笔记#^id]] 链接)、一键清除全文块 ID(带确认框,防误触)

  • 分栏:Shift 多选相邻块后菜单「组合为分栏」(按空行切段,每段一栏);阅读视图并排显示;Live Preview 渲染为并排分栏,点击展开为源码编辑,点击外部自动收回;支持多行分栏(「追加一行」,宽度按 60-40 / 60-40/50-50 分配)与栏内编辑(拆分一栏 / 合并右栏 / 插入一栏 / 行上移 / 行下移);外壳可写 gap= radius= valign= border 覆盖默认外观,子栏可写 bg= bg-dark= 设背景色;分栏块菜单还支持「添加一栏」「取消分栏」,可整体拖动 / 删除 / 跨文档搬运

  • 块颜色:任意块可设置背景色(预设色板 / 原生取色器 / 自定义 hex);hex 浅色自动推导深色主题配色与正文对比色,深浅主题自动跟随

  • 链接打开位置:内部链接 [[...]] 可配置在当前标签页 / 新标签页 / 分屏 / 新窗口打开;Ctrl/Cmd+点击等修饰键行为不受影响

  • 命令面板:Alt+↑/↓ 移动块、缩进 / 反缩进、打开块菜单、生成块 ID、引用其他块…、重复当前块、设置 / 清除块颜色、清除块 ID,以及每种类型独立的「转换为」命令

设置

设置 → Block Editor:

设置项 默认 说明
显示块手柄 开 关闭后仅保留命令与斜杠入口
手柄跟随光标 开 关闭后仅在鼠标悬停时显示手柄
块悬停高亮 开 悬停时给手柄对应的块加一层浅色高亮背景
高亮颜色 跟随主题 自定义悬停高亮背景色;留空跟随当前主题的悬停色
高亮透明度 0.55 悬停高亮背景的透明度(0~1)
实验:实时预览自渲染分栏 开 开启后实时预览中分栏由插件自渲染(双击进入编辑);关闭时显示原生嵌套 callout
启用斜杠命令 开 / 建议开关
拖拽自动滚动 开 拖到边缘自动滚动
缩进步长 自动 固定空格数或自动检测全文最小缩进;同时决定拖动嵌套插入的缩进(自动时为 4)
点击链接时的打开位置 当前标签页 点击内部链接 [[...]] 时在哪里打开;Ctrl/Cmd+点击等修饰键行为不受影响
默认栏间距 10 px 分栏外壳未写 gap= 参数时的栏间距
默认圆角 8 px 分栏外壳未写 radius= 参数时的栏圆角
默认垂直对齐 拉伸(等高) 分栏外壳未写 valign= 参数时的栏垂直对齐方式
默认边框 关 分栏外壳未写 border 参数时是否显示栏边框
手柄尺寸 20 px 编辑器左侧块手柄的大小
拖拽阈值 4 px 按住手柄拖动的判定位移,小于该位移视为点击弹出块菜单

开发

npm install        # 安装依赖
npm run dev        # 监听构建(开发时用)
npm run build      # 类型检查 + 生产构建 → main.js
npm test           # 行为对照测试(未登记用例对照 scripts/legacy-main.cjs)
npm run test:update # 有意变更行为后重新生成预期差异基线 scripts/parity-baseline.json

开源许可

本项目基于 MIT 许可证开源,你可以自由使用、修改和分发,只需保留原始版权与许可声明。

Copyright (c) 2026 MarcBolo

许可证全文见 MIT License。