协慌网

登录 贡献 社区

Emacs 和 Vim 之间的区别

不用争论为什么一个比另一个更好,Emacs 和 Vim 之间的实际区别是什么?我想学习一种或另一种,但我意识到每种学习曲线的难度很大,我无法决定。我从来没有使用过这种类型的编辑器(我一直使用过 IDE),所以对新手有帮助的都是一个加号。


在火焰战争开始之前:我不是在问哪个更好,而是在问两者之间的区别。我想要一个客观的比较。

答案

(以下文字是我的观点,不应视为事实或侮辱)

使用 Emacs,您可以将其 24/7 全天候打开并在程序中运行,几乎您可以做的所有事情都可以在此完成。您可以编写自己的扩展名,并将其用于笔记,组织,游戏,编程,shell 访问,文件访问,听音乐,浏览网页。可能需要数周和数周的时间,您才会对此感到满意,然后您将一直学习新知识。当您无权访问它并不断更改您的配置时,您会感到恼火。您将无法轻松使用其他人的 emacs 版本,也不会仅安装它。它使用 Lisp,这很棒。您可以将其变成任何您想要的东西。 (什么都没有)

使用 Vim,几乎总是预先安装了它。它很快。您打开文件进行快速编辑,然后退出。如果您在其他人的计算机上,则可以使用基本设置。它不是那么可编辑,但是仍然比大多数文本编辑器好得多。它可以识别出大部分时间您在阅读 / 编辑时都不会键入内容,从而使该部分的速度更快。您不会遭受emacs 小指的困扰。没那么令人生气。更容易学习。

即使我每天整天都在使用 Emacs(并喜欢它),除非您打算在程序中花费很多时间,否则我会选择 vim

Vim 不是外壳。而且它不能与子流程很好地通信。这几乎是设计使然,而在 Emacs 中,这些元素是设计所包含的。这意味着在 Vim 中很难进行某些事情,例如嵌入调试器或解释器(产生某种 IDE)。

另外,Emacs 快捷方式主要是通过修饰符访问的,显然,Vim 界面是著名的模态,可以访问大量的直接键来进行操作。

Emacs 曾经是两者中唯一可以编程的编辑器,而 Vim 的可编程性有很多怪异的层次,另外还增加了 Python 和 Ruby 绑定(我忘记了更多),但 Vim 在大多数情况下也是可编程的你会照顾的。

我使用 Vim,对此我感到很满意。

Vim:

  • 作为一个简单的编辑器更好(简单任务所需的键更少)
  • 更活跃的脚本社区 - 内部语言:vimscript
  • 一个脚本,插件,配色方案,... 的中央存储库
  • 也可在 python,ruby 中扩展
  • 可以做成便携式的(emacs 有一些问题)

Emacs:

  • 默认情况下为非模态(当今大多数编辑者都采用这种方法)。尽管有一种模仿 vim 行为的邪恶模式。
  • 用于扩展它的更强大的语言(elisp 是一种完善的语言,在 emacs 中,您几乎可以重新定义所有内容;而在 vim 中,您不能重新定义编辑器的内置功能。不利的是,vimscript 与当今的动态语言相对相似,而 elisp 与任何东西都不相似)
  • 更可扩展
  • 对 GNU 工具(其中有很多)的出色支持

就我个人而言,我更喜欢 vim - 它很小,可以完成它应该做的事情,当我希望使用完整的 IDE 时,我可以打开 VS。 Emacs 成为想要成为 IDE(或者应该说是 OS)但不完全是 IDE 的编辑器的方法已经过时了。在过去,拥有电子邮件客户端,ftp 客户端,俄罗斯方块,... 在一个软件包(emacs)中没有什么是有意义的... 如今,它不再存在了。

但是,两者都是程序员和超级用户社区用户之间宗教讨论的主题,在这方面,如果接触(使用相同的句子 / 问题),两者都非常适合引发火焰战争。