Code Digest
在编辑器里读长文本,不开新窗口、不切应用、不离开当前文件。
正文以行尾注释的形态出现在你正打开的文件里,样式和编辑器的行内提示一致;
它是纯渲染层,不修改文件、不移动光标,所以你阅读时照样能正常写代码。
它解决什么问题
翻文档、读规范、看长文时,常见的做法是切浏览器或另开一个预览页——窗口一换,上下文就断了。
Code Digest 把文本直接铺在你正在编辑的那份文件下方,视线不用离开代码区:
- 不新建标签页,不打断当前的编辑状态
- 不改动文件,保存、
git diff、格式化都不受影响
- 不接管光标,阅读期间可以继续敲代码
- 关掉即消失,编辑器里不留痕迹
两种阅读方式
沉浸模式(推荐)
Ctrl+Alt+O 开启。视口下方约 30% 的位置出现几行灰色注释,一段一行,横向铺满窗口。
- 滚动文件时文字跟着文档走,停稳后自动重绘到新的底部位置
Ctrl+Alt+PageDown / PageUp 前后翻页
- 再按
Ctrl+Alt+O 收起,Ctrl+Alt+X 彻底关闭
实现上用 TextEditorDecorationType 绘制,属于渲染层:不会被编辑器取消,
也不与 Copilot、通义灵码等补全插件争抢通道。
文档模式
Ctrl+Alt+Shift+O。把文本渲染成一个虚拟只读文档:正文作为注释,每隔若干行插入真实代码片段,
带语法高亮、行号和一个普通源文件名。适合想在大屏上连续看长章节的场合。
虚拟文档不落盘、不进 git、不出现在最近打开列表,关闭即销毁。
快捷键
| 快捷键 |
作用 |
Ctrl+Alt+O |
沉浸模式开关 |
Ctrl+Alt+X |
关闭当前文本(清掉注释、卸载内容) |
Ctrl+Alt+U |
阅读偏好(显示行数 / 翻页步长 / 改键) |
Ctrl+Alt+Shift+O |
文档模式 |
Ctrl+Alt+Shift+S |
切换文件 |
Ctrl+Alt+PageDown、Alt+PageDown、Ctrl+Alt+J |
下一页 / 下一节 |
Ctrl+Alt+PageUp、Alt+PageUp、Ctrl+Alt+K |
上一页 / 上一节 |
Ctrl+Alt+L |
跳到指定章节(列表选择) |
Ctrl+Alt+G |
跳到指定页 / 章节(直接输入页码) |
Ctrl+Alt+Q |
紧急隐藏(收起注释;文档模式下切回原文件) |
自定义翻页
Ctrl+Alt+U 打开偏好面板:
- 每次显示行数:3-5 行最自然
- 每次翻页前进:
0 = 跟随显示行数(默认,首尾刚好接上);1 = 逐行慢读;8、10 = 快速跳读
- 每行最多字符:超出自动折到下一行。
0 = 不折行(整段一行,长段落需横向滚动);中文建议 30-60
- 自定义快捷键:直接跳到 VSCode 快捷键面板,给
Next Section、Previous Section、Close Current Book
绑任意组合键
也可以直接改设置:codeDigest.inline.lines、codeDigest.inline.step、codeDigest.inline.chars。
翻页时状态栏会显示当前区间,例如 13-16 / 240(当前行-结束行 / 总行数)。
跳转
Ctrl+Alt+G 打开输入框,一个框吃下所有写法:
| 输入 |
含义 |
12 或 12页 |
第 12 页(文档模式下视为第 12 章) |
c12 |
第 12 章,c 是 chapter 的缩写 |
第12章 / 12回 / 12节 |
同上,章/回/节通用 |
35% |
跳到全文 35% 处 |
大闹天宫 |
章节标题含这几个字的第一章 |
输入时会实时校验,识别不了会直接提示;页码超出范围会自动夹到最后一页。
跳转会同时保存进度,下次打开还在原处。
想要列表式挑选章节用 Ctrl+Alt+L,两者互补。
配置
| 配置项 |
默认 |
说明 |
codeDigest.inline.lines |
4 |
沉浸模式一次显示几行(1-10) |
codeDigest.inline.step |
0 |
每次翻页前进几行,0 = 跟随显示行数 |
codeDigest.inline.chars |
0 |
每行最多几个字符,0 = 不折行(长段落横向滚动);中文建议 30-60 |
codeDigest.disguise |
typescript |
文档模式的语言外观:typescript / java / go / python / markdown |
codeDigest.lineWidth |
76 |
文档模式每行视觉宽度,76 ≈ 38 个汉字 |
codeDigest.injectCode |
true |
文档模式是否插入代码片段 |
codeDigest.restorePosition |
true |
是否记住上次读到的位置 |
支持的文本
- 格式:
.txt、.md
- 编码:UTF-8、GBK、UTF-16(自动识别)
- 章节:识别「第X章 / 第X回 / 序章 / 番外」等标题;识别不到时每 300 行切一节
导入时会把文件复制到扩展的存储目录,原文件不动。删掉扩展会一并清掉这些副本。
已知限制
- 装饰文本本身不能自动换行(VSCode 的硬限制)。想要折行请把
codeDigest.inline.chars 设成 30-60,
插件会按字符数把长段落切成多行分别绘制;设为 0 时长段落需要横向滚动
- 沉浸模式的文字挂在文件某几行上,那几行如果滚出视口,文字也跟着走(这是特性,不是 bug)
- 文档模式的面包屑会显示虚拟文档目录名,介意可关闭面包屑(
View: Toggle Breadcrumbs)
隐私
不联网、不收集数据、无遥测。所有文本只在本机读取和渲染。
开发
npm install
npm run compile
npm run icon # 重新生成图标
node scripts/release.mjs --install # 打包并安装到本机
按 F5 可在扩展开发宿主里调试。发布流程见仓库内 PUBLISH.md。
License
MIT