最后我终于把魔爪伸向了 TECO,没错就是最早的 Emacs所基于的编辑器!
vi,Emacs,都是屏幕操作的,ex,sed是行操作的,TECO,全称 Tape Editor and COrrector ,是字符操作的,顾名思义,最早是用来编辑纸带的,后来也能用来编辑ACSII文件。
TECO的历史远比unix久,如果想在现代操作系统上尝试,可以用这个用 C 实现的 TECO。这个版本支持实时显示编辑内容,也就是 Vedio 模式,但是还是要通过输入指令来编辑,而且没内容高亮。附赠原版说明书。需要指定输出和输入,只能同时编辑一个文件。
另外一个看起来更加上道一点的(似乎就是因为这个有个状态栏),顾名思义,是可以实时显示的 Vedio TECO,相比前一个更加现代化一点,编辑的时候不用建立缓存,而且界面更加直观一点,支持多 Buffer。
图为 Vedio TECO,上方是实时显示界面,下方是命令输入框,不支持非ASCII字符。
在性能方面,绝对放心,和你用的电脑内存一样大的文件都能编辑,而且飞快,就是自虐了一点。 体积上,只要264K。
TECO要在每条指令以后连续按两个ESC执行命令(Vim用户:喵喵喵??),当然可以设置成其他字符以免在某些平台上没ESC可用。能用宏扩展,扩展语言就是操作命令,和后来的一些编辑器,比如vi一样能在命令之前加数字参数来重复执行,支持用负数作为参数(3l表示向下两行,-3l是向上两行)。
TECO扩展语言是非模块的,而且无法传递参数,程序之间只能通过全局变量交流。(Haskell用户:???),有人评价shell script是只写的,写完以后就不知道什么意思。然而TECO语言才真叫无法阅读,用户写的宏需要写不少注释来方便维护。
我大概理解了为什么说 Emacs 是精神病人的编辑器了。
如果嫌编译安装麻烦的话,有个Emacs Lisp实现: https://www.emacswiki.org/emacs/teco.el