文本编辑器是什么?和代码编辑组件、SciTE 这类编辑器应用有什么区别?
更新时间
文本编辑器是用于创建和修改纯文本文件的软件,它处理的是不带排版格式的字符内容,而不是 Word 那类带字体、段落样式的文字处理文档。按用途可以分成三类:日常改配置、写笔记的通用编辑器;面向写代码、带语法高亮和调试辅助的代码编辑器;以及不单独运行、供其他程序嵌入的编辑组件。Scintilla 属于第三类,SciTE 则是基于它构建的独立编辑器应用。
三类工具的分工
| 类型 | 运行方式 | 典型代表 | 适合谁 |
|---|---|---|---|
| 通用文本编辑器 | 独立应用 | 系统自带记事本类工具 | 改配置、记纯文本 |
| 代码编辑器应用 | 独立应用 | SciTE | 写代码、构建和运行小程序 |
| 编辑组件 | 嵌入宿主程序,不单独使用 | Scintilla | 开发者给自己的软件加编辑能力 |
关键区别在“是否独立运行”。组件本身没有完整窗口和菜单,必须由宿主程序调用;应用则是拿来就能打开的成品。
Scintilla:给程序用的编辑组件
Scintilla 是一个免费的源代码编辑组件,附带完整源代码,许可证允许用于任何免费项目或商业产品,支持 Win32、GTK 和 macOS。它除了常规编辑功能,还针对写代码和调试做了增强:语法样式、错误指示、代码补全和调用提示;选择边栏可以放断点、当前行这类标记;样式比许多编辑器更开放,允许比例字体、粗体斜体、多种前景背景色和多种字体。
它诞生的原因也说明了组件的定位:开发者当年不满 PythonWin 所用 Richedit 控件把样式变更当作文档的持久修改,写进撤销栈并弄脏文档标记;而对源代码来说,样式可以机械重建,不该被持久化。于是有了这个新编辑组件。当前 5.* 分支需要支持 C++17 的较新编译器,配套的 Lexilla 提供词法分析器。
SciTE:基于 Scintilla 的成品编辑器
SciTE 全称就是“SCIntilla based Text Editor”,最初只是用来演示 Scintilla,后来发展成一个通用编辑器,带有构建和运行程序的功能。按项目自述,它最适合配置简单的任务,作者本人用它构建测试和演示程序,以及构建 SciTE 和 Scintilla 自身。
所以两者的关系是:Scintilla 是底层组件,SciTE 是它的一个应用示例兼实用成品。想直接写代码,用 SciTE;想在自己的程序里嵌入编辑能力,用 Scintilla。
怎么选
- 只是改配置、写纯文本:任意通用编辑器即可,不必引入组件。
- 写代码并需要构建运行:选 SciTE 这类独立代码编辑器,注意它偏向简单配置的项目。
- 开发软件需要内置编辑器:评估 Scintilla,前提是能接受 C++17 工具链,并愿意按许可证条款集成。
- 需要复杂项目配置或多语言深度支持:先确认目标编辑器是否覆盖你的构建流程,再决定。
常见卡点
把组件当应用找下载包,会发现没有可直接双击运行的版本;反过来,把 SciTE 当成通用 IDE,会在复杂构建配置上受限。另一个容易忽略的点是版本要求:Scintilla 5.* 需要较新的 C++ 编译器,老工具链无法直接编译。平台方面,官方列出的支持范围是 Intel Win32、macOS 和带 GTK 的 Linux,实际运行记录包括 Windows XP、Windows 7、macOS 10.9+ 和 Ubuntu 18.04 配 GTK 2,在新系统上使用前值得先做一次小规模验证。