Files
VoiletMark/README.md
T
liyepan a1016ac7d7 feat: VoiletMark 0.1.0 —— Qt5/C++ Markdown 编辑器
- 自动跟随系统的浅色/深色主题(Windows 注册表、macOS defaults、
  Linux gsettings / KDE / XFCE),每 2 秒检测,可在菜单中手动锁定
- Markdown 语法高亮(标题、强调、行内代码、围栏代码块、链接、
  引用、列表、任务列表、分隔线)
- 编辑器:行号栏、当前行高亮、Tab 缩进、拖放打开、Ctrl+滚轮缩放
- 文件:新建/打开/保存/另存为/最近打开,保留 BOM 与 CRLF,QSaveFile 原子写入
- 状态栏、未保存提示、窗口与编辑设置持久化
- CMake 构建脚本与 README
2026-10-22 17:06:27 +08:00

103 lines
3.3 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.
# VoiletMark
一个轻量的跨平台 Markdown 编辑器,基于 **Qt 5 / C++17** 构建。
当前版本 **0.1.0**:先把编辑器本体做扎实——干净的界面、顺手的编辑手感、
以及**自动跟随系统**的浅色 / 深色主题。
## 界面
| 浅色 | 深色 |
| --- | --- |
| ![浅色主题](docs/screenshot-light.png) | ![深色主题](docs/screenshot-dark.png) |
## 功能
### 编辑
- Markdown 语法高亮:标题、粗体 / 斜体 / 删除线、行内代码、围栏代码块、
链接与图片、引用、有序 / 无序列表、任务列表、分隔线
- 行号栏、当前行高亮
- `Tab` / `Shift+Tab` 整行缩进,选中多行时批量缩进
- 自动换行(`Alt+Z`)、`Ctrl+滚轮` 或 `Ctrl++` / `Ctrl+-` 缩放字号
- 撤销 / 重做、剪切 / 复制 / 粘贴,菜单项会跟随可用状态自动灰显
- 把 Markdown 文件直接拖进窗口即可打开
### 文件
- 新建、打开、保存、另存为、最近打开(最多 8 条)
- 保留原文件的 **BOM** 与 **CRLF** 换行风格,保存时原子写入(`QSaveFile`)
- 关闭或切换文件时提示未保存的修改
- 记忆窗口位置、字号、换行开关等设置
### 主题
界面默认**跟随系统**自动在浅色 / 深色之间切换,每 2 秒检测一次:
| 平台 | 检测方式 |
| --- | --- |
| Windows | 注册表 `AppsUseLightTheme` |
| macOS | `defaults read -g AppleInterfaceStyle` |
| Linux | gsettings `color-scheme` / GTK 主题名 → KDE `kdeglobals` → XFCE `xsettings.xml` → 调色板兜底 |
也可以在 **视图 → 主题** 中手动锁定「跟随系统 / 浅色 / 深色」,选择会被记住。
## 构建
依赖:Qt 5.12+(含 Widgets)、CMake 3.16+、支持 C++17 的编译器。
```bash
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release \\
-DCMAKE_PREFIX_PATH="$HOME/Qt5/5.15.2/gcc_64"
cmake --build build -j"$(nproc)"
./build/VoiletMark
```
或者直接:
```bash
./scripts/build.sh
```
脚本会自动探测 `$HOME/Qt5/5.15.2/gcc_64`,也可以用 `QT_PREFIX` 环境变量指定。
## 命令行
```bash
VoiletMark # 打开编辑器(显示欢迎文档)
VoiletMark notes.md # 直接打开指定文件
VoiletMark --theme dark # 本次运行使用深色主题
VoiletMark --screenshot a.png # 渲染窗口截图后退出(调试 / 视觉回归)
```
## 快捷键
| 快捷键 | 功能 |
| --- | --- |
| `Ctrl+N` / `Ctrl+O` / `Ctrl+S` | 新建 / 打开 / 保存 |
| `Ctrl+Shift+S` | 另存为 |
| `Ctrl+Z` / `Ctrl+Shift+Z` | 撤销 / 重做 |
| `Ctrl+滚轮`、`Ctrl++`、`Ctrl+-`、`Ctrl+0` | 缩放 / 恢复字号 |
| `Alt+Z` | 切换自动换行 |
| `Tab` / `Shift+Tab` | 缩进 / 反缩进 |
| `Ctrl+Q` | 退出 |
## 代码结构
```
src/
├── main.cpp 入口:命令行解析、Fusion 样式、主题初始化
├── ThemeManager.{h,cpp} 系统主题检测 + 调色板 / QSS 生成
├── MainWindow.{h,cpp} 菜单、文件读写、最近打开、状态栏、设置
├── MarkdownEditor.{h,cpp} 编辑器控件:行号、缩进、拖放、缩放
└── MarkdownHighlighter.{h,cpp} Markdown 语法着色(含围栏代码块状态机)
```
## 下一版计划
- 实时预览(右侧或同屏渲染)
- 查找 / 替换
- 列表按回车自动续行
- 表格与数学公式支持
- 导出 HTML / PDF