Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>thief-book-turbo-txtNew to Visual Studio Code? Get it now.
thief-book-turbo-txt

thief-book-turbo-txt

danchia

|
7 installs
| (0) | Free
TXT novel reader in the VSCode status bar: multi-encoding (no garbled text), instant page-turns, low memory, bookmarks/search/chapters.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

thief-book-turbo

English | 中文

一款 VSCode 摸鱼看书扩展:把 TXT 小说渲染在状态栏上阅读。多编码不乱码、秒翻页、低内存,并自带书签、全文搜索、章节跳转,进度按书记忆、重启自动续读。

  • 🚀 秒翻页:常驻状态栏项,翻页 0.002ms/次,连续翻页不闪烁
  • 🧩 不乱码:jschardet + iconv-lite 自动检测,GBK / Big5 / Shift-JIS / UTF-8 等 30+ 编码
  • 💾 低内存:全书单副本存储,1250 万字 GC 后常驻仅 ~72MB
  • 📚 实用功能:书签 / 全文搜索 / 章节跳转 / 老板键伪装 / 进度按书隔离

快速使用

  1. 安装扩展

    • 在 VSCode 扩展面板搜索 thief-book-turbo 并安装;或参考本地安装与打包用 vsix 离线安装。
  2. 设置书本路径 打开设置(macOS Cmd+, / Windows & Linux Ctrl+,),搜索 thief-book-turbo.filePath,填入本地 TXT 绝对路径。例如:

    • Windows:C:\Users\you\books\demo.txt
    • macOS / Linux:/Users/you/books/demo.txt
    • 切书时改这个配置并执行命令 thief-book-turbo.reloadBook,或修改后让"配置变更自动重载"接管。
  3. 打开命令面板 按 Cmd+Shift+P(macOS)或 Ctrl+Shift+P(Windows / Linux),输入 thief-book-turbo,即可看到所有命令: 命令面板

  4. 开始翻页(默认快捷键) | macOS | Windows / Linux | 功能 | |---|---|---| | Cmd + , | Ctrl + Alt + , | 上一页 | | Cmd + . | Ctrl + Alt + . | 下一页 | | Cmd + ; | Ctrl + Alt + ; | 快捷翻页(输入页码) | | Cmd + ' | Ctrl + Alt + ' | 添加书签 | | Cmd + M | Ctrl + M | 老板键(切换为工作区/Git 状态) |

    Windows 也可以直接打开 Ctrl+Shift+P 命令面板查看对应快捷键。


命令(Cmd/Ctrl+Shift+P → thief-book-turbo)

命令 ID 说明
thief-book-turbo.getNextPage 下一页
thief-book-turbo.getPreviousPage 上一页
thief-book-turbo.getJumpingPage 快捷翻页(输入页码)
thief-book-turbo.displayCode 老板键(切换工作区/Git 状态 / 正文)
thief-book-turbo.reloadBook 重新加载(更换书籍后使用)
thief-book-turbo.addBookMark 添加书签
thief-book-turbo.showBookMarkList 打开书签列表(支持跳转/删除)
thief-book-turbo.jumpToChapter 章节跳转(解析"第X章/回/卷/节")
thief-book-turbo.searchInBook 全文搜索(书内找词跳转)

快捷键

快捷键 (mac) 快捷键 (win) 功能
cmd + , ctrl + alt + , 上一页
cmd + . ctrl + alt + . 下一页
cmd + ; ctrl + alt + ; 快捷翻页
cmd + ' ctrl + alt + ' 添加书签
cmd + m ctrl + m 老板键

配置项(设置 → 搜索 thief-book-turbo)

配置 默认值 说明
thief-book-turbo.filePath (空) TXT 小说绝对路径
thief-book-turbo.pageSize 50 每页字符数(英文书自动 ×2)
thief-book-turbo.isEnglish false 是否为英文书籍
thief-book-turbo.encoding auto auto 自动检测;或手动 utf-8 / gbk / gb2312 / big5 / shift_jis / euc-jp / euc-kr / utf-16le / utf-16be
thief-book-turbo.lineBreak " " 换行在状态栏中的替代符号
thief-book-turbo.statusBarAlign left 状态栏对齐方式:left(贴近中央,默认)或 right(排在内置 ln/col、编码、语言等项右边),切换即时生效
thief-book-turbo.currPageNumber 1 兼容回退页码(新版本每本书独立记忆进度,优先使用 globalState)

核心特性

1. 多编码 TXT 不乱码

自动检测 TXT 文件编码(jschardet + iconv-lite),支持:

  • UTF-8(含带 BOM)
  • GBK / GB2312 / GB18030(最常见的国标中文编码)
  • Big5(繁体)
  • Shift-JIS / EUC-JP(日文)
  • EUC-KR(韩文)
  • UTF-16LE / UTF-16BE(带 BOM 自动识别)
  • ISO-8859 / windows-125x 等单字节编码

检测策略(src/textEncoding.js):BOM 优先 → UTF-8 严格校验(采样 1MB)→ jschardet 采样检测(前 64KB,置信度 ≥0.8 才信任)→ 回退链 utf-8 → gbk → big5 按解码质量择优。小样本(几 KB)检测不可靠的问题由回退链兜底。

如果自动检测仍不理想,可在设置中手动指定编码(见上方配置表)。

2. 性能优化

  • 吃内存更少:全书只保留一份解码后的文本,不做全文正则清洗生成副本;换行等清洗只在翻页时对当前页执行
  • 翻页更流畅:状态栏使用常驻 StatusBarItem(连续翻页不闪烁、不抢其他扩展的消息),翻页为 O(每页字符数) 纯内存截取
  • 启动不卡顿:workspace.fs.readFile 异步读取;编码检测仅采样 64KB(全量检测慢 13 倍)
  • 进度记忆:页码实时写回全局配置,重启后自动恢复到上次阅读位置

3. 实用功能

  • 章节跳转:自动解析"第X章/回/卷/节"(懒加载并缓存索引),QuickPick 列表一键定位
  • 全文搜索:书内关键词搜索(最多 50 处命中,带上下文摘要),选择后直接跳到所在页
  • 进度按书隔离:每本书独立记忆页码(globalState),换书互不干扰
  • 页码写入防抖:连续翻页时 1 秒合并写一次,减少持久化 IO
  • 配置变更自动重载:修改 filePath / encoding / pageSize 后自动重新加载,无需手动 reload
  • 分片解码:大文件解码分块进行并让出事件循环,加载全程 UI 不冻结
  • 状态栏对齐可调:statusBarAlign 支持 left(贴近中央)与 right(排在内置状态项右侧),切换即时生效

4. 修复的原版问题

  • 页码从 1 开始,不再丢掉每本书的开头内容(原版 off-by-one bug)
  • getJumpingPage(0) 正确视为跳转到第 1 页(原版会误走输入框分支)
  • 书签删除按对象引用匹配,同名书签不会误删

相对旧版(Thief-Book)的新增与改善

本扩展由原版 better-thief-book(Thief Book)改造而来,在保留"状态栏摸鱼看书"核心用法的基础上,补齐了编码兼容与性能短板。

🆕 新增功能

功能 说明
章节跳转 自动解析中英文章节(第X章/回/卷/节、序章/楔子/番外、Chapter/Part/Volume + 数字/罗马数字),QuickPick 一键定位
全文搜索 书内关键词搜索(最多 50 处、带上下文摘要),结果按距当前页最近排序,选择即跳转
进度按书隔离 每本书独立记忆页码(globalState),换书互不干扰,重启自动续读
配置变更自动重载 修改 filePath / encoding / pageSize 后自动重新加载,无需手动 reload
多语言支持 跟随 VSCode 界面语言自动切换中文 / 英文(含命令标题、配置描述、状态栏提示)
手动编码指定 自动检测失败时可强制指定 gbk / big5 / utf-16le 等编码,兜底解决顽固乱码
老板键伪装升级 一键切换为"工作区/Git 状态"(文件 · modified、分支 · N changes),不再暴露固定假文本
状态栏对齐可调 新增 statusBarAlign 配置,内容可在状态栏左右两侧自由切换

⚡ 性能与健壮性改善

改善点 原版(Thief-Book) 本版(thief-book-turbo)
编码支持 仅 UTF-8,GBK/Big5 必乱码 jschardet + iconv-lite 自动检测,GBK/Big5/Shift-JIS/EUC-KR 等 30+ 编码不乱码
内存占用 全文多次 replace 生成多份副本 全书单副本,清洗只在翻页时对当前页执行;1250 万字 GC 后常驻仅 ~72MB
翻页体验 setStatusBarMessage 频繁闪烁、抢消息 常驻 StatusBarItem,翻页 0.002ms/次,亚毫秒级连续翻页
启动速度 同步读取阻塞界面 异步读取 + 分片解码(让出事件循环)+ 编码检测仅采样 64KB,38MB 全本 300ms 加载
页码正确性 off-by-one:第 1 页丢失开头 50 字 页码从 1 正确开始
健壮性 — 路径首尾空格防御(trim)、页码写入防抖(1s 合并)、书签删除按引用匹配(防同名误删)

测试

测试书籍已做脱敏处理(统一编号,不标注真实书名与来源)。所有书籍 txt 已被 .gitignore 的 *.txt 规则排除,不会入库。

模拟用户测试(data/ 目录,20 本书全量回归,2026-08-31)

node --expose-gc test/simulateUser.js 依次模拟真实阅读会话:打开书 → 翻页 ×20 → 上一页 ×10 → 随机跳页(首/中/后段乱码抽查)→ 全文搜索 → 章节解析 → 添加书签 → 老板键 → reload 重置,每本书 7 项断言(第一页/翻页/跳页乱码/搜索/书签/老板键/reload)全部通过。

编号 大小 编码 字符数 加载 下一页 章节 结果
测试书-01 22.85MB gbk 自动识别 1292 万 179ms 0.002ms 1091 全部 OK(无乱码)
测试书-02 22.68MB utf-8 813 万 100ms 0.003ms 2360 全部 OK
测试书-03 22.19MB utf-8(BOM) 862 万 101ms 0.003ms — 全部 OK
测试书-04 17.63MB gbk 自动识别 1023 万 185ms 0.004ms 969 全部 OK(无乱码)
测试书-05 15.71MB utf-8 607 万 70ms 0.004ms 1269 全部 OK
测试书-06 14.41MB utf-8 512 万 67ms 0.004ms 1300 全部 OK
测试书-07 11.22MB utf-8 403 万 76ms 0.002ms 1128 全部 OK
测试书-08 7.83MB utf-8 284 万 59ms 0.002ms 1027 全部 OK
测试书-09 7.09MB utf-8 401 万 34ms 0.003ms 256 全部 OK
测试书-10 5.68MB utf-8 201 万 48ms 0.002ms — 全部 OK
测试书-11 5.01MB utf-8 180 万 24ms 0.002ms — 全部 OK
测试书-12 4.56MB utf-8 163 万 41ms 0.003ms — 全部 OK
测试书-13 2.30MB utf-8 83 万 39ms 0.002ms 287 全部 OK
测试书-14 0.64MB utf-8 22 万 6ms 0.002ms — 全部 OK
测试书-15 0.50MB utf-8 18 万 4ms 0.002ms 10 全部 OK
测试书-16 0.49MB utf-8 18 万 4ms 0.003ms 7 全部 OK
测试书-17 0.41MB utf-8 14 万 4ms 0.003ms 42 全部 OK
测试书-18 0.32MB utf-8 11 万 3ms 0.003ms — 全部 OK
测试书-19 0.17MB utf-8 6 万 1ms 0.003ms — 全部 OK
测试书-20 0.08MB utf-8 3 万 12ms 0.020ms — 全部 OK

测试集含 2 本 GBK 大部头(1023 万 / 1292 万字符)自动识别正确、零乱码;最大单本 258,373 页,加载 179ms、翻页 0.002ms/次。GC 后单书常驻内存 47.7~78.5MB(RSS 随测试进程累计升高属正常)。

极限场景基准(node --expose-gc test/benchBook.js)

指标 结果
编码识别 自动识别正确,全书无乱码(抽样页 U+FFFD = 0)
加载耗时 分片解码,UI 全程不冻结
翻页速度 亚毫秒级(60fps 标准为 16ms)
随机跳页 O(每页字符数) 纯内存截取
常驻内存 GC 后 ~72MB(1250 万字全本)

本地安装与打包

# 本地安装已打包好的 vsix(也可以在 VSCode 扩展面板 → ... → 从 VSIX 安装)
code --install-extension build/thief-book-turbo-0.1.7.vsix

# 重新打包(--no-yarn 是因为项目有 yarn.lock 但使用 npm)
bash build-vsix.sh            # 默认读取 package.json 的 version
bash build-vsix.sh 0.1.7      # 或指定版本号

# 提示:若 npm 缓存目录被锁定(EPERM),指定全新缓存目录即可:
# npm_config_cache="C:/Users/dan/AppData/Local/Temp/npm-cache-turbo" npx --yes @vscode/vsce package --no-yarn --out build/thief-book-turbo-0.1.7.vsix

打包产物约 740KB,仅包含运行时依赖(iconv-lite / jschardet / safer-buffer)、src/ 源码、doc/ 图片(含 README 使用的 usage.png)与双语 nls;data/ 测试书籍、test/ 测试代码等均不进入包内(见 build-vsix.sh)。

开发调试

# 依赖安装(jschardet / iconv-lite);npm 走本地代理 127.0.0.1:7897(见 .npmrc)
npm install

# 编码 + 分页逻辑单元测试(34 项,不依赖 vscode)
node test/runEncodingTest.js

# 模拟用户真实阅读会话(遍历 data/ 下所有 txt:翻页/跳页/搜索/章节/书签/老板键/reload)
node --expose-gc test/simulateUser.js
node --expose-gc test/simulateUser.js "D:/books/任意小说.txt"

# 性能基准(默认测 data/ 下最大的测试书,可传任意 txt 路径)
node --expose-gc test/benchBook.js
node --expose-gc test/benchBook.js "D:/books/任意小说.txt"

# 在 VSCode 中调试:F5 启动扩展宿主(需 devDependencies 已安装)

更新日志

v0.1.7(2026-08-31)

  • 🐛 修复:默认 50 字/页时状态栏正文被截断(只剩 33 字 + …)的问题。显示上限改为动态跟随 pageSize(当页正文 + 24 余量),默认配置下整页内容 + 页码完整显示、绝不截断正文;仅当 pageSize 调到远超状态栏物理宽度时才截断,且始终保留尾部页码、全文在 tooltip。

v0.1.6(2026-08-31)

  • 🐛 修复:状态栏 [当前页]/[总页数] 显示不全的问题。超长文本截断时不再从头部硬切,而是优先保留尾部页码——只截断正文部分,页码始终完整显示,全文仍可在 tooltip 中查看。

v0.1.5(2026-08-31)

  • ✨ 新增配置 thief-book-turbo.statusBarAlign:left(贴近状态栏中央,默认)/ right(排在内置 ln/col、编码、语言等状态项右侧),切换即时生效
  • 🐛 修复:状态栏内容大屏贴边、小屏拥挤的问题(左侧改为低优先级贴近中央,右侧改为排在内置项右边、通知铃铛左边)

FAQ

Q: 打开书后状态栏没显示内容? A: 检查 thief-book-turbo.filePath 是否指向正确的 TXT 绝对路径,然后执行 thief-book-turbo.reloadBook。

Q: 显示乱码怎么办? A: 先在设置里看插件状态栏 tooltip 显示的识别编码是否正确;不对的话手动设置 thief-book-turbo.encoding 为实际编码(如 gbk),再 reloadBook。

Q: 为什么每次只显示 50 个字? A: 状态栏空间有限,这是刻意的分页设计。连续按快捷键即可"连续翻页",或调大 pageSize。

Q: 小说内容在状态栏的位置不满意? A: 设置 thief-book-turbo.statusBarAlign:left 让内容贴近状态栏中央(默认),right 让内容排在内置 ln/col、编码、语言等状态项的右边,切换即时生效。

Q: 换书之后页码不对? A: 执行 thief-book-turbo.reloadBook 会重置页码并重新加载新书。修改设置后配置变更也会自动重载。

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft