Emacs和Vim之间有哪些实际的、客观的区别? 例如,其中一个可以做到但另一个却无法做到(或者使用其中一个更容易)?我该了解哪些信息才能选择学习其中之一?
我最初使用vim,然后切换到emacs,再回到vim,现在正在尝试再次使用emacs。
作为开发人员,我们输入的内容很多,对我来说,移动缓冲区和文件是最大的重复任务,因此我需要一个可以快速移动的编辑器!
重新尝试使用emacs的动机是,我觉得Ctrl键绑定比vim更快,更容易理解。
在vim中,你有各种模式,例如插入模式、可视化模式、正常模式等等。按下某个键会发生什么取决于你处于哪种模式,这是一种面向状态的编辑方法。你要移动,进入插入模式,进行编辑,退出插入模式,然后再移动。如果错过了ESC键或其他类似的按键,我经常会迷失自己。
在emacs中没有模式,基本上你按住Ctrl键并输入按键,比如C-x C-f,C-x C-s,C-x C-c。有些按键需要释放Ctrl键,我讨厌这些按键,并且总是用按下Ctrl键的按键代替它们。
我认为emacs的方法更快思考和打字,但vim也有另一种优势。它的命令是可组合的,通常具有格式。例如,要删除一行,您可以使用dd
,要删除一个词dw
。插件利用这种感觉,使用vim-surround插件,您可以使用ds"(删除周围的“),删除到下一个/ dt/
。删除到前一个/:dT/
等等。因此,只要学会移动事物,就开始变得非常有趣。一种悲观的观点:
vi(而不是vim)是必不可少的专业工具。无论在什么环境下,您始终可以轻松地使用某种形式的vi。您可以在emacs中使用vi,在unix环境中构建bash命令时也可以使用vi。
即使是Microsquish也必须支持vi(尽管他们做得很好,但隐藏了它),因为政府和企业需要遵守发布的标准。
在我看来,如果您在繁忙的环境中从事实际工作,而不是像开发环境或学术界那样被限制在一个高档设备上,那么对于一款高端编辑器的了解反而是一种职业劣势。不要学习vim或emacs中的所有花哨技巧,并且不要开发一堆宏来让编辑环境按照您的意愿弯曲。这是一个巨大的时间浪费,会妨碍您处理不同机器时的工作。
阅读比尔·乔伊(Bill Joy)的论文-这是一项非常有能力甚至可能是美丽的工程练习,可以非常快速地编辑纯文本。帕里托法则适用于此:80%的成果在20%的篮子里。非常快速地编辑纯文本是编辑能力的关键-其他所有内容都是可选的,有时甚至是有害的。
我认为主要的区别在于设计目标。 VIM是为UNIX作为工作编辑器而设计的。 Emacs则是为GNU和Lisp程序员而设计的,因此它具有一些混合的设计元素。
我在我的工作站上使用vim,但我也很喜欢emacs。
我在生产/研究环境中使用Spacemacs约2年,使用Neovim约1年。Spacemacs是Emacs的一个版本,具有一些不错的额外功能,如图层等。而Neovim则是Vim的一个分支,同样带有一些额外的功能。
就我的使用体验而言,我对它们都感到相当不满意。我仍在寻找长期解决方案来满足我的文本编辑需求。
以下是一个简单的比较:
Neovim、vim、emacs、spacemacs等这些编辑器相比其他大多数编辑器,消耗的资源更少。
在速度方面,Neovim/vim比emacs稍快,比spacemacs明显更快。
就编辑体验而言,我可以轻松地说emacs包感觉更优秀。我认为这是因为它们与emacs核心更好地融合了。
Vimscript很好,vim生态系统中肯定有很棒的项目。好处是它们比我迄今看到的大多数emacs项目都有更好的文档。
两者都可能会出现故障,具体取决于您使用的软件包。Spacemacs倾向于冻结,而neovim倾向于显示可怕的错误消息,所以请自行选择。
vim中的模态编辑不是一个直观的概念,但一旦你习惯了它,你就会想要在任何地方使用它。这两个编辑器都提供了这个功能。
vim 是一个方便的编辑器,你只需输入 vim 文件名
即可打开文件、编辑、保存和关闭。
emacs 是一个“操作系统”,假装是一个编辑器,你可以使用 eval
命令来改变它的行为,并按照自己的喜好进行扩展。在 emacs 上接收/发送电子邮件的 mode
就像操作系统上的电子邮件软件。
当进行简单的编辑,例如修改配置文件时,我使用 vim。
否则,我从不离开 emacs。
.bashrc
中使用set -o vi
,而不是默认使用的set -o emacs
。我从未使用过ksh,但可能相同。 - sjas我是Emacs的粉丝,但我鼓励其他开发者学习VI,因为:
我注意到有关VIM启动速度比emacs快的评论。如果你真的很在意这个问题,那就以服务器模式运行emacs,并将“emacs”别名为“emacsclient”。客户端非常快,因为它只是轻敲服务器并告诉它你要编辑哪个文件。在MacOSX上,emacsclient只有33K,而emacs则有287M。
我不确定在现代硬件上是否需要这些操作。在我的MacBook Pro(2013年Retina)上,当我从shell中运行它时,emacs几乎瞬间加载完成。我完全没有感觉到任何暂停。当我运行Emacs.app(GUI版本)时,可能需要3秒钟左右。
我听到的大多数关于emacs的抱怨似乎来自于对emacs的错误理解。自1982年以来,我已经使用过vi和emacs,我确实记得emacs比vi加载得慢得多,并且在我早期的UNIX盒子上使用了大部分物理内存,但这种情况已经不存在至少15-20年了。
我承认有一个抱怨是“emacs小指”。当我年轻的时候,这从来没有让我感到不适。现在我58岁了,我的小指会因为反复访问emacs和弦控制键而有点酸痛。特别是在MacBook Pro键盘上,控制键向右移动一个位置以腾出空间给“fn”键。当控制键是左下角键时,这并不那么令人讨厌。
首先,Vi(原始实现)今天已经不再使用。你所说的是一些 Vim 的派生版本。
要扩展 Vim 的功能,必须重新编译 Vim,而 Emacs 则不需要。
Emacs 自带了 Vim(viper-mode)。
通常需要手动安装 Emacs,而 Vim 通常预装在所有类 Unix 操作系统上(但如果您有 ssh 访问主机 tramp-mode win Vim :))。
如果您尝试过 Vim,就会讨厌 Emacs,因此请先从 Emacs 开始。
还可以阅读 http://www.dina.dk/~abraham/religion/vi-tutorial.html(链接已失效,请使用this)
答案可以在 hxxp://en.wikipedia.org/wiki/Editor_war 中搜索。
,销售话术
是这样说的<fsbot> 我们不会撒谎。Emacs 不好用。我们中的一些人能忍受它,但我们不能告诉你你是否能够。试试看,自己判断吧。
- SilexPAGER=cat man
,那么 man 将直接在屏幕上显示文本。 - S.S. Annei,esc,wq
即可。 - JL Peyret