当前位置:Linux教程 - Linux - vi 之外的另一个选择:joe

vi 之外的另一个选择:joe



           
      前言


      Joe 是 unix 的一个文字编辑器,它的作者是 Joseph H. Allen ,所以其实 Joe 是 Josephs Own Editor (又或说是 Joes Own Editor )的缩写。 Red Hat 的使用者可能会对 Joe 不太熟悉,因为 Joe 不是 Red Hat 的标准软件套件, Slackware 的使用者应该会有安装 Joe 。

    Joe 并不是一个重新设计的的文字编辑器, Joe 是仿造 dos 的 WordStar 文字处理器而来的,所以 Joe 的画面像极了 WordStar ,大部份的功能键与操作方式也尽量保留了 WordStar 的原汁原味。当然源代码是重新再写,而且是以 GPL 授权使用。

    中文版本的 Joe 就被称为 cjoe , cjoe 与 Joe 几乎没有差别,只是 cjoe 的介面已经改成中文讯息。有很多人以为 Joe 不能输入中文,所以就改用 cjoe 。其实 Joe 可以输入中文,只要设定 Joe 处理 8 位元的字元就可以了。


      下载 Joe 程序


      Joe 程序码的下载网址可以在 Freshmeat 与 linuxberg 找得到。 cjoe 可以在 ftp.ifcss.org/pub/software/unix/editor/cjoe-2.8.tgz 取得。由于两者没有太大的差别,还是以介绍英文版的 Joe 为主。

    网络上大部份的文件都说明 cjoe 可以在 ifcss 取得,我本身也曾在那里下载许多程序,不过最近已经连接不上了,还好香港中文大学有 ifcss 的 mirror ,提供读者参考。

    以 ftp.std.com/src/editors/joe2_8.tar.Z 为例。下载之后,用 uncompress 与 tar 解开。之后用 make, make install 就可以了,很多应用程序在编释的过程中都会有一些问题,如找不到程序库等等,不过编释 Joe 是超乎异常的顺利。

    我在 Linux 编释 Joe 时有些小问题,就是 usearch.h 里的 restrict 变数被当成关键字处理,所以无法编释成功。于是我查一查程序码,发现只有 usearch.c 这一个程序有用 restrict 变数。我的解决方法很简单,就是将 usearch.c 与 usearch.h 的 restrict 变数改成 restrict1 ,就没有问题了。而且我在 Sun Solaris 操作系统下编释,则不需要修改程序码,完全没有问题。

    Joe 还提供了一个 dos 版的 makefile--Make.dos 。由于我手上只有 Win32 的编释器(就是 MS VC++ ),无法编释,有兴趣在 dos 下编释的读者,可以自行使用 Turbo C 或是 dos 版的 gcc 试试看。 dos 版的 Joe 会用到 bios 的中断服务,所以 Win32 的使用者必须要自行修改程序码,使用 Win32 的 API 才行,不过对我来说是太麻烦了。


      下载了程序码之后,先解开下载的档案。一般编释的程序码可以放在 /tmp 或是 /usr/loca/src 下。


       linux% uncompress joe2_8.tar.Z
      linux% tar xvf joe2_8.tar
      


      或


       linux% uncompress -c joe2_8_tar.Z | tar xv
      joe/
      joe/.jmacsrc
      joe/.joerc
      ...
      joe/zstr.h
      joe/terminfo

    linux% cd joe ( 进入 joe 的子目录 )
      linux% make
      cc -O -c b.c -o b.o
      cc -O -c blocks.c -o blocks.o
      ...
      cc -O -c w.c -o w.o
      cc -O -c zstr.c -o zstr.o

    linux % make install
      
      


      大功告成。


    设定 Joe


      大多数的使用者应该对 Joe 是否能输入中文有兴趣,由于一般 Joe 的预设值,是无法处理八位元的字元,所以很多人在 Joe 编辑器内无法输入中文或是一些欧洲字元而感到疑惑,最后就放弃使用 Joe 。其实只要进入 Joe 时,使用 -asis 选项就可以了。


       linux% joe -asis
      


      Joe 的选项设定是放在一个 joerc 的资源档案中。若不想每次都键入 -asis 选项,可以在 joerc 中先设定好。系统中应该有一个 joerc 档放在 /usr/lib/joe ,可以拷贝一个放在自己的目录内。


       linux% joe /usr/lib/joe/joerc ~/.joerc
      


      请注意的是自己目录内的档名为 .joerc 。

    Joe 读入设定档的顺序是 $HOME/.joerc 然后才是 /usr/local/lib/joerc 。所以个人的设定可以在 .joerc 中修改。试看把 -asis 选项加在第一行。


       linux% joe ~/.joerc
      -asis
      ^KX
      File .joerc saved.
      


      必需要注意的是 -asis 是从第一个字元开始,不能包含空白键,否则就无法设定 -asis 选项。 -lmsg 与 -rmsg 则可以设定 joe 状态列的显示方式:


       -lmsg i%k%T%W%I%X %n %m%R %M
      -rmsg %S Row %r Col %c %t Ctrl-K H for help
      


    linux% joe
      IW Unnamed Row 1 Col 1 2:08 Ctrl-K H for help
      


      其中 %n 是显示档名的变数,%r %c 显示游标位置等等,我们试试看将 %t 改成 %u ,时间就会以二十四小时方式显示。


       linux% joe
      IW Unnamed Row 1 Col 1 14:08 Ctrl-K H for help
      


      在 cjoe 中的 joerc 则是以中文显示。其他选项的设定,在 joerc 档中都有详细的说明,请读者自行试试看。


      Joe 的操作方式


      Joe 的操作方式与 WordStar 或 Turbo C Editor 很类似,已经熟悉操作方式的读者可以略过,我只在这里介绍一些简单及常用的操作方法。

    进入 Joe 之后,可以看见以下的画面。


       IW Unnamed Row 1 Col 1 14:08 Ctrl-K H for help


      ** Joes Own Editor v2.8 ** Copyright (C) 1995 Joseph H. Allen **
      


      第一行显示状态如档名、时间、游标位置等,最后一行是讯息显示。在游标的位置就可以直接编辑文字档。 Backspace 与 Del 键都可以直接使用,若无法使用,可能是终端机的设定问题。

    ^K* 是 WordStar 中最常见的操作方式, Joe 也沿用了 ^K* 的特性。如 ^KD(save) 是存档, ^KQ(Quit) 是放弃编辑, ^KX(eXit) 则是存档后退出编辑。若读者已经忘了 WordStar 中的指令,还可以以 ^KH(Help) 显示指令画面。


      以有名的 block command 为例,利用 ^KB(Block) 与 ^KK(blocK) 将要使用的字串选择起来,字串将会反白,之后就可以利用 ^KM(Move) 或 ^KC(Copy) 做移位或是拷贝的动作。

    这里只是列出一部份的指令说明,其他的指令可以使用 ^[. 与 ^[, 作说明翻页的动作,即可显示其他的指令说明。若要取消指令说明的画面,只要再 ^KH 即可。 Joe 的指令说明是从 joerc 档中读取。

    Joe 还可以做简单的排版。首先以 ^TL(Left) 与 ^TR(Right) 设定左右的边界线,之后键入的文字就会在到达边界线后自动换行。使用 Joe 编写程序的人特别要在这里要注意一下,因为换行后的文字被当作是另一行而非同一行处理,而一些指令以二行处理,无法编释成功。 Joe 的排版无法处理中文。


    另外要特别介绍的是分割画面与标签的功能。 ^KO 可以水平分割画面, ^C 则可以取消分割画面。 ^KL 可以将游标放置在档案的任何一行, ^[[ 可以建立标签,而 ^[n 则可以将游标放到标签处。这对写程序的时候会特别有用吧!



      结语


      我本身虽然经常写程序,但是还是对 vi 的操作方式很不习惯,经常忘记切换插入模式与指令模式。使用 vi 的后遗症是在打字的时候,时不时就会去按 ESP 键。

    我第一次发现 Joe 时,真的有点惊讶。因为 Joe 像极了 WordStar ,而 WordStar 又是我第一个学习的文字处理器, Joe 可以取代 vi ,又可以缩短我学习使用文字处理器的时间,又何乐而不为。

    对我这些念旧,又懒惰去学习新的应用软件的使用者来说, Joe 的确一个很好的选择,但是对没有历史包袱的使用者来说, Joe 就可能不是一个最好的选择了。


      
    发布人:netbull 来自:JJ的Linux世界