图说MicroEmacs Jasspa版本的亮点功能(1)

如前面那篇《介绍一下MicroEmacs》所述,Jasspa是MicroEmacs的一个分支版本,也是最有影响力功能特性最多的一个。

Jasspa主页:http://www.jasspa.com

作者提供了Windows/DOS/Cygwin, Sun, Linux, AIX, Mac, OpenBSD/FreeBSD等多种平台的二进制包供下载。

 

File Browser和Shell

file browser & shell in microemacs jasspa

跟GNU Emacs一样,Jasspa可以在里面运行shell交互环境(在Windows上它跟Cygwin结合得也很好,可以直接用M-x cygwin来启动cygwin shell)。

Toolbar

Jasspa允许给上下左右添加toolbar(其实类似“现代编辑器”里面的ToolWindow),有win和page两种方式(也就是平铺还是叠加,后者类似“现代界面”里面的两个工具窗口停放到不同的标签上),提供的功能有文件浏览器、Item List(函数/变量列表)、Buffer List、书签列表等等,用S-F11可以隐藏全部toolbar。跟GNU Emacs不一样的是,toolbar跟buffer不会混淆,不会出现在GNU Emacs里面那种将文件在一个speedbar窗口中打开的问题。

对话框

GNU Emacs的用户都倾向于不使用菜单、工具栏和对话框,因为这都不如一两次按键那么有效率,很多时候还得借助于鼠标,效率就更低了。但它们也有一个优点:会让新手很容易探索到某个分类里大概有一些什么功能,比如你知道GNU Emacs里面缺省对于较长的行有几种显示方法?你看一下菜单Options->Line Wrapping in this Buffer就知道有Wrap at Window Edge、Truncate Long Lines和Visual Line Mode三种(GNU Emacs里面比较赞的是你可以用C-h k然后点击一个菜单项让它告诉你究竟是调用了什么elisp函数,这样你下次可以用M-x的方式或者绑定按键的方式来使用这个功能了)。

Jasspa里面工具栏(如上所述)、菜单和对话框都用得比较多,你在这里可以方便地将jasspa设置为client-server模式,挑选theme, 加载/卸载某个mode,配置鼠标按键的行为等等。

这些对话框、菜单和工具栏都是用宏语言写出来的,下面也是调用其它的宏,所以你也可以用宏来操作。这就叫简单、效率两不误。

 

 

 

Searching...

介绍一下MicroEmacs

看见vmlinz在玩JED((轻量级Emacs--JED介绍 - vmlinz's Blog),于是也装了一个玩玩,但我对它的GUI版本很不满意。该文章里面又说到了其它的轻量级编辑器,里面有个叫做MicroEmacs的。想起以前看见网上说Linus用的就是这个叫做MicroEmacs的编辑器(据说他还说了GNU Emacs is just evil,但我没找到确切的出处,只在EmacsWiki上看到过[link])。好,去找来玩玩。

但在Google上一搜,居然没有看到一个象MicroEmacs官网的网址,中文的说明也很少。在Wikipedia [link]和EmacsWiki [link]上看了一下介绍才明白,这个东西诞生在80年代,因为体积不大,互联网又没有出现,所以大家就拷来拷去,改出了好多个分支:

  1. 原始作者Daniel Lawrence 自己的版本(不过最早的作者是Dave Conroy),,最新版本是09年2月出的5.00,但提供了源代码和Windows版本,似乎用的人不多。网上其它地方可以找到3.12和4.0版本,这两个版本以前使用比较广泛;
  2. uEmacs/PK,作者是Petri H. Kutvonen,基于Lawrence原版的3.9e分支出来的。最后版本是4.0.15, 各个kernel.org镜像上均可以下载到源代码[uemacs]
  3. Linus他们在kernel.org上维护的另一个分支(git仓库链接),基于uEmacs/PK,是在P.K.停止开发后,Linus接手的(这也是为什么kernel.org上有uemacs/pk的下载连接);
  4. 最受欢迎、最有名(似乎功能也最强的)的一个版本是Jasspa,它在1987年就从原版MicroEmacs 3.8中分支出来,增强了特别多,下面将会详细介绍其特性;
  5. 我十年前读书的时候淘到一张C++ User Group的光盘,里面就提供了一个Windows 3.1 GUI的port,似乎改动也不小(要知道除了jasspa,其它版本大多只有终端版本)。刚才在网上搜了半天,找到说是Pierre Perret 基于Lawrence的MicroEmacs 4.0做的,不过其所在网址已经打不开了(已经排除了G.F.W的因素);
  6. 还有其它一些分支和变体,比如快捷键跟GNU Emacs更接近的mg(原名MicroGNUEmacs。它甚至有个WinCE版本),克隆vi 的vileersatz emacsConroy MicroEmacs等等。前面说的JED跟MicroEmacs也有些渊源。。

为什么这么有名的东西,在Linux里面没有见到过呢?因为原始作者Daniel Lawrence是个激进的反GPL分子,多次明确表示不同意将这个东西变成自由软件(free software)——虽然它一直是开放源码(open source)的。一直到了2002年,Lawrence才松口。至于02年之后为什么还没进入各个distribution,我就搞不清楚了(估计是没有吸引力不够?)不过FreeBSD里面是收录了它的。

本来是打算主要介绍Jasspa的主要特性和亮点功能的,没想到前面这版本的考证工作费了我不少时间(而且各处的说法还有些相互矛盾的,比如),所以Jasspa下次再讲吧。

总体说一下MicroEmacs:。它的主要特性有:

  • 按键的行为可配置
  • 多窗口编辑
  • “菜单”可配置
  • 可通过宏语言来扩展
  • 轻量级(加上配置都不到1M)

缺点:虽然有Linus这样的牛人在顶这个东东,但它跟“现代”编辑器的差异还真的很大,大多只有Console版本(除了我上面说的CUG的那个Windows GUI port和Jasspa之外),不支持语法高亮,甚至C-x C-f 都不一定能提供补全,Shell集成也。

当然基本的多窗口编辑、shell集成、可通过宏进行扩展这些基本思想还是有的,你拿它来替代nano还是绰绰有余。——但Jasspa 就不一样了,它完全可以用“麻雀虽小、五脏俱全”来形容,可说是功能齐备、文档详尽、配置方便、扩展容易。这个下次再详细讲吧。

microemacs  mg on wince


对了,还有一点忘了说了,这个MicroEmacs有个别名叫uemacs,因为μ跟micro是差不多的意思。有不少地方都是直接用uemacs这个名字。

如果你想试试,Windows版本可到Daniel Lawrence的主页下载,那里有最新的5.00版本(好像这个网站刚被G-F-W屏蔽了,你可以下载我这里的副本uemacs5.zip(windows console版本和源代码) me404gui.zip(windows gui版本));Linux和其它平台的版本可以到这里下载 [mtxia.com],注意这里虽然也提供了5.00版本(仅Windows版本和源代码),但Windows版本不能正常运行。 下载后注意将exe和那些.cmd宏文件放在一起。

参考:

Technorati 标签: , ,

 

 

 

 

 

 

mtxia.com

 

Searching...