Emacs和Vim之间有什么实际的、客观的区别?例如,使用一个可以做而另一个不行(或者使用一个比另一个更容易做)?为了选择一门课程,我应该知道些什么?


当前回答

这就像苹果和橘子。两者都有不同的设计和理念。Vim是一个文本编辑器,而Emacs是一个Lisp解释器,可以进行文本编辑。

我使用Vim是因为它快速、狡猾,而且非常擅长处理文本。它具有可组合的自然键绑定,可以使您的开发任务真正协调一致。Vim基于一种简单的*nix哲学,即做好一件事——即文本操作。

使用bash/zsh和tmux扩展Vim通常很简单,可以学到很多东西。恕我直言,这是一个很好的学习曲线。关键是要学习如何集成这些东西以获得更大的工作应用程序。使用Vim,您需要学习集成,因为除非您告诉它如何进行集成,否则它不会自然地进行集成。另一个值得我使用的扩展是Tig。它是一个基于ncurses的Git前端。我只是有一个绑定,它无声地打开Tig,然后我在那里做所有Git的事情。

由最终用户来决定什么是最好的。Emacs和Vim经受住了时间的考验,证明了它们的价值。最终,一个优秀的程序员只需要一支笔和一张纸就可以发挥创造力。好的算法不需要编辑器的支持。所以两种方法都试试,看看哪种方法能让你更有效率。从这两个软件中学习设计模式,因为有很多东西需要学习和发现!

其他回答

在日常层面上有巨大的区别——Vim(或任何vi变体)本质上是模态的(你进入命令模式,但你不能编辑),而Emacs(以及大多数其他编辑器)不是。

当然,使用菜单之类的东西,你不需要在Vim中实际进入命令模式——首先。但即使使用Vim的一小部分力量,你也会。这是Vim/Emacs争论的核心。

就我个人而言,我还认为Emacs的可扩展性要强得多。你可以找到很多东西的Elisp包。

不过,我很好奇,为什么您考虑学习其中一种而不是更传统的IDE。你为什么要学这个?

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

With Emacs you are expected to have it open 24/7 and live inside the program, almost everything you do can be done from there. You write your own extensions, use it for note-taking, organization, games, programming, shell access, file access, listening to music, web browsing. It takes weeks and weeks till you will be happy with it and then you will learn new stuff all the time. You will be annoyed when you don't have access to it and constantly change your config. You won't be able to use other peoples emacs versions easily and it won't just be installed. It uses Lisp, which is great. You can make it into anything you want it to be. (anything, at all)

对于Vim,它几乎总是预先安装的。这是太快了。你打开一个文件做一个快速编辑,然后退出。如果您在其他人的机器上,则可以使用基本设置。它的可编辑性不是很好,但它仍然比大多数文本编辑器好得多。它能识别出你大部分时间是在阅读/编辑而不是打字,并使这部分工作更快。你的小指没有emacs症状。这并没有那么令人愤怒。这样更容易学。

即使我每天都在使用Emacs(而且喜欢它),除非你打算在你选择的程序上花费大量时间,否则我会选择vim

偏颇的观点:

Vi(不是vim)是一种专业需要。你总是有某种形式的 Vi容易获得,无论什么环境。你可以在vi中 在emacs中,您可以在vi中在unix-land中构建bash命令。

甚至Microsquish也必须支持vi(尽管他们做得很好 隐藏它),因为政府和公司遵守公布 标准。

在我看来,如果你在一个繁忙的环境中从事一份亲力亲为的工作——不 温室里的一朵花,被限制在一个开发项目的一个花哨的钻机上 环境,或者在学术界——了解一个高级编辑是一项工作 障碍。不要学习vim或emacs中的所有花哨技巧,不要 开发一堆宏,使编辑环境屈从于你的意愿。 这是一个巨大的时间消耗,当你注意的时候 不同的机器,你可能不能证明在工厂 环境。

读读比尔·乔伊的论文,他写得很好,甚至可以说 非常漂亮,编辑纯文本的工程练习 快。帕里托法则适用于此:80%的水果都在20%里 篮子的。编辑纯文本非常非常快是关键 编辑能力——其他都是可选的——有时是有害的。

Vim是一个方便的编辑器,你只需输入Vim的文件名来打开文件,编辑,保存和关闭。

Emacs是一个伪装成编辑器的“操作系统”,你可以评估代码来改变它的行为,并按你的喜好扩展它。在emacs上接收/发送电子邮件的模式类似于操作系统上的电子邮件软件。

当进行简单的编辑时,例如,修改配置文件,我使用vim。

否则,我永远不会离开emacs。

我是一个不折不扣的Emacs迷,但我早在认识Emacs之前就认识VI了。也就是说,我让我所有的人学习VI,因为它总是可用的,在任何地方。选哪一个都不会错。