Files
Notes/README.md
2026-09-21 02:30:48 +08:00

162 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Notes
本地优先的 Markdown 阅读与编辑工具。界面看到的和磁盘上的 `.md` 文件一模一样 —— 复制走就是备份。
![tests](https://img.shields.io/badge/tests-947%2F34%20passing-brightgreen) ![Electron](https://img.shields.io/badge/Electron-44-47848F) ![Node](https://img.shields.io/badge/node-%3E%3D20.18-339933) ![MIT](https://img.shields.io/badge/license-MIT-blue)
## 它是什么
Notes 把一个文件夹变成笔记本。`.md` 文件就是笔记,**文件即数据**,没有数据库也没有专有格式。内置 CodeMirror 6 编辑器,`Ctrl + S` 落盘,也可开启自动保存。
8 套配色(default / ocean / forest / sunset / rose / amber / slate / mono),暗 / 亮各一版,字号行距可调。不联网也能用 —— AI 是可选插件,**不配置就永不联网**。
---
## 5 分钟上手
需要 [Node.js 20.18 或更高](https://nodejs.org/)。
```bash
git clone <仓库地址> notes
cd notes
npm install
npm start
```
首次启动会在用户主目录创建 `Notes` 文件夹(Windows 是 `C:\Users\<你>\Notes`,macOS / Linux 是 `~/Notes`),并把欢迎页等 4 篇引导文档复制进去。把任意 `.md` 文件拖进那个文件夹,左侧栏立刻显示。
按 `Ctrl + ,` 打开设置。主题 / 置顶 / 视图模式 / 自动保存在工具栏有独立按钮,**设置里不会出现重复入口**。
---
## 日常使用
### 阅读与编辑
- `Ctrl + E` 在「预览 → 编辑 → 双栏」之间循环
- `Ctrl + F` 侧栏搜索框按文件名实时过滤
- `Ctrl + S` 保存,`Ctrl + N` 新建笔记,`Ctrl + W` 关闭当前文件
- `Ctrl + Shift + F` 聚焦模式,隐藏工具栏 / 侧栏 / 状态栏,纯净阅读
- 状态栏实时显示当前阅读到的章节标题
- 链接分流:外链走系统浏览器;同目录 `.md` 相对链接在 Notes 内打开;`#标题` 锚点文内跳转
- 相对路径图片(`![](img/a.png)`)直接渲染
### AI 修改
`Ctrl + Shift + A` 打开底部 AI 面板。描述你想怎么改(润色 / 翻译 / 总结 / 续写),AI 给出行级 + 词级 diff,可逐段应用或一键应用全部,不满意随时取消。
协议选择:
| 选项 | 适用服务 | Base URL 末尾 |
|---|---|---|
| OpenAI 兼容 | OpenAI / DeepSeek / Moonshot / Azure / 自部署 | 必须含 `/v1` |
| Anthropic 兼容 | Claude 系列 / 第三方中转 | 不含 `/v1` |
API Key 默认脱敏显示,点眼睛图标露出明文。**不配也不影响其它功能**。
---
## 数据安全
- **外部修改检测** —— 其他编辑器改了文件会提示重新加载(正在打字时不打断)
- **退出保护** —— 有未保存改动就关窗 / 退托盘,会先问「保存 / 丢弃 / 取消」
- **原子写盘** —— 断电也不会留下半截文件
- **数据目录自动回退** —— U 盘拔了 / 网盘断连时自动切回默认目录
- **云同步盘友好** —— OneDrive / 坚果云 / iCloud 都做过专门适配
- **关窗 ≠ 退出** —— 应用缩到系统托盘,单击恢复,右键看菜单
---
## 数据文件夹
| 系统 | 默认路径 |
|---|---|
| Windows | `C:\Users\<你>\Notes` |
| macOS | `~/Notes` |
| Linux | `$HOME/Notes` |
可在设置里改成任意目录。状态栏左段(紧贴当前路径)有三个 icon-only 按钮:打开、切换、回到默认。
---
## 快捷键速查
| 快捷键 | 作用 |
|---|---|
| `Ctrl/Cmd + F` | 聚焦文件搜索 |
| `Ctrl/Cmd + N` | 新建笔记 |
| `Ctrl/Cmd + S` | 保存(IME 合成中不触发写盘) |
| `Ctrl/Cmd + W` | 关闭当前文件 |
| `Ctrl/Cmd + E` | 切换视图模式 |
| `Ctrl/Cmd + ,` | 打开设置 |
| `Ctrl/Cmd + R` | 重新加载界面 |
| `Ctrl/Cmd + Shift + T` | 切换主题 |
| `Ctrl/Cmd + Shift + F` | 切换聚焦模式 |
| `Ctrl/Cmd + Shift + A` | 切换 AI 面板 |
| `Esc`(搜索框内) | 清空搜索 |
| `F12` | 打开 DevTools |
窗口是无边框自绘标题栏,**Windows / Linux 上看不到菜单栏**,但上表所有快捷键全部生效。
---
## 常见问题
**搜索文件没反应?**
检查设置里的「数据文件夹」是不是对的。某些云盘的实时监听不可靠,按 `Ctrl + R` 手动刷新。
**AI 提示「无法连接到服务」?**
核对 Base URL:OpenAI 兼容需含 `/v1`,Anthropic 不含。点眼睛图标露出 API Key 明文,确认没多余空格。按 `F12` 看完整错误码。
**中文 Windows 启动报错?**
Electron 在中文路径下启动会报错。两种办法:
1. 把项目挪到纯英文路径(推荐),如 `D:\Projects\notes`
2. 用管理员 cmd 建符号链接:
```cmd
mklink /D C:\dev\notes "C:\当前\中文路径\Notes"
```
然后在 `C:\dev\notes` 跑 `npm install && npm start`
**控制台中文乱码?**
用 `npm start`,**不要用 `npm run start:raw`**。前者会自动把控制台切到 UTF-8。
**笔记文件会被改动吗?**
不会。读什么就显示什么,保存时原样写回 —— **不会偷偷重排 Markdown 格式**。
---
## 给开发者
```bash
npm start # 启动(推荐,自动处理中文 Windows 编码)
npm test # 全部单测(947 用例 / 34 文件)
npm run test:watch # watch 模式
npm run check # 语法 + IPC 通道配对
npm run lint # ESLint
npm run build:win # 打包 Windows 安装包 → dist/
npm run build:mac # 打包 macOS → dist/
npm run build:linux # 打包 Linux AppImage → dist/
```
```
Notes/
├── main.js # Electron 主进程入口
├── preload.js # IPC 桥(contextBridge)
├── index.html # UI 框架 + CSP + importmap
├── main/ # 主进程模块:ai / config-store / file-ops / fs-watcher
├── src/ # 渲染端:UI 组件 + CSS 分片 + AI 面板
├── shared/ # 主 / preload / 渲染端共享:schema / diff / 错误码
├── data/ # 首次启动种子化的引导文档(4 篇)
├── scripts/ # 启动包装 + 静态检查
└── tests/
├── unit/ # vitest 单测(34 个文件,947 用例)
└── manual/ # 手工视觉验证产物(不进版本库)
```
---
## License
MIT