Skip to content
Lezy233Public

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

26 Commits

Folders and files

Repository files navigation

Indentree

图像化目录 / Markdown / 树形图切换工具

使用

开箱即用:Indentree

纯前端静态站:无构建步骤、无后端、无登录——文件不离开浏览器(本地存储只用来记住主题、面板宽度和树形符号)。

功能

三视图实时互转

  • Markdown(中间):Ace 编辑器 + vim 键位(i 插入 / Esc 普通模式 / hjkl、yy、p、u 等),状态条显示当前模式
  • 大纲(左侧):Notion 式可拖拽列表,行内改名、增删、缩进、多选、整体拖拽
  • 树形图(右侧):只读的分支结构预览,符号与长度可自定义

三个视图都是同一棵「中间树」的投影:任一视图的改动都会回流到中间树,再刷新其余视图。

Markdown 往返保真

  • 行内语法原样保留:**粗体**、`代码`、[链接](url)
  • 叶子块保真:代码围栏、缩进代码块、表格、HTML 块整块保留,不被拆成行
  • 无法用 Markdown 表达的操作会被拒绝并提示(例如把标题拖到层级更深的标题之上),而不是悄悄改坏文档

大纲编辑

  • 双击改名;Enter 新建同级;Tab / Shift+Tab 缩进 / 取消缩进;Backspace 删除空节点
  • 拖拽排序:落点分 上 / 内 / 下 三区——拖到行中间是「成为子节点」,拖到边缘是「同级前 / 后」
  • 多选:checkbox 点选、Shift 连选(同父约束),选中后整体拖拽或批量删除
  • 撤销:改名 / 排序 / 缩进 / 新建 / 删除 / 拖拽落点全覆盖

手机 / 触屏

  • 窄屏自动切单栏,顶部与底部都有视图切换
  • 空白处单击取消选择,双击在末尾新建条目
  • 拖拽时底部浮出「🗑 拖到此处删除」通栏;批量删除有二次确认
  • 右上角「+」动作菜单:在末尾新建条目 / 撤销 / 删除选中项

其他

  • 树形图自定义:分支 / 末分支 / 竖线 / 横线符号与长度、三套预设、「复制分享链接」(设置写进 URL)、设置本地保存
  • 三栏面板:拖拽 gutter 调宽、推到底收起、点侧边小标签恢复、布局本地保存
  • 主题三态:跟随系统 / 浅色 / 深色,Ace 编辑器联动
  • 错误行级标红:Markdown 解析失败时状态条给出行号,并在编辑器里标红该行

快捷键

场景 按键 作用
大纲行 Enter 进入行内编辑
大纲行 双击 进入行内编辑
行内编辑 Enter 提交并在其后新建同级节点
行内编辑 Tab / Shift+Tab 缩进 / 取消缩进
行内编辑 Backspace(内容为空) 删除该节点
行内编辑 Esc 提交并退出编辑
大纲 Delete / ⌘⌫(Mac) 删除选中项(批量)
大纲 Esc 取消选择 / 关闭菜单与确认条
大纲 ⌘Z 撤销上一步大纲操作
大纲空白处 单击 / 双击 取消选择 / 在末尾新建条目
Markdown vim 键位 i Esc hjkl yy p u…

行内编辑框 / Markdown 栏聚焦时,⌘Z 归输入框自己的文本撤销;要撤销大纲操作请先 Esc 退出编辑,或用「+」菜单里的撤销。

本地运行

ES module + vendor/ 静态资源,需要一个 http 服务(不能直接 file:// 打开):

python3 -m http.server 8000
# 浏览器打开 http://127.0.0.1:8000/

开发

index.html            页面接线(DOM / 存储 / 事件),不放进 src/
src/*.mjs             纯函数模块(解析、序列化、树操作、选择、拖拽几何、撤销栈、面板布局…)
test/*.test.mjs       node:test 单元测试
vendor/               第三方静态资源(Ace、SortableJS),附来源与用法说明
docs/                 架构决策(ADR)与 agent 约定
.scratch/indentree/   需求 spec 与逐票实现记录
node --test            # 单元测试

已知边界

  • Markdown 表达边界:少数方向正确的操作无法用 Markdown 表达(如把标题拖到更深层标题之上)会被拒绝并提示——这是格式边界,不是拖拽缺陷
  • 撤销栈:只跟踪大纲侧改动;在 Markdown 栏改过文本后会清空(避免回滚掉文本区的改动);不做重做

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages