Fuck The Boss
在 VS Code 状态栏里读 TXT 小说,左侧目录按章节分组,翻页不打开任何编辑器。
特点
- 状态栏阅读:
[当前章节] [正文… 页码/总页数],不占编辑器空间
- 终端阅读:正文放进控制台(默认一屏 6 行,可配),每行伪装成
[14:32:07] debug 正文内容,
远看就是在跑 npm run dev(见下方「控制台模式」)
- 左侧章节目录:活动栏书本图标 → 每 20 章一个折叠组,点章节直接跳转
- 双向联动:点目录跳正文,快捷键翻页目录自动展开并高亮当前章
- 老板键:一键把章节、正文、目录同时换成伪装内容
- 快:13MB 小说第一次加载约 120ms,之后翻页是纯内存切片(约 0.0002ms/页)
- 编码自适应:UTF-8 / UTF-8 BOM / UTF-16 / GB18030 自动识别
- 多窗口同步:几个窗口同时开着,阅读进度自动跟随
使用
- 点状态栏上的
$(book) 未设置书籍,或命令面板执行 Fuck The Boss: 选择 TXT 文件…
- 选一本 .txt,状态栏立刻开始显示正文
- 点左侧活动栏的书本图标查看章节目录
快捷键
全部是 Alt 组合,不含 Ctrl。
| 快捷键 |
功能 |
Alt+, |
上一页 |
Alt+. |
下一页 |
Alt+; |
跳到指定页码 |
Alt+[ |
上一章 |
Alt+] |
下一章 |
Alt+c |
跳到指定章节(输章号或标题关键词) |
Alt+b |
切换书籍 |
Alt+p |
自动翻页 开/关 |
Alt+t |
控制台阅读 开/关 |
Alt+m |
老板键(隐藏 / 恢复) |
翻页类快捷键不限焦点,编辑器失焦时也能翻。
在控制台里(焦点在终端上)用 j 空格 回车 ↓ → 翻下一屏,k ↑ ← 翻上一屏,
q 关掉终端,r 重画。隐身状态下只认 q 和 Alt+M,敲 j 不会把小说翻回来。
焦点在终端里,Alt 组合键照样能用。
VS Code 有个默认行为:没进 terminal.integrated.commandsToSkipShell 的快捷键,
焦点在终端时会被原样透传给终端,命令层收不到。所以插件在终端里把 ESC + 键
翻译回了命令 —— Alt+M 老板键、Alt+. Alt+, 翻屏、Alt+c 跳章在终端里都有效,
隐身状态下按 Alt+M 也能恢复(这是唯一的出路,别忘了)。
终端底部那行 ▸ watching for changes… · j/k · m stealth · q 就是提示。
重点:Alt+c 可以用标题关键词搜,比如输「炼剑」会列出所有匹配的章节让你选。
配置
搜索设置 Fuck The Boss 即可。常用的几项:
| 配置 |
默认 |
说明 |
filePath |
空 |
TXT 绝对路径。留空则用书架最近打开的书 |
pageSize |
50 |
每页字符数(见下方注意事项) |
noCutWords |
true |
在句子/段落边界断页,不把词劈开 |
isEnglish |
false |
英文书,页宽自动 ×2 |
lineBreak |
一个空格 |
段落之间的分隔符 |
chapterGroupSize |
20 |
目录每组折叠多少章 |
autoPlaySeconds |
12 |
自动翻页间隔,0 = 关 |
stealthMode |
decoy |
老板键行为:decoy 伪装 / hide 隐藏 |
displayMode |
statusBar |
正文显示在哪:statusBar / terminal / both |
terminalTitle |
npm run dev |
终端标签页的名字(用来伪装) |
terminalLines |
6 |
终端一屏几行正文,0 = 跟随终端高度铺满 |
pageSize 不要设太大
状态栏的宽度是固定的,放不下的文字会被 VS Code 直接裁掉,不会有省略号。
如果 pageSize 超过了实际能显示的宽度,每页尾部就会静默消失,
翻到下一页时看着就像「内容接不上 / 漏了一段」。
判断方法:翻一页,看状态栏正文最后一个字后面还剩多少空白。
- 还剩一大截,说明还能调大
- 已经贴到右边或者被切掉,就调小
为什么两台电脑表现不一样:能放多少字取决于窗口的 CSS 像素宽度,不是屏幕物理尺寸。
VS Code 状态栏字号固定约 12px,一个汉字就占 12px,所以
可显示字数 ≈ (窗口宽度 ÷ 显示缩放比例 − 其他状态栏元素) ÷ 12
同样 1920 的屏,Windows 缩放 100% 时有 1920 个 CSS 像素,缩放 150% 就只剩 1280
—— 后者能显示的字反而少三分之一。外接大屏通常还是 100% 缩放,所以能塞下更多。
这也是这个配置项按机器单独保存、不参与设置同步的原因:笔记本设 55、台式设 110,
各用各的,互不干扰。想给某个工作区单独设置也仍然可以。
插件保证任何一页都不会超过 pageSize,所以只要 pageSize 没超过屏幕宽度,
就绝对不会出现漏字。剩下的只是「这页刚好断在半句话上」,翻过去接上就行。
关于 noCutWords
打开后(默认开)每页会尽量收在 。 ! ? ; … 或段落分隔符后面,
读起来不会一句话被切成两半。代价是页面长度不完全统一,会在 pageSize 的 50%–100% 之间浮动。
实测一本 446 万字的书:71.7% 的页收在完整句子或段落边界,平均每页 47 字(上限 55)。
嫌页数多、想每页尽量塞满的话,把它关掉即可 —— 但那样每页都会从句子中间硬切。
关于 lineBreak
它只决定两个段落之间插什么,跟原文有几个空行无关。
所以配成 -> 时,看到的是:
韩立手掌轻轻向前探出… -> 银色火焰跳动几下…
每两段之间永远只有一个 ->,不会再出现 -> -> 这种重复。
段落以句号结尾时不想要分隔符,可以打开 smartJoin。
控制台模式(伪装成构建日志)
状态栏一行只放得下 50 来个字,大屏笔记本差异还大 —— 想一次看多点,就把正文放到终端里。
按 Alt+t 立刻开/关,或者把 displayMode 设成 terminal 让它开机就开。
内容长这样:
[14:32:07] ✓ compiled successfully (312 ms)
[14:32:07] debug 韩立手掌轻轻向前探出, 指尖悬在青色小剑上方一寸 src/app.vue:42:7
[14:32:08] debug 处, 银色火焰跳动几下, 剑身纹丝不动 cache hit 98.2%
[14:32:08] debug 他皱了皱眉, 又往剑身注入一丝灵力 [hmr] accepted
[14:32:09] debug 眉头微皱, 指尖灵力一收, 剑身光芒骤然敛去 0x7ff8a2c1
...
▸ watching for changes… · j/k q
- 每行前面是
[时分秒] debug ,顶上一行假的编译成功,底下一行假的 watch 提示
- 每行末尾还挂一截英文日志噪声(
src/app.vue:42:7、[hmr] accepted、chunk-VZQW3X.js…),
看起来就像构建工具顺带打出来的文件位置、耗时、缓存命中率。后缀按位置固定,重绘不会乱跳
- 终端标签页名字默认
npm run dev,可以改 terminalTitle
- 一屏显示 6 行正文,可以改
terminalLines(见下)
- 汉字按两列算宽度,所以在 Windows Terminal、iTerm、VS Code 自带终端里都不会错位
- 上下屏严格接续:上一屏最后一行最后那个字之后,就是下一屏第一个字,不重复也不漏
- 焦点在终端里也能按
Alt+M:VS Code 会把快捷键透传给终端,插件在 pty 里翻译回命令
(隐身状态下按 Alt+M 是唯一的恢复方式)
一屏显示几行(terminalLines)
默认 6 行,跟终端窗口拉多高无关 —— 行数固定,翻一屏跨的字符数就固定,读起来节奏稳定。
| 值 |
行为 |
6(默认) |
固定 6 行正文 |
3 |
固定 3 行,下面留白,看着像一条刚打印完的日志 |
0 |
跟随终端高度铺满整屏(终端拉高就自动多显示几行) |
999 |
超过终端放得下的行数时,自动收窄到刚好放得下 |
改完立刻生效,不用 Alt+T 重开终端。一行能放多少字 = 终端宽度 − 16([时:分:秒] debug 前缀占的列数),汉字按两列算,
比如 120 列的终端一行约 52 个汉字。
三种模式(displayMode):
| 值 |
状态栏 |
终端 |
statusBar |
显示正文(默认) |
不开 |
terminal |
完全让位(hide()) |
显示正文 |
both |
显示,当页码条用 |
显示,当阅读区用 |
老板键联动:按 Alt+m 时终端整屏换成一次真实的 vite build 输出
(142 modules transformed / ✓ built in 1.84s / chunk 体积警告),
并且此时不响应翻页键 —— 手滑敲到 j 也不会把小说弹回来。
终端只是视图:阅读位置始终由页码决定,所以状态栏、终端、左侧目录三处的进度永远一致。
在终端里翻一屏,页码按终端实际宽度往前跳(不是跳一个 pageSize)。
老板键
按 Alt+m:
- 状态栏两个位置换成
main 和 Ln 24, Col 12 UTF-8 CRLF 这种看起来像正常编辑器信息的内容
- 左侧目录换成
src/index.ts、test/、node_modules 这类假项目结构
- 终端(如果开着)整屏换成一次假的
vite build,并且不响应翻页键
- 自动翻页暂停
- 重载窗口后仍然保持隐身,再按一次才恢复
想彻底隐藏而不伪装,把 stealthMode 设为 hide。
边界:它只管本插件自己的两个状态栏项、左侧视图,以及本插件创建的那个终端。其它扩展的通知、输出面板、搜索结果不在管辖范围。屏幕共享场景下,切窗口仍然是最可靠的做法。
常见问题
目录里没有章节?
说明这本书的标题格式没被内置规则识别。用 chapterRegex 自定义,例如只认「第 X 章」:
^第\s*[0-9]+\s*章
按键没反应?
- 确认没有其它扩展占用同一个组合键(
Ctrl+K Ctrl+S 打开键位表搜 Fuck The Boss)
- 中文输入法可能拦截
Alt+, Alt+. Alt+;,切到英文输入法再试
和别的状态栏阅读扩展同时开着,状态栏出现两段文字?
在扩展面板里禁用另一个即可。本插件使用独立的配置命名空间和命令 ID,不会冲突。
页码变了?
如果之前用过别的阅读器,页码基准不一样。直接按 Alt+c 输你在看的章号,比换算页码准。
从源码构建
npm install
npm run compile # 产出 out/extension.js
npm test # 21 个纯逻辑单测
npm run typecheck # 类型检查
npm run pack # 产出 fuck-the-boss-reader-<version>.vsix
# 然后把那个 .vsix 拖进 VS Code,或:
code --install-extension fuck-the-boss-reader-0.1.2.vsix --force
调试:在 VS Code 里打开本目录,按 F5 会启动一个装了本插件的调试窗口。
License
MIT