# CodeReader-Portable **Repository Path**: buhuib/code-reader-portable ## Basic Information - **Project Name**: CodeReader-Portable - **Description**: 一个摸鱼看小说软件 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-20 - **Last Updated**: 2026-10-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CodeReader 一个离线 TXT 阅读器,外观类似代码编辑器。按老板键,在同一个窗口内切换为本地代码项目或内置示例项目。 ## 开始使用 1. 双击项目根目录的 **启动 CodeReader.lnk**。 2. 右上角使用 **上下分屏**:上面是代码,下面是小说。拖动中间分隔条调整比例,关闭后会记住。 3. 在小说区域点击 **+ TXT**,或把 TXT 文件拖进窗口。 4. 按 **F8** 只保留代码;再按一次恢复上下分屏和原来的比例。 没有保存过布局时,默认就是上下分屏。已有书籍时,启动仍先进入代码视图,按 F8 恢复阅读。小说区的 **设置** 可以关闭“下次启动先显示代码”。 附带的 `examples/雨后的第七站.txt` 是原创演示文本,可以用来试读。 ## 操作 - **F8**:代码 / 阅读视图切换。设置中可改为 F6、F7、F9 或 F10。 - **Ctrl+O**:导入 TXT(阅读视图)。 - **Ctrl+F**:全文查找;代码视图则在当前代码文件中查找。 - **Enter**:下一个搜索结果,查到末尾会从头继续。 - **Ctrl+B**:收起 / 展开侧栏。 - **Alt+← / Alt+→**,或 **Alt+A / Alt+D**:上一章 / 下一章。 - **W / A / S / D**:分别对应 **↑ / ← / ↓ / →**。搜索框中仍输入字母;**Ctrl+W** 仍关闭代码页签。 - **PageUp / PageDown、方向键或滚轮**:滚动正文。小说滚到章节顶部或底部后继续滚动,会自动换到上一章或下一章。 - **Esc**:关闭搜索、设置和提示。 - 小说区 **设置**,或普通模式左下角齿轮:字号、行距、宽度、编码、老板键、失焦切换。 - 添加书签 / 回到书签:每本书保存一个书签。 老板键仅在本应用有焦点时生效。代码视图可以滚动、搜索和切换文件,不会执行或修改代码。 ## 1.3 新增:上下分屏与 WASD 右上角可以选择 **上下分屏 / 普通模式 / Chat 模式**。上下分屏把代码放在上半部分,小说放在下半部分。拖动中间分隔条自由调整高度,比例写入本地设置。小说区可以导入 TXT、切换书库、上下章、添加或回到书签,并打开阅读设置。 在小说正文里滚动时,未到章节边缘只移动正文。到达底部后继续向下滚动进入下一章开头;到达顶部后继续向上滚动回到上一章末尾。同方向的连续滚动不会一次跳过多章。代码区域的滚轮只滚动代码。 **W A S D** 与方向键相同,阅读区和代码区都可用,按住会连续移动。**Alt+A** 和 **Alt+D** 切换章节。按 **F8** 会藏起整个小说区域,只留代码;再按一次按上次的比例恢复。 ## Cursor 侧边栏 `cursor-extension` 是给 Cursor 用的侧边栏扩展。编辑器里仍然是当前项目的代码,小说显示在右侧 **Chat** 面板中。它不接入 Cursor 自带的 AI 对话。 安装后按 `Ctrl+Shift+P`,运行 **Developer: Reload Window**。打开右侧边栏即可看到 **Chat**。 - **+ TXT**:打开本地小说。最近打开的书在 **⋯** 里切换。 - 点击章节标题打开章节列表,可输入文字筛选后再跳转。 - 滚轮在正文中滚动;到章节顶部或底部后继续滚动会换章。 - 阅读面板内 **W / A / S / D** 上下滚动,**Alt+A / Alt+D** 切换章节。编辑器里的输入不受影响。 - 底部输入框按 **Enter** 查找全书。**⋯** 里可以调字号、添加书签和回到书签。 - **Alt+F8** 收起右侧栏,只留下代码;再按一次恢复阅读面板。若 Cursor 自己的聊天也在右侧栏,会一起收起。 扩展只读取本机 TXT,阅读进度和书签保存在 Cursor 的本地扩展状态中。 ## 1.2 新增:Chat 布局与关闭页签 阅读状态下,右上角可以切换 **普通模式 / Chat 模式**。普通模式保留原来的阅读界面;Chat 模式左侧显示本地代码文件树,中间显示代码,右侧将小说显示在聊天样式的阅读面板中。拖动分隔线可调整宽度;切换布局保留阅读位置,布局选择会自动保存。 Chat 面板的 **+ TXT** 可导入小说;**⋯** 展开书库、章节、字号、代码目录和书签。底部输入框搜索小说,左右箭头切换章节。这里是本地阅读界面,没有联网聊天或 AI 生成功能。完整阅读设置仍在普通模式的齿轮中。 在 Chat 模式按 **F8** 会完整隐藏 Chat 面板,保持项目与代码可见;再按一次恢复小说和位置。老板键生效期间隐藏布局切换入口,先按 F8 恢复阅读后再选择布局。 代码页签右侧 **×** 或 **Ctrl+W** 可关闭当前页签(Ctrl+W 在代码、上下分屏或 Chat 布局中生效)。关闭全部后显示空编辑区,点击左侧文件可重新打开;关闭页签不会删除文件。Chat 模式中,代码区域的 Ctrl+F 搜索代码,小说区域的 Ctrl+F 聚焦小说搜索。 ## 1.1 新增:小字号与本地代码目录 左下角齿轮中,**阅读字号**和**代码字号**分别可设为 **6–36 px**,设置自动保存。 点击 **选择代码目录…**,选择自己的项目文件夹。读取完成后按 F8,显示真实目录结构和文件内容。支持 Python、JS/TS、Java、C/C++、C#、Go、Rust、HTML/CSS、SQL、JSON 等常见源码;不把小说内容转写成代码。 启动时重新读取所选目录;文件变化后可点击 **刷新代码**。点击 **恢复示例** 返回内置项目。读取期间原代码仍能使用,F8 继续生效。 为保持切换流畅,最多读取 300 个文件,单文件不超过 256 KB / 10 万字符,总计约 400 万字符;跳过二进制、超长行、隐藏文件、链接和依赖/构建目录。界面会提示文件跳过或达到上限。 代码只从原目录读取,不复制进书库。搬到另一台电脑后,如路径不同,请重新选择代码目录;原目录不可用时先显示内置示例。 ## TXT 与编码 支持单个或多个 TXT、文件夹内的 TXT 批量导入。文件夹导入仅处理当前层,不递归子目录。单文件上限 50 MiB。 自动尝试 UTF-8、带 BOM 的 UTF-16 / UTF-32 和 GB18030(涵盖常见 GBK)。若出现乱码,在设置选择 UTF-8、GB18030、Big5 或 UTF-16 后点“重新解码”;无法自动导入的文件可以先选编码,再导入。编码自动识别并非对所有文本都唯一,保留手动选择。 识别“第十章”“第001回”“Chapter 3”等独立行标题。没有标题时按正文分段;过长章节也会拆成连续分段,原文顺序不变。 ## 数据与备份 从根目录快捷方式启动时,书库和进度位于项目目录下的 **data**。导入只复制文件,不会改动原小说;重复内容会去重。关闭程序后备份整个 `data` 目录即可保留书库、进度和设置。 直接运行 `release/CodeReader/CodeReader.exe` 时,默认使用 EXE 旁的 `data` 目录;要与快捷方式共用数据,请使用快捷方式,或带参数 `--data-dir` 指向同一个目录。 拷贝到其他电脑时,请复制整个 `release/CodeReader` 文件夹,包含 `_internal`。只复制 EXE 不足以运行。不需要另装 Python。 ## 源码与重新构建 源码位于 `codereader/`,入口为 `main.py`。运行环境 Python 3.13,图形界面 PySide6-Essentials 6.12.0;项目独立环境在 `.venv`。 ```powershell .\.venv\Scripts\python.exe main.py .\.venv\Scripts\python.exe -m pytest -q powershell -ExecutionPolicy Bypass -File .\build.ps1 ``` 构建采用 PyInstaller 目录式发布,便于更换 Qt 共享库。依赖的许可说明在发布目录 `licenses` 和 `THIRD_PARTY_NOTICES.txt` 中。 参考:[Qt for Python 文档](https://doc.qt.io/qtforpython-6/gettingstarted.html)、[PyInstaller 使用说明](https://pyinstaller.org/en/stable/usage.html)。