Notepad-- Markdown预览:从打开编辑器到实时渲染的完整上手指南
【免费下载链接】notepad--一个支持windows/linux/mac的文本编辑器,目标是做中国人自己的编辑器,来自中国。项目地址: https://gitcode.com/GitHub_Trending/no/notepad--
如果你在 Windows、Linux 或 macOS 上写 Markdown 笔记或技术文档,不想在编辑器和浏览器之间来回切换,Notepad-- 的 Markdown 预览能解决这个问题:打开文本文件,右键一下,渲染结果就弹在独立窗口里,而且预览会跟着编辑同步。它覆盖使用路径、渲染机制和样式定制三块内容。
📌 项目速览
Notepad-- 是国内开发者发起的轻量级文本编辑器,开源(协议见仓库根目录 LICENSE 文件),支持 Windows、Linux、macOS 三大平台,目标是做"中国人自己的编辑器"。
| 功能 | 是否支持 | 备注 |
|---|---|---|
| 跨平台运行 | 是 | Windows/Linux/macOS,含国产 UOS 系统 |
| Markdown 语法高亮 | 是 | 内置 QScintilla Markdown 词法器 |
| 独立预览窗口 | 是 | 右键菜单 "Markdown View" 触发 |
| 实时同步渲染 | 是 | 内容变化时预览自动刷新 |
| 多标签编辑 | 是 | 同窗口打开多个文件切换 |
| 多语言语法高亮 | 是 | QScintilla 支持 50+ 语言 |
| 主题配色 | 是 | src/themes/内置多套主题 |
| 插件体系 | 是 | src/plugin/提供示例工程 |
🚀 上手路径(场景驱动)
场景一:单篇 Markdown 的写作与预览
最典型的用法:打开一个 .md 文件,随时查看渲染效果。
- 启动 Notepad--,新建或打开一个 .md 文件(源码编译的入口工程为
src/RealCompare.pro) - 在编辑区右键调出上下文菜单,选择 "Markdown View" 一项
- 独立预览窗口弹出,渲染当前文本内容
- 继续在主编辑器输入,预览窗口会随内容变化自动刷新
- 用完直接关闭预览窗口,需要时再从右键菜单触发
Notepad-- Markdown预览编辑器主界面
不同语言版本下菜单项名称可能有差异,认准 "Markdown View" 这一项即可(以实际版本为准)。
场景二:多篇 Markdown 并行管理
适合在一个目录里成批处理 README、笔记等文档。
- 同一窗口打开多个 .md 文件,以标签页形式并列展示
- 点击标签页切换当前文件,文件树面板可快速定位目标文件(文件管理模块见
src/ccnotepad/filemanager.h) - 预览窗口保持打开时,编辑任一文件都会触发
textChanged信号,预览内容随之刷新 - 不必反复开关预览,让它常驻即可
场景三:代码与文档混合编写
Notepad-- 首先是个代码编辑器,Markdown 预览是叠加在代码编辑之上的能力。
- 主编辑器基于 QScintilla(
src/qscint/),提供 C++、Python 等 50+ 语言的语法高亮 - 写项目时可以在同一窗口内切换 .cpp 与 README.md
- 需要检查文档渲染效果时,按需打开 Markdown 预览
- 预览窗口是独立顶层窗口,可自由拖拽、缩放,也能停放到第二块显示器上
Notepad-- Markdown预览C++语法高亮界面
🔍 核心机制拆解
用户视角只有两个可感知行为:右键后弹出预览窗口;每次击键预览自动同步。实现上就是几个短函数。
入口在src/scintillaeditview.cpp的on_viewMarkdown():首次调用时创建MarkdownView窗口,订阅编辑器的textChanged信号,然后灌入当前文本并显示窗口。渲染部分src/markdownview.cpp的viewMarkdown()只做一件事——把文本交给 Qt 内置的 Markdown 解析器:
// src/scintillaeditview.cpp(节选) m_markdownWin = new MarkdownView(this); connect(this, &ScintillaEditView::textChanged, this, &ScintillaEditView::on_updataMarkdown); // src/markdownview.cpp void MarkdownView::viewMarkdown(QString& text) { ui.textEdit->setMarkdown(text); }三个值得注意的点:
- 预览窗口本身是
src/markdownview.h里的MarkdownView类,一个只含QTextEdit的简单QMainWindow - 窗口由
QPointer持有并设置了WA_DeleteOnClose,关闭即释放,所以关掉后要重新触发 - 编辑器内的语法高亮是另一条链路,由
src/qscint/scintilla/lexers/LexMarkdown.cpp负责,与预览互不干扰
Notepad-- Markdown预览实时渲染窗口
🧩 进阶玩法
样式定制:全局样式集中在src/qss/(如common.qss、mystyle.qss)。想调整预览区观感,可以为预览控件追加一条样式规则:
QTextEdit#textEdit { background-color: #f8f9fa; color: #2d3436; font-size: 14px; line-height: 1.6; padding: 20px; }编辑器配色主题在src/themes/(Monokai、Bespin、Twilight 等),每个主题目录内含各语言的高亮参数 ini 文件;换主题只影响编辑区高亮,不影响预览渲染。
快捷键与插件:仓库内置快捷键管理模块(src/shortcutkeymgr.h、src/shortcutkeyeditwin.ui),可用于快捷键定制;插件系统实现于src/pluginmgr.cpp,示例工程src/plugin/helloworld/展示了插件开发的基本结构(具体支持范围以官方文档为准)。
大文档调优建议:
- 预览每次内容变化都会整篇重排,超长文档可先关闭预览窗口,需要时再触发
- 把长文档拆分为多个小文件,用多标签管理
- 减少同时打开的标签数量,降低内存压力
- 选择更轻量的主题,避免过多样式层叠加
🐛 问题排查手册
| 现象 | 常见原因 | 解决方法 |
|---|---|---|
| 预览窗口关掉后无法恢复 | 窗口设计为关闭即释放(WA_DeleteOnClose) | 重新右键选择 "Markdown View" 触发 |
| 渲染效果与预期不符 | Qt 的 setMarkdown 只支持 Markdown 子集 | 语法简化为基础语法,以编译所用 Qt 版本为准 |
| 预览中文乱码 | 文件编码不是 UTF-8 | 将文件编码转为 UTF-8 后重新保存 |
| 表格、代码块渲染异常 | 语法格式不满足解析器要求 | 检查分隔符对齐、代码块围栏是否闭合 |
另外两个容易踩的点:预览窗口是独立顶层窗口,关掉后编辑区变化不会再有预览,这不是缺陷;setMarkdown自 Qt 5.14 引入,实际支持的语法范围取决于你编译项目时链接的 Qt 版本。
版本与路线
仓库没有单独维护 Markdown 功能的变更表,项目整体版本记录见根目录 changelog.txt。路线图暂无公开信息。
🤝 参与 & 资源
贡献流程:Fork 仓库 → 建功能分支 → 提交 PR。动手前建议先读一遍根目录的 编译说明.docx,写插件再看 插件编程开发说明.docx。
关键路径:
- 主工程源码:
src/ - 编辑器引擎(QScintilla):
src/qscint/ - 主题与样式:
src/themes/、src/qss/ - 插件示例:
src/plugin/helloworld/
Bug 报告和功能建议直接提交到项目 Issues 即可。
写在最后
预览窗口只是一个弹出来的窗,起点是编辑器本身。clone 一份源码,编译后对着任意一个 .md 文件右键试试。
Notepad-- Markdown预览软件信息窗口
【免费下载链接】notepad--一个支持windows/linux/mac的文本编辑器,目标是做中国人自己的编辑器,来自中国。项目地址: https://gitcode.com/GitHub_Trending/no/notepad--
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考