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


当前回答

我想引用《UNIX编程的艺术》一书中的一段话:

Many people who regularly use both vi and Emacs tend to use them for different things, and find it valuable to know both. In general, vi is best for small jobs – quick replies to mail, simple tweaks to system configuration, and the like. It is especially useful when you’re using a new system (or a remote one over a network) and don’t have your Emacs customization files handy. Emacs comes into its own for extended editing sessions in which you have to handle complex tasks, modify multiple files, and use results from other programs during the session. For programmers using X on their console (which is typical on modern Unixes), it’s normal to start up Emacs shortly after login time in a large window and leave it running forever, possibly visiting dozens of files and even running programs in multiple Emacs subwindows.

我在这里真正想强调的是:“许多人发现两者都知道是有价值的。

其他回答

如果您经常从一个站点移动到另一个站点,或者您的工作涉及到登录到生产系统,那么vim就是合适的选择。

默认情况下,所有*nix机器都会安装vi。

大多数sysdamins更喜欢ksh作为默认shell。KSH使用vi(或emacs)命令击键来搜索历史记录并编辑命令行。

如果你不太了解vi,当你登录到一个标准配置的unix机器上时,你就会受到严重的限制。

仅仅因为这个原因,我推荐vim作为你日常的编辑器。我曾经见过emacs爱好者试图在一个基本的unix服务器上修改配置文件。

我从vi开始,到emacs,然后到vim。我一直想试试Emacs,看看在过去五年中发生了什么变化。(说到IDE,我已经使用eclipse有一段时间了,但我更喜欢我的终端窗口连接我的mac和我(丈夫的)linux盒子)。

剪切粘贴的事最近一直困扰着我。在Vim中剪切和粘贴比在Emacs和IIRC中需要更多的步骤。从浏览器粘贴到终端窗口很烦人,除非你做了一些我不喜欢做的奇特的事情,所以我忍受了奇怪的缩进。我认为,在emacs中编辑多个文件更容易。如果两个文件都在屏幕上,至少可以从一个文件跳转到下一个文件。

我没有使用vi或emacs的花哨特性,因为我只是想开始编码的工作。我所需要的是漂亮的颜色和适当的制表符到空格的转换(对python尤其重要)。

我认为这完全取决于你是想使用:wq还是Ctrl-x Ctrl-s (IIRC)来保存文件,如果你不关心花哨的东西。

@mgb是正确的。一两个月前,我曾在Debian发行版中使用最低限度的linux来修复一些东西。Vi是唯一可用的编辑器。

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

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

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

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

Seems an answer has been selected already, but the big difference to me has always been the modal vs. non-modal. Vim is modal, which means that it makes optimizations based on a specific set of usage modes. At least that's how I've always looked at it. This makes using Vim a different experience because instead of having a work area that you type code in, you really are telling an environment to act on the text. This is why people say things like with Vim you really are learning a language. The :wq and :s/foo/bar is all part of a shell like environment that edits and reads text.

Emacs on the other hand is much closer to most editors/word processors/etc. you see today. You have a workspace that has a highly programmable interface. That is why you see things like email, irc, shells, etc. As a programmer it is easy to think in terms of saying "take the line number I'm on and do something with the information". The desire to leave the editor becomes less because instead of having to quit, open some other app/language and do things on some text, you have Emacs where you can do these things within the scope of your editor.

这两种观点并不一定是对立的,只是它们揭示了两个不同的焦点。就我个人而言,我使用Emacs,但我见过非常了解Vim的人,他们可以诚实地说,选择哪种并不重要。我首先尝试了Vim,但Emacs最终支持了我。的确,无论您选择什么,您都应该至少在一定程度上精通Vim,因为它总是可用的。