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


当前回答

在你的问题中,你没有提到你想让它用Lisp编程!但是当你评论你的回答时,我明白你实际上想要一个LISP编程接口。

对于这个精确的任务,忘记Vi吧。Emacs与LISP的集成非常棒!你应该使用SLIME。然后,您将与REPL进行出色的集成,能够将函数、缓冲区或文件直接计算到emacs缓冲区中运行的解释器中,以及更多…

其他回答

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

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

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

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

对于我来说,选择使用emacs而不是vim的最大区别是emacs内置的gdb支持。Vim的默认发行版中并没有包含这个功能,而且用于集成gdb和Vim的项目几乎不可能使用MacVim

我认为主要的区别在于设计目标。 VIM是UNIX的工作编辑器。 Emacs是针对GNU和lisp黑客的,所以它有一些混合的设计元素。

我在我的工作站上使用vim,而我也喜欢emacs。

对我来说,emacs的优点是,

tramp模式允许您通过ssh编辑远程文件。就像本地文件一样。 Tramp-mode + dired =全功能SFTP客户端 支持您需要的所有语言。 内置的终端模拟器(术语模式),所以我可以继续编码,而无需在应用程序之间切换。 可扩展性任何你不喜欢的东西都可以用lisp来改变。

关于这两个编辑器,已经说了很多,但我只想补充我的5便士。这两个编辑器都很棒,你不会选错他们中的任何一个。

我使用vi/vim已经有15年了。我试过几次转换到emacs,但每次都发现vim实际上可以做缺少的事情,而不需要写一个lisp扩展或安装一些东西。

对我来说,编辑器的主要区别是vim让你使用环境/操作系统,而emacs试图封装它或替换它。 例如,您可以在文本中添加日期:r!日期在vim,或日历与:r!ccal1 2014,甚至用十六进制版本的内容替换缓冲区的内容。如。: % !Xxd,编辑十六进制,然后返回:%!XXD -r,以及许多其他用途,如内置grep, sed等。

另一个例子是使用jq和gron。如。将json blob粘贴到编辑器,然后运行转换:

:r!curl -s http://interesting/api/v1/get/stuff
:%!gron | grep 'interesting' | gron -u

OR

:%!jq .path.to.stuff

上面的每个管道命令都可以通过:%!<命令>,其中%表示所有文档,但也可以对选定的行等运行。这里gron输出可以作为jq路径。

您还可以获得EX批量编辑功能,例如。替换某些单词,重新格式化代码,转换dos->unix换行符,一次对100个文件运行宏。这很容易用ex完成。我不确定emacs是否有类似的东西。

换句话说,IMHO vim更接近unix哲学。它通常更简单、更小,但是如果您了解您的操作系统和工具,您可能只需要VIM提供的东西。我从来没有。

此外,vi在任何unix/linux系统上都是事实上的标准,为什么要学习使用两个做同样事情的工具呢?当然,有些系统提供mg或类似的东西,但肯定不是所有的。Unix + Vi <3。

好吧,只要我的5便士。