35、文本编辑器Elvis和Vile的特性与使用指南

文本编辑器Elvis和Vile的特性与使用指南

1. Elvis文本编辑器

Elvis是一款强大的文本编辑器,它具有许多独特的特性,下面为你详细介绍。

1.1 语法着色

Elvis能够将字体和颜色与文件语法的不同部分关联起来,这主要是为了实现文件的屏幕显示和打印效果一致。在非位图显示器(如Linux控制台)上,由于字体显示受限,Elvis会通过改变字体颜色来进行补偿。例如,使用Elvis编辑C源文件时,代码的不同部分会以不同颜色显示,增强了编辑的趣味性和生动性。需要注意的是,语法颜色是按窗口设置的,一个窗口中斜体字体颜色的改变不会影响其他窗口。

1.2 有趣的特性
  • 国际化支持 :和nvi类似,Elvis有自己的方法来支持消息的多语言翻译。它会在Elvis路径中搜索 elvis.msg 文件,并将其加载到名为“Elvis messages”的缓冲区中。消息格式为“简洁消息:详细消息”,在打印消息时,Elvis会先查找简洁形式,如果有对应的详细形式则使用详细消息。
  • 显示模式 :这是Elvis最有趣的特性之一。针对不同类型的文件,Elvis可以在屏幕上对文件内容进行格式化,实现近乎所见即所得(WYSIWYG)的效果,还能将相同的格式用于打印。其显示模式如下表所示:
    | 模式 | 显示外观 |
    | — | — |
    | normal | 无格式化,按文件原始内容显示文本 |
    | syntax | 与normal模式类似,但开启了语法着色 |
    | hex | 交互式十六进制转储,类似于大型机的十六进制转储,适合编辑二进制文件 |
    | html | 简单的网页格式化器,可使用标签命令跟踪链接并返回原始起点 |
    | man | 简单的手册页格式化器,类似于 nroff -man 的输出 |
    | tex | TeX格式化器的简单子集 |

可以使用 :normal 命令从格式化视图切换到正常模式,使用 :display mode 命令切换回其他模式, ^W d 命令可快速切换窗口的显示模式。其中,html和man模式的WYSIWYG特性最为明显,且这两种模式还支持 :color 命令,能增强文本的区分度。显示模式命令总结如下表:
| 命令 | 功能 |
| — | — |
| di[splay] [mode [lang]] | 将显示模式更改为mode,语法模式可指定lang |
| no[rmal] | 等同于 :display normal ,但更易输入 |

  • 操作前后的命令文件 :Elvis会在读取和写入文件的四个关键时间点执行相应的ex脚本,以实现对其行为的定制。这些脚本会在 elvispath 选项指定的目录中搜索,具体如下:

    • elvis.brf :在读取文件前执行,默认版本会根据文件扩展名判断文件是否为二进制文件,若是则开启二进制选项。
    • elvis.arf :在读取文件后执行,默认版本会根据文件扩展名开启语法高亮。
    • elvis.bwf :在写入文件前执行,默认版本会在设置了 backup 选项后,将原始文件复制到带有 .bak 扩展名的文件中。
    • elvis.awf :在写入文件后执行,暂无默认文件,但可用于添加源代码控制系统的钩子。
  • 其他特性

    • 开放模式 :Elvis是唯一实现vi开放模式的克隆版本,该模式适用于没有光标移动功能的终端。
    • 安全功能 :safely 命令可设置执行非主目录 .exrc 文件或其他不可信文件的安全选项。
    • 内置计算器 :扩展了ex命令语言,支持C表达式语法,常用于 :if :calc :eval 命令。
    • 宏调试器 :可用于调试vi宏( :map 命令),在编写复杂的输入或命令映射时很有用。
    • ex模式宏 :alias 命令可定义ex宏,例如 :safer :safely 命令的别名,提供了向后兼容性。
    • 智能%命令 :在语法显示模式下,视觉%命令扩展为可识别 #if #else #endif 指令。
    • 内置拼写检查器 :在语法显示模式下,能检查标签文件中的程序符号和注释中的自然语言词典。
    • 文本折叠 :允许隐藏和显示文件的某些部分,便于处理结构化文本。
    • 突出显示选定行 :可以为选定的行添加高亮,例如使用 :load since :rcssince 命令可高亮自上次文件提交到RCS后更改的行。
2. 打印功能

Elvis的 :lpr 命令可以将缓冲区内容进行格式化后打印,可打印到文件或通过管道传递给命令。默认情况下,它会将内容传递给系统打印假脱机命令。该命令由多个选项控制,如下表所示:
| 选项 | 功能 |
| — | — |
| lptype, lp | 打印机类型 |
| lpconvert, lpcvt | 若设置,将Latin - 8扩展ASCII转换为PC - 8扩展ASCII |
| lpcrlf, lpc | 打印机需要CR/LF结束每行 |
| lpout, lpo | 打印到的文件或命令 |
| lpcolumns, lpcols | 打印机宽度 |
| lpwrap, lpw | 模拟换行 |
| lplines, lprows | 打印机页面长度 |
| lpformfeed, lpff | 最后一页后发送换页符 |
| lpoptions, lpopt | 控制各种打印机功能,仅适用于PostScript打印机 |
| lpcolor, lpcl | 启用PostScript和MS Windows打印机的彩色打印 |
| lpcontrast, lpct | 控制阴影和对比度,与lpcolor选项配合使用 |

Elvis支持的打印机类型如下表:
| 名称 | 打印机类型 |
| — | — |
| ps | PostScript,每张纸一个逻辑页面 |
| ps2 | PostScript,每张纸两个逻辑页面 |
| epson | 大多数点阵打印机,不支持图形字符 |
| pana | 松下点阵打印机 |
| ibm | 具有IBM图形字符的点阵打印机 |
| hp | 惠普打印机和大多数非PostScript激光打印机 |
| cr | 行式打印机,使用回车符进行覆盖输入 |
| bs | 通过退格字符进行覆盖输入,最接近传统Unix nroff |
| dumb | 纯ASCII,无字体控制 |

如果你有PostScript打印机,建议使用 ps ps2 类型,使用 ps2 可节省纸张,在打印草稿时非常实用。

3. 编译和安装

Elvis的源代码可自由分发,遵循Perl的Artistic License。你可以从官方网站 ftp://ftp.cs.pdx.edu/pub/elvis/README.html 下载分发版本,也可以直接使用FTP从 ftp://ftp.cs.pdx.edu/pub/elvis/elvis-2.2_0.tar.gz 获取。编译步骤如下:

$ gzip -d < elvis-2.2_0.tar.gz | tar -xvpf -
$ cd elvis-2.2_0; ./configure
$ make

使用 make install 进行安装,默认配置会将Elvis安装到标准系统目录(如 /usr/bin /usr/share 等)。若要安装到 /usr/local ,可在 configure 脚本中使用 --prefix 选项。

4. Vile文本编辑器

Vile即“vi Like Emacs”,它起源于MicroEMACS 3.9版本的修改,旨在提供类似vi的操作手感。下面为你介绍Vile的相关信息。

4.1 作者和历史

Vile由Thomas Dickey和Paul Fox维护,多年来还有其他贡献者,如Kevin Buettner和Clark Morgan。当前版本是2007年末发布的9.6版本。Paul Fox在1990年因希望能在多个窗口中编辑多个文件,且已有10年vi使用经验,结合MicroEMACS的源代码开始开发Vile。其设计目标是保留操作手感,而非追求显示效果。Vile的ex模式功能强大,但外观有些奇特,且无法完全解析复杂的 .exrc 文件。不过,其内置的命令/宏语言弥补了这一不足。

Thomas Dickey在1992年12月开始参与Vile开发,最初贡献补丁,后来实现了行号显示、名称补全和缓冲区列表窗口动画等重要功能。Kevin Buettner在1994年2月开始参与,为X11版本提供了错误修复和改进,如滚动条,还支持了多种窗口组件集,并贡献了对GNU Autoconf的初始支持。1997年开始了Win32 GUI端口(winvile)的开发,并不断进行扩展。目前,Vile的Perl接口和主要模式稳定,未来将重点改进本地化支持。

4.2 重要的命令行参数

Vile虽然不期望被作为vi或ex调用,但可以作为view调用,此时会将每个文件视为只读。它没有行编辑器模式,重要的命令行参数如下:
- -c command, + command :Vile会执行给定的ex风格命令,可多次使用 -c 选项。
- -h :打开帮助文件。
- -R :以只读模式调用Vile,此模式下不允许写入操作。
- -t tag :从指定标签处开始编辑, -T 选项等效,可在X11选项解析吃掉 -t 时使用。
- -v :以视图模式调用Vile,此模式下不允许对任何缓冲区进行更改。

综上所述,Elvis和Vile都是功能丰富的文本编辑器,各自具有独特的特性和优势。Elvis在语法着色、显示模式和打印功能方面表现出色,而Vile则强调操作手感和内置命令/宏语言的实用性。你可以根据自己的需求选择适合的编辑器。

文本编辑器Elvis和Vile的特性与使用指南

5. Elvis和Vile的功能对比

为了更清晰地了解Elvis和Vile的特点,我们将它们的主要功能进行对比,如下表所示:
| 功能 | Elvis | Vile |
| — | — | — |
| 语法着色 | 支持,按窗口设置颜色 | 未提及相关特色 |
| 显示模式 | 多种模式,有良好的WYSIWYG效果 | 未提及类似丰富的显示模式 |
| 操作前后命令文件 | 支持四个关键时间点的脚本定制 | 未提及此功能 |
| 国际化支持 | 支持消息多语言翻译 | 未提及相关内容 |
| 内置计算器 | 扩展ex命令语言,支持C表达式 | 未提及此功能 |
| 宏调试器 | 可调试vi宏 | 未提及相关功能 |
| 智能%命令 | 语法模式下可识别特定指令 | 未提及此功能 |
| 内置拼写检查器 | 语法模式下可检查符号和词典 | 未提及此功能 |
| 文本折叠 | 支持隐藏和显示部分内容 | 未提及此功能 |
| 突出显示选定行 | 可高亮特定行 | 未提及此功能 |
| 开放模式 | 唯一实现vi开放模式 | 未提及此功能 |
| 安全功能 | 有安全选项设置 | 未提及此功能 |
| ex模式宏 | 可定义ex宏 | 未提及此功能 |
| 命令行参数 | 无独特命令行参数 | 有多种命令行参数定制功能 |

从这个对比表格可以看出,Elvis在功能上更加丰富多样,尤其是在语法处理、文件操作定制和打印功能方面有很多独特的特性。而Vile则在命令行参数的定制上有自己的优势,能满足用户在启动时的不同需求。

6. 使用建议

根据不同的使用场景和需求,我们可以给出以下使用建议:
- 初学者 :如果是刚开始接触文本编辑,且希望有直观的显示效果和丰富的功能辅助,Elvis是一个不错的选择。它的语法着色和多种显示模式可以帮助初学者更好地理解代码结构。例如,在编辑C语言代码时,语法着色能让代码的不同部分以不同颜色显示,使代码更易读。
- 有经验的开发者 :对于有一定经验的开发者,如果注重操作手感和命令行的灵活性,Vile可能更适合。其内置的命令/宏语言可以让开发者根据自己的习惯进行定制,提高编辑效率。比如,开发者可以使用自定义的宏来快速完成一些重复的操作。
- 需要打印功能的用户 :如果经常需要将编辑的内容打印出来,Elvis的打印功能会是一个重要的优势。它支持多种打印机类型,并且可以通过多个选项对打印进行精细控制。例如,使用PostScript打印机时,可以选择 ps ps2 类型,根据需要节省纸张。

7. 总结

Elvis和Vile作为两款优秀的文本编辑器,都有其独特的价值。Elvis以其丰富的功能,如语法着色、多种显示模式、操作前后的命令文件定制以及强大的打印功能,为用户提供了全面的编辑体验。而Vile则凭借其类似vi的操作手感和灵活的命令行参数,满足了部分用户对操作效率和定制化的需求。

在选择使用哪一款编辑器时,用户应根据自己的实际需求和使用习惯来决定。如果你追求功能的多样性和显示效果,Elvis会是一个很好的选择;如果你更看重操作手感和命令行的灵活性,那么Vile可能更适合你。

下面是一个简单的mermaid流程图,展示了选择Elvis或Vile的决策过程:

graph TD;
    A[选择编辑器] --> B{注重功能多样性?};
    B -- 是 --> C[选择Elvis];
    B -- 否 --> D{注重操作手感和命令行灵活性?};
    D -- 是 --> E[选择Vile];
    D -- 否 --> F[重新考虑需求];

通过这个流程图,用户可以更清晰地根据自己的需求来选择适合的文本编辑器。希望本文能帮助你更好地了解Elvis和Vile,并在实际使用中发挥它们的优势。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值