编辑器SciTE介绍

Editor
虽然已经2020年了,我还是和二十多年前一样,用着老式的文本编辑器撰写程序和文档,然后在命令行下运行调试。对我来说,一个顺手的通用文本编辑器至少应该满足下面几个条件:

  1. 使用能区分O和0,I和l的等宽字体;在这一点上,最常用的中文字体宋体和黑体都不够友好
  2. 支持主流编程语言的语法高亮,可自行增加对小众语言的支持;
  3. 能够显示空格,制表符,换行符等空白字符;
  4. 查找替换支持正则表达式(Regular Expression);
  5. 占用资源小,支持操作GB级大文件;
  6. 支持调用自定义脚本;

在Windows下,我用了很多年的Emeditor,后来工作环境迁移到Linux系统下,用不惯vim和emacs,就一直用SciTE将就。时间一长,也逐渐适应了这个轻巧的工具。它是作为开源编辑器框架Scintilla的示例软件开发的,完成度不高,配置和扩展都不够友好。不过这个框架本身自由度很高。许多著名的轻量编辑器都是基于它开发的,例如Notepad++Geany等。后来随着计算机硬件性能的升级,拥有更多时髦功能的Sublime Text, Atom或者VSCode等编辑器得到了更多的关注。也许SciTE看上去有些过时。但作为一款仅有2M大小的跨平台开源软件,它有着更少的资源占用和更快的响应速度。除了对字符集的识别不那么智能,以及不支持跨行搜索之外,我还真找不到更换它的理由。这里整理了一些使用和配置的经验,方便有一定编程基础的中文用户参考。

SciTE在Ubuntu下可以直接用apt安装。不过仓库中通常不是最新版。如果想要安装最新版就要自行编译。编译过程并不复杂,装好gtk2.0库之后,只需要按照说明文件先后编译scintilla框架和scite程序即可。ubuntu下的参考命令如下(Windoes用户可直接跳过):

刚安装好的SciTE就像个记事本,没有什么功能和特点,所有配置都需要用户自行设定。而且它没有设计图形化的交互界面,绝大部分设置都是以配置文件中的命令参数来控制的。这是SciTE上手最困难的地方。但只要克服了这一点,就能够感受它的轻巧灵便了。
在Option面板中,有4级配置文件可选,分别是Local(仅对当前文件生效),Directory(对当前目录生效),User(对当前用户生效),Global(全局有效)。可以实现非常灵活的配置设定。各类参数开关在文档页面中有详细说明,从头来写无疑是冗长琐碎的。对于轻度用户来说,只要找到合适的配置文件粘贴为User配置就好,范例如下:

保存这个配置之后,SciTE的表现已经好过各个平台自带的编辑器了。上手之后,可以根据需要进行更多的调整。例如可以在右键菜单中添加各类内部命令

可以从Global配置文件中复制出不需要的语法高亮配置加以隐藏

不过,SciTE最强大的地方是它对Lua脚本的支持。而这恰恰也是网上资料最少的部分。Lua是一个轻量的脚本语言,非常适合嵌入到其他程序当中。原生SciTE中缺失的文本排序,字符统计,批量替换,空行删除等功能都可以通过Lua脚本实现。可以说,只有加载了Lua脚本的SciTE才是这个编辑器的完整形态。详细的设置步骤可以参考Lua用户社区中的相关页面。我这里以一个统计字数的简单函数为例进行说明。

首先要写一个Lua统计函数,需要调用SciTE的内部接口来进内容交互,使用Lua 的函数命令进行处理,这里是utf8.len

将上面的函数保存成后缀为lua的文本文件(最好删除中文字符)就得到Lua脚本。然后在配置文件中以下面的参数加入脚本路径并设置好菜单,重启SciTE之后就可以在Tools菜单中看到新命令了,这时只要点击一下就可以在右侧的输出面板看到结果。

SciTE

因此,借助Lua语言和SciTE的内置API,可以对这个编辑器进行深度的定制。一度有不少软件都将SciTE改造成专用的IDE,比如Scite4AutoIt3。其他常用的Lua函数还包括

你还可以在Lua用户社区中可以找到更多现成的脚本。需要注意的是,SciTE只会载入一个脚本,所以这些函数都要放到同一个文件当中。我知道的就是这些,祝玩得愉快!

标签:, , , , , .

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

porno film