编辑器之战:修订间差异

维基百科,自由的百科全书
删除的内容 添加的内容
Vanished user 1929210留言 | 贡献
→‎vi与Emacs的不同:​ 内容扩充
第11行: 第11行:
! [[快捷键]]命令
! [[快捷键]]命令
| vi通过记录按键序列,形成[[决策树]]中的一条路径,从而确定一个命令。
| vi通过记录按键序列,形成[[决策树]]中的一条路径,从而确定一个命令。
| Emacs通过组合键的方式立即执行命令。
| Emacs通过组合键的方式立即执行命令。组合键同样遵循[[决策树]],但并不属于独立的按键顺序
|-
|-
! 内存占用和定制性
! 内存占用和定制性
| 由于历史原因,vi小而快,但定制性上比较受限。而vi的进化版本[[Vim]]与vi相比,提供了更多的实用功能,提高了可定制性。这使得Vim可以与Emacs媲美。{{refn|group=notes|截止到2013年,Vim有1731 [[代码行|kLOC]] (其中C语言是1142代码行,Vim脚本为506代码行,Makefile相关为83代码行),而GNU Emacs有1623代码行 (C语言仅有299代码行,Emacs Lisp占1270代码行,Makefile相关占54代码行).<ref>{{cite web|url=http://www.ohloh.net/p/emacs/analyses/latest/languages_summary|title=The GNU Emacs Open Source Project on Open Hub : Languages Page|publisher=Ohloh.net|accessdate=1 December 2014}}</ref><ref>{{cite web|url=http://www.ohloh.net/p/vim/analyses/latest/languages_summary|title=The Vim Open Source Project on Open Hub : Languages Page|publisher=Ohloh.net|accessdate=1 December 2014}}</ref>因为事实上存在着大量使用Emacs Lisp和Vim脚本的插件,因此这里的“代码行”指的是包含在“直接下载”的那部分代码。}} 对于小文件而言,vi几乎可以做到瞬时打开,Vim也可以接近瞬时。
| 由于历史原因,vi小而快,但定制性上比较受限。
| Emacs启动慢且占用更多内存但高度可定制,包含大量复杂功能。它基本上是一个[[Lisp]]程序的执行环境。
| 因为要执行大量的启动代码,包括用户代码,所以Emacs启动慢且占用更多内存(甚至和Vim比也是如此)。Emacs高度可定制,包含大量复杂功能。它基本上是一个[[Lisp]]程序的执行环境。Emacs 18 (1987年发布)引入了服务器模式<ref>{{cite web|url=https://searchcode.com/codesearch/view/364358/|title=NEWS.18|quote=Programs such as mailers that invoke "the editor" as an inferior
to edit some text can now be told to use an existing Emacs process
instead of creating a new editor.}}</ref>,这样可以在后台一直运行。可以启动不同的Emacs客户端实例,并且附加到这个服务器上,互相分享状态。Emacs客户端也可以做到几乎瞬间启动,因为它只是通知已经启动的Emacs来重新显示界面。
|-
|-
! 用户界面
! 用户界面
| vi早先独占命令行终端,没有[[图形用户界面]](GUI)。后来的衍生版本,如[[MacVim]]和[[gVim]],都具备全功能的GUI。
| vi早先独占命令行终端,没有[[图形用户界面]](GUI)。后来的衍生版本,如[[MacVim]]和[[gVim]],都具备全功能的GUI。但是,这些GUI对[[等距字体]]的支持是有问题的,并且它们不支持同一文档内存在不同字号的字体。<ref>{{cite web|quote=All fonts used, except for Menu and Tooltip, should be of the same
character size as the default font! Otherwise redrawing problems will
| Emacs,最初也为终端设计,但很早就具备了GUI,现代版本提供众多GUI版本。
occur.|url=ftp://ftp.tuwien.ac.at/.vhost/www.vim.org/vim/doc/syntax.txt|title=syntax.txt}}</ref>
| Emacs,最初也为终端设计。作为早期[[Lisp机器]]遗留下来的产物,它只提供了纯文本界面。从Emacs 18开始支持[[X11]] GUI,并且在Emacs 19成为默认支持的界面。现在的Emacs完全支持[[等距字体]],支持字号的变化,而且支持文档内嵌图象和[[超级链接]]。
|-
|-
! 功能/导航
! 功能/导航
| vi具明确的编辑模式。
| vi具明确的编辑模式。
| Emacs采用功能键组合。
| Emacs采用功能键组合。
|-
! 按键
|vi不使用Alt键,并且几乎不用Ctrl键。vi的按键主要限制在字母、数字和[[退出键]]。这是打字机时代遗留下的习惯,但是因为手指不需要做太大的移动就可以完成vi的大多数功能,所以提高了输入效率。
|有人把Emacs称作“Escape,Meta,Alt,Control,Shift”,这个说法总结了Emacs所使用的大多数组合键,除了Super键。Emacs在[[Lisp机器]]上面被创造,当时使用的[[Space cadet keyboard|Space-cadet键盘]]比现代键盘更适合使用组合键。有很多Emacs插件,例如<tt>spacemacs</tt><ref>{{cite web|url=https://github.com/syl20bnr/spacemacs|title=spacemacs}}</ref>或<tt>ergoemacs</tt><ref>{{cite web|url=http://ergoemacs.org/|title=Ergoemacs}}</ref>可以把组合键替换成比较容易按的按键。
|-
! 语言支持
|vi对除英语以外的语言的支持不好。Vim可以部分地支持其他语言,例如阿拉伯语、希伯来语、中文、日文等。
|Emacs支持所有兼容Unicode的语言。<ref>{{cite web|url=http://www.gnu.org/software/emacs/manual/html_node/emacs/International-Chars.html#International-Chars|title=International Chars|quote=但是在Emacs内部则使用自己的多字节语言编码。}}</ref>
|}
|}



2015年6月12日 (五) 12:47的版本

编辑器之战是指计算机编程领域内,两类文本编辑器vi(以及衍生版本)和Emacs用户之间的对抗冲突。这已经成为黑客文化自由软件社区文化的一部分。

战火在两群用户之间多次点燃,他们互相蔑视,坚信自己的选择才是最完美的。相比其他的IT领域战争(如浏览器大战操作系统之争、编程语言之争、代码缩进风格之战),编辑器的选择其实通常只是个人问题。

vi与Emacs的不同

vi与Emacs之间最重要的不同见下表:

vi Emacs
快捷键命令 vi通过记录按键序列,形成决策树中的一条路径,从而确定一个命令。 Emacs通过组合键的方式立即执行命令。组合键同样遵循决策树,但并不属于独立的按键顺序。
内存占用和定制性 由于历史原因,vi小而快,但定制性上比较受限。而vi的进化版本Vim与vi相比,提供了更多的实用功能,提高了可定制性。这使得Vim可以与Emacs媲美。[notes 1] 对于小文件而言,vi几乎可以做到瞬时打开,Vim也可以接近瞬时。 因为要执行大量的启动代码,包括用户代码,所以Emacs启动慢且占用更多内存(甚至和Vim比也是如此)。但Emacs高度可定制,包含大量复杂功能。它基本上是一个Lisp程序的执行环境。Emacs 18 (1987年发布)引入了服务器模式[3],这样可以在后台一直运行。可以启动不同的Emacs客户端实例,并且附加到这个服务器上,互相分享状态。Emacs客户端也可以做到几乎瞬间启动,因为它只是通知已经启动的Emacs来重新显示界面。
用户界面 vi早先独占命令行终端,没有图形用户界面(GUI)。后来的衍生版本,如MacVimgVim,都具备全功能的GUI。但是,这些GUI对等距字体的支持是有问题的,并且它们不支持同一文档内存在不同字号的字体。[4] Emacs,最初也为终端设计。作为早期Lisp机器遗留下来的产物,它只提供了纯文本界面。从Emacs 18开始支持X11 GUI,并且在Emacs 19成为默认支持的界面。现在的Emacs完全支持等距字体,支持字号的变化,而且支持文档内嵌图象和超级链接
功能/导航 vi具有明确的编辑模式。 Emacs采用功能键组合。
按键 vi不使用Alt键,并且几乎不用Ctrl键。vi的按键主要限制在字母、数字和退出键。这是打字机时代遗留下的习惯,但是因为手指不需要做太大的移动就可以完成vi的大多数功能,所以提高了输入效率。 有人把Emacs称作“Escape,Meta,Alt,Control,Shift”,这个说法总结了Emacs所使用的大多数组合键,除了Super键。Emacs在Lisp机器上面被创造,当时使用的Space-cadet键盘比现代键盘更适合使用组合键。有很多Emacs插件,例如spacemacs[5]ergoemacs[6]可以把组合键替换成比较容易按的按键。
语言支持 vi对除英语以外的语言的支持不好。Vim可以部分地支持其他语言,例如阿拉伯语、希伯来语、中文、日文等。 Emacs支持所有兼容Unicode的语言。[7]

vi类型编辑器的优点

  • 遵循“简单工具,多样组合”的理念。
  • 小,符合Unix哲学中的“只做一件事,并做好它”,避免了功能蔓延
  • 比Emacs快(至少历史上是这样的)。
  • 可运行于任何实现了C标准库的系统之上,包括UNIXLinuxAmigaOSDOSWindowsMacBeOSPOSIX兼容系统等等。
  • 让“QWERTY”键盘用户将手指保持在默认键位上,使编辑时手指移动更少。
  • 更普及。基本上所有Unix类Unix系统都默认提供了vi或其变体。

Emacs的优点

幽默

在讨论中,人们常提到ed标准文本编辑器

理查德·斯托曼,身份是St IGNU−cius,Emacs教会的圣人

理查德·斯托曼组建了Emacs教会,它称vi为“魔鬼的编辑器”(vi-vi-vi在罗马数字中表示兽名数目)。然而它并不反对vi;相反的,它视私有软件诅咒。(“使用自由版本的vi不是罪恶,而是赎罪。”[13])它还有专门的新闻组,alt.religion.emacs,[14]发布主题宣扬这个滑稽的宗教。

斯托曼曾称自己是St IGNU−cius,Emacs教会的圣人。[15]

vi支持者也成立了对立的vi教,较强硬的Emacs的用户攻击这是“抄袭他们的创意”。

关于vi的模式,一些Emacs用户说vi有两个模式–“不停地哔哔叫”和“搞砸一切”。vi用户则指责Emacs的快捷键会引发腕管综合症,或者拿EMACS这个缩写词作文章,比如“Escape Meta Alt Control Shift”(攻击Emacs太依赖修改键,据vi用户称一些 Emacs 用户由于修改键过多而使用脚踏板,不过 vi 用户也有为切换模式使用脚踏板的)。[16][17] 一些人断定是代表“Eight Megabytes And Constantly Swapping”(8 MB,还不断进行内存交换,过去这已经是很多内存了),或者“EMACS Makes Any Computer Slow”(EMACS使一切计算机跑得慢,这是斯托曼惯用的递归缩写),讽刺Emacs对系统资源的高需求。

针对Emacs的“功能蔓延”,vi支持者认为Emacs是“一个伟大的操作系统,只缺个体面的编辑器”(在现实生活中,的确有 vi 用户在 Emacs 中打开多种窗口使用各种程序,同时在 Emacs 终端模拟器中使用 vi)。

UNIX用户中流行一个游戏,考验一个Emacs用户对这个编辑器的理解深度,或者是拿Emacs的复杂性开玩笑,内容是:预测一下,如果一个用户按住修改键(比如Control或Alt),然后键入自己的名字,会发生什么事。

Word War vi[18]是一个基于编辑器之战的类似en:shoot 'em up防守游戏英语Defender (arcade game)

目前状况

参考

  1. ^ The GNU Emacs Open Source Project on Open Hub : Languages Page. Ohloh.net. [1 December 2014]. 
  2. ^ The Vim Open Source Project on Open Hub : Languages Page. Ohloh.net. [1 December 2014]. 
  3. ^ NEWS.18. Programs such as mailers that invoke "the editor" as an inferior to edit some text can now be told to use an existing Emacs process instead of creating a new editor.  参数|quote=值左起第65位存在換行符 (帮助)
  4. ^ syntax.txt. All fonts used, except for Menu and Tooltip, should be of the same character size as the default font! Otherwise redrawing problems will occur.  参数|quote=值左起第68位存在水平制表 (帮助)
  5. ^ spacemacs. 
  6. ^ Ergoemacs. 
  7. ^ International Chars. 但是在Emacs内部则使用自己的多字节语言编码。 
  8. ^ Carbon Emacs Package. [2006-09-27]. (原始内容存档于2006-01-25). 
  9. ^ Aquamacs is an easy-to-use, Mac-style Emacs for Mac OS X. [2006-09-27]. 
  10. ^ B, Ramprasad. GNU Emacs FAQ For Windows 95/98/ME/NT/XP and 2000. 2005-06-24 [2006-09-27]. 
  11. ^ Borgman, Lennart. EmacsW32 Home Page. 2006 [2006-09-27]. 
  12. ^ GNU Emacs on Windows. Franz Inc. 2006 [2006-09-27]. 
  13. ^ All about Linux: The unabridged selective transcript of Richard M Stallman's talk at the ANU
  14. ^ alt.religion.emacs newsgroup
  15. ^ Saint IGNUcius - Richard Stallman
  16. ^ satirical expansions of EMACS
  17. ^ 使用脚踏板离合器操控 Vim.Linuxtoy. (alevchuk/vim-clutch) LinuxToy 上的评论区里面也有一些编辑器脚踏板大战的内容。
  18. ^ Word War vi site

外部链接


引证错误:页面中存在<ref group="notes">标签,但没有找到相应的<references group="notes" />标签