SciTE 是什么?它和 Scintilla 是什么关系、适合用来做什么?

更新时间

SciTE 是一个基于 Scintilla 编辑组件构建的文本编辑器,最初只是为了演示 Scintilla 的能力,后来发展成一个可直接使用的通用编辑器,带有构建和运行程序的功能。它最适合配置简单的任务,例如编写、构建和运行小型程序,以及编辑源码。SciTE 和 Scintilla 都提供完整源码,许可证允许用于任何免费项目或商业产品,目前可在 Intel Win32、macOS 和 Linux(GTK)上使用。

SciTE 和 Scintilla 的关系

两者是“应用”与“组件”的关系:

对比项 Scintilla SciTE
定位 源码编辑组件,供其他程序集成 基于 Scintilla 的文本编辑器应用
使用方式 嵌入到宿主程序中 直接打开使用
主要能力 语法样式、错误指示、代码补全、调用提示、断点标记等 在编辑之外提供构建和运行程序的功能
起源 为改进 PythonWin 的编辑器而重写的新编辑控件 最初用于演示 Scintilla

Scintilla 的诞生背景值得一说:开发者当时受困于 PythonWin 使用的 Richedit 控件,因为 Richedit 把样式变更当作文档的持久性修改,会写入撤销栈并置位“已修改”标记。对源码而言,样式可以机械地重新生成,不应被持久化,于是有了重新编写的编辑控件。这也解释了 Scintilla 在源码编辑上的取向。

Scintilla 提供哪些编辑能力

除了标准文本编辑组件的常见功能,Scintilla 针对源码编辑和调试做了增强:

  • 语法样式:支持按语法着色,样式选择比许多编辑器更开放,可用比例字体、粗体、斜体、多种前景色和背景色以及多种字体。
  • 错误指示与调试标记:选择边距可放置标记,类似调试器中表示断点和当前行的标记。
  • 代码补全与调用提示:编辑源码时的辅助输入能力。
  • 配套词法分析库:Lexilla 是一组可与 Scintilla 配合使用的词法分析器库。

SciTE 适合用来做什么

根据项目主页的说明,SciTE 最适合配置简单的场景。作者本人用它来构建测试和演示程序,也用来构建 SciTE 和 Scintilla 自身。如果你的需求是“打开源码、改一改、然后编译运行看结果”,且构建流程不复杂,SciTE 是合适的选择;如果需要高度定制的 IDE 级配置,则要评估它的配置方式是否够用。

平台与版本现状

  • 支持平台:Intel Win32、macOS、Linux 兼容系统(GTK)。资料提到曾在 Windows XP、Windows 7、macOS 10.9+ 以及 Ubuntu 18.04(GTK 2)上运行。
  • 当前版本:发布版本为 5.6.7。近期版本的变化包括:5.6.7 降低布局内存占用;5.6.6 修复多线程自动换行的缺陷;5.6.5 为 SCN_UPDATEUI 通知增加 SC_UPDATE_TEXT 和 SC_UPDATE_LINE_COUNT 标志;5.6.4 为 Qt 实现像素对齐的分数缩放;5.6.3 在额外视图中恢复撤销重做的选区与滚动位置。
  • 开发分支:当前开发在默认分支以 5.* 推进,需要支持 C++17 的较新 C++ 编译器。

怎么开始

  1. 打开 scintilla.org,从下载入口获取 SciTE 对应平台的版本。
  2. 解压或安装后直接启动编辑器,打开一个源码文件,观察语法着色是否生效。
  3. 用简单的构建配置试跑一次“编辑—构建—运行”的流程,确认它满足你的日常任务。
  4. 如果需要把编辑能力嵌入自己的程序,则改为获取 Scintilla 组件和 Lexilla 词法库,并准备支持 C++17 的编译环境。

常见卡点:把 SciTE 当成可深度定制的 IDE 来用,容易在配置上受阻;它更适合配置简单的构建运行场景。另外,若你的平台不在 Win32、macOS、GTK Linux 之列,需要先确认是否有可用构建。