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


当前回答

Emacs具有Viper模式,因此在某种意义上,它提供了一个超特性集(除了那些在使用Viper和Vimpulse的Emacs中缺少哪些Vim特性?)

vi(和VIM IIRC)的重量较轻(它可以就地编辑文件),但提供的功能较少(子进程通信、扩展语言)。

其他回答

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

现在你甚至不需要考虑这两者之间的区别,因为Spacemacs。它是一个社区驱动的Emacs发行版。

正如它所说,

最好的编辑器既不是Emacs也不是vim,而是Emacs和vim。

Spacemacs结合了Emacs和Vim的优点,使您的生活和工作更加轻松。

请看下面的截图,

(来源:spacemacs.org)

我一开始是vim的用户,然后我切换到emacs,然后是vim,现在我又在尝试使用emacs。

两人都是伟大的编辑。 如今,两者都是可扩展的 两者都有很棒的插件和社区

作为开发人员,我们输入很多,最后对我来说,在缓冲区和文件中移动是最大的重复任务,所以我想要一个编辑器,我可以快速移动!

再次尝试emacs的动机是,我发现它的Ctrl键比vim更快,而且更容易推理。

在vim中,你有模式,你有插入模式,可视模式,正常模式,当你按下某个东西时会发生什么取决于你所处的模式,这是一种有状态的编辑方式。移动,进入插入模式,编辑,退出插入模式,然后再次移动。如果我错过了ESC按键或类似的东西,我经常会迷失自我。

在emacs中没有模式,基本上你用你的粉色按下Ctrl并键入按键,比如C-x C-f, C-x C-s, C-x C-c。有一些你需要释放ctrl键的键绑定,我讨厌这些键绑定,总是用按下control键的键绑定来替换它们。

我认为emacs方法更快地思考和输入,但是vim有另一个优点,那就是。它的命令是可组合的,它们通常有一个格式。例如,要删除一行,可以使用dd,删除一个单词dw。插件利用了这种感觉,使用vim-surround插件,你可以用ds”(delete surround)删除引号,删除到下一个/ dt/。删除之前的/:dT/,以此类推。所以只要你学会了移动的东西就会变得很有趣。

综上所述,今天我发现emacs键绑定在宏编辑方面更快,而vim命令在微编辑方面更强大

在过去的五年里,我一直在使用vim,所以我的编辑思想主要是关于单词、线条、周围环境、块等。删除这一行,删除引号,替换引号, 删除字在游标,我试图找到emacs移动为那

最后我想说的是,我更关心fzf而不是emacs或vim,我希望有一个完全基于fzf的编辑器

VI总是可用的,并且将在最残缺的、单用户模式、坏的图形、没有键图、慢的链接机器上运行——因此,仅仅为了系统管理任务,了解如何在它中编辑简单的文件是值得的。

Emacs是一个编辑器中的完整用户界面。其思想是在启动机器时启动Emacs,并且永远不要离开它。可能会有数千个会话。

与使用GUI编辑器/IDE和使用python/awk/等来完成额外任务相比,学习Emacs的功能是否值得,取决于你自己。

关于这两个编辑器,已经说了很多,但我只想补充我的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便士。