NEdit
这里有一些新的东西。不是 vi,不是 emacs,不仅仅是一些陈旧的 Motif 小部件的包装器。凭借稀疏但足够的键盘命令集和完整的正则表达式替换,NEdit 具有我在 Linux 编辑器中见过的最好的鼠标集成,无论是免费的还是其他的。
静态链接的 Motif 二进制文件略微超过一兆字节,NEdit 的启动速度比我上次写的编辑器 xvile 慢,但比 emacs 或 xemacs 快得多。滚动速度很快,命令执行没有明显的延迟。
它易于学习,由于其出色的鼠标支持而节省了击键次数,并且使用 X 资源进行自定义也不太困难;NEdit 具有多次撤消/重做功能,在我这里获得了非常高的评价。
NEdit 处理鼠标选择的矩形和线性区域。使用矩形区域,您可以
选择
调整大小
拖动区域或其副本
将区域覆盖到目标文本上
将目标中的文本移开
在任何方向上扩展或收缩区域
这些操作都不使用命令键或功能键——只需鼠标单击、拖动以及 CTRL、ALT 和 SHIFT 组合键。许多其他操作可通过命令键获得,主要是 CTRL 或 ALT 修改键,包括
剪切或粘贴到剪切缓冲区
左对齐区域
用键入的文本替换区域
删除
正则表达式替换
通过命令行过滤器运行区域
与其他一些编辑器不同,矩形区域的右边界不受区域中最短行的限制。同样,当您移动矩形区域时,您可以根据需要将其向右移动任意远。
您可以使用矩形区域执行的大多数操作也适用于线性区域,线性区域从一行中的某个位置开始,并包含直到另一行中某个位置的所有中间文本。事实上,您可以在使用线性区域和矩形区域之间进行转换,只需按下或释放 CTRL 按钮即可。
xterm 支持线性选择,因此您可以将文本(例如命令行对话、文件列表等)直接从 xterm 粘贴到 NEdit 窗口中。这为我节省了大量时间,尤其是在提交错误报告和编写发行说明时。
Motif 二次选择也存在,在线性和矩形两种风格中都有。这提供了一些非常好的功能。
拖动鼠标按钮 2 或按钮 3(取决于您的 Motif 版本)会为文本添加下划线;释放后,带下划线的文本将被移动或复制到 I 形光标的位置。SHIFT 键的位置选择移动或复制。
如果此时存在主选择,则二次选择将替换它,或者如果您在释放选择鼠标按钮时按住 ALT 键,则它将与主选择交换。二次选择的种类非常适合在段落中移动句子,重新排序 C 语言 switch 语句的子句,或将文本从一个编辑器窗口插入到另一个编辑器窗口。
仅这些基于鼠标的功能就为我节省了大约 80% 的击键次数,否则我会在 vi 中使用类似的文本操作任务。
按照 Motif 的惯例,如果您选择了一些文本,然后开始键入,则键入的条目将替换所选文本。这提供了使用退格键删除选定文本块的最便捷方法。
Mark Edel 写道
Unix 下的 GUI 世界是文化的冲突。Unix 完全是关于灵活性和可编程性。现代 GUI 完全是关于统一性和标准。找到中间立场并不容易。我感到自豪的是,NEdit 可以满足那些想要更改一切的用户(“我希望我的退格键调用这个 awk 脚本,并且我希望我的所有按钮都是蓝色的”)以及那些想要开箱即用并按照自己的节奏学习的用户。
菜单和对话框不会自动使 GUI 变得良好。质量实际上意味着努力使程序清晰、高效、一致、无模式且无错误。例如,X 下的良好 GUI 必须投入大量代码来确保基本稳定性,因为关键的基础架构组件不是固定的:窗口管理、键盘焦点策略、颜色、字体、按键绑定,仅举几例。
NEdit 是一项正在进行中的工作,并且似乎存在一些内存分配问题。我在运行它时遇到过几次段错误,并且文件选择框有时会在长时间运行并打开多个文件期间完全丢失其状态,需要退出并重新启动才能再次变得有用。这些问题并不严重或频繁到足以阻止我每天使用 NEdit 几个月,而不是其他一些更稳定但不太好用的编辑器。
我观察到的问题可能源于我的副本链接到的 Motif。
4.0.2 版本可能会在本文章发表时发布,其中包含一些错误修复,可能还有一两个新功能。[确实如此。Dan 说 4.0.2 版本主要是一个错误修复版本,尽管语法着色正在积极开发中,并且可以从 ftp.fnal.gov 获取着色 NEdit 的 alpha 版本——编者注。]
Linux 下的默认按键绑定需要进行一些调整才能使其达到我想要的状态,其中 Backspace 键删除光标左侧的内容,Delete 键删除右侧的内容,Insert 键在插入和覆盖模式之间切换。但是,此项和其他自定义仅使用帮助按钮中提供的信息即可完成,而根本无需查阅手册页。
习惯于语法高亮的用户不会在这里找到它,尽管 Mark Edel 告诉我动态语法高亮是一个经常被请求的功能。有一个可用的原型,具有连续的增量重新解析,动态进行。语法高亮以及更完整的宏功能计划于 1997 年初发布。
这个编辑器大约 95% 的持续工作由 Mark Edel 完成。他愿意接受志愿者,志愿者在许多错误修复和帮助将 NEdit 移植到大多数 Unix 版本方面为该项目提供了很大帮助。但是,他写道
当然欢迎志愿者,但有一些小的注意事项。保持 NEdit 界面简单非常重要,并且过于关注晦涩功能的代码肯定会被拒绝。
他还表示,这个编辑器的跨平台性质使得许多志愿者难以编写健壮的代码,通常需要核心开发人员重写才能将其纳入主发行版。
目前,正在积极寻求志愿者为菜单和翻译提供 emacs 绑定,以及一些辅助工具,例如 ctags 和调用树浏览器。
小键盘支持良好,Insert、Delete、Home、End、Page Up、Page Down 和箭头键都执行合理的操作。
是否曾纠结于某些编辑器对 C 注释块外观的看法?似乎没有人能完全正确地理解它,也没有人能处理所有奇怪的情况。现在,使用 NEdit,我可以采用如图所示的典型函数头,只需点击几下鼠标并敲击键盘即可将其转换为更整洁的形式。
在第一张图中,我选择了一个要对齐的区域。选择的宽度给出了结果宽度,行的右侧部分被折叠起来。如您所见,有可分离的菜单,几乎所有您需要学习或记住关于此编辑器的内容都显示在那里。
第二张图显示了对齐后的文本。一个对齐的块已被拖动,并且显示了一个线性选择,因为我即将按下退格键将其删除。
支持 Ctags。存在垂直和水平 Motif 滚动条。窗口可以拆分,并且可以打开多个窗口到不同的文件中。正则表达式支持包括完整的 egrep 正则表达式,尽管查找和替换是正则表达式匹配上唯一可用的操作。撤消-重做扩展到会话开始时,甚至可以通过文件保存。
Vi 用户会欣赏 ESC 键在大多数情况下不执行任何操作。过一段时间后,您会克服不断按 ESC 键的习惯,那时您可能会将该键重新映射到有用的功能。
程序员的一些贴心之处允许您从 X 窗口中显示的编译器错误列表中选择行号,然后转到 NEdit 并使用 CTRL-E 找到该行号。“搜索”同样允许搜索在其他窗口中选择的文本。“标签”搜索同样会拾取来自另一个窗口的选择。“文件打开”也是如此,您可以在其中选择包含文件名的文本,然后使用 CTRL-Y 打开该文件。
包括按键重新绑定在内的相当详细的自定义,以及一些脚本可以使用 X 资源来完成。当前版本 (4.0.1) 提供最少的宏支持。可以使用 shell 转义在编辑文本上运行脚本。
在我使用过的接近生产质量的编辑器中,NEdit 是最容易学习的。这部分是因为键盘命令集稀疏,部分是因为顶部的菜单栏给出了大多数常见操作的键盘快捷键。在下拉菜单中查找某个操作几次后,您可能会记住键盘快捷键,而无需使用菜单。在线帮助索引良好;简洁但完整。在大多数情况下,新手和专家都不需要经常参考非常出色且详细的手册页。
NEdit 在 GPL 下以源代码或静态链接的 Motif 二进制文件的形式提供:ftp://ftp.fnal.gov/KITS/pub/NEdit/v4_0_1/。从源代码构建需要 Motif 库,目前 Motif 库不是免费软件。NEdit 在 LessTiff 测试套件上,因此它应该是第一个在此免费的 Motif 仿制品下运行的大型应用程序之一。
两个讨论组是 NEdit_discuss 和 NEdit_announce,可以通过发送电子邮件至 mailserv@fnal.gov,并在正文中包含 subscribe nedit_discuss 或 subscribe nedit_announce 来获得。要取消订阅,请发送电子邮件至 mailserv@fnal.gov,并在电子邮件正文中包含 unsubscribe nedit_discuss 或 unsubscribe nedit_announce。
Dan Wilder 是一位精通计算机的年轻人,居住在华盛顿州西雅图。他将业余时间用于收集文本编辑器和 Eiffel 编译器,以及照顾岳母的小苹果园。可以通过电子邮件 dan@gasboy.com 与 Dan 联系。