文本编辑器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

被折叠的 条评论
为什么被折叠?



