Emacs和Vim之间有什么实际的、客观的区别?例如,使用一个可以做而另一个不行(或者使用一个比另一个更容易做)?为了选择一门课程,我应该知道些什么?
当前回答
击键执行::: Vi编辑将保留键入键的每个排列。这将在决策树中创建一个路径,该路径明确地标识任何命令,而Emacs命令是立即执行的键入键的组合,使用户可以选择是否使用命令。
内存使用和可定制性::: vi是一个更小更快的程序,自定义能力更有限,而Emacs启动时间更长,需要更多内存。然而,它是高度可定制的,并且包含大量的特性,因为它本质上是为文本编辑而设计的Lisp程序的执行环境。
其他回答
我已经在生产/研究环境中使用spacemacs大约2年,neovim大约1年。Spacemacs是带有一些额外功能的emacs,比如图层等。neovim又是vim的一个分支,具有一些额外的特性。
就经验而言,我对他们俩都不太满意。我仍然在寻找一个长期的解决方案来满足我的文本编辑需求。
这里有一个简单的对比:
Neovim, vim, emacs, spacemacs, etc all of those editors consume less ressources compared to most of the editors out there. Neovim/vim is slightly faster than emacs, noticably faster than spacemacs. In terms of editing experience. I can easily say that emacs packages feel superior. I think that's because they blend in better with the core of emacs. Vimscript is nice and there are certainly great projects in the vim ecosystem as well. The good thing is they are better documented than most emacs projects I have seen so far. Both can be glitchy depending on the package you are using. Spacemacs tend to freeze, and neovim tend to display scary error messages, so pick your poison there. Modal editing in vim, is not an intuitive concept, but once you get used to it, you want it anywere. Both of the editor provide that.
现在你甚至不需要考虑这两者之间的区别,因为Spacemacs。它是一个社区驱动的Emacs发行版。
正如它所说,
最好的编辑器既不是Emacs也不是vim,而是Emacs和vim。
Spacemacs结合了Emacs和Vim的优点,使您的生活和工作更加轻松。
请看下面的截图,
(来源:spacemacs.org)
VI总是可用的,并且将在最残缺的、单用户模式、坏的图形、没有键图、慢的链接机器上运行——因此,仅仅为了系统管理任务,了解如何在它中编辑简单的文件是值得的。
Emacs是一个编辑器中的完整用户界面。其思想是在启动机器时启动Emacs,并且永远不要离开它。可能会有数千个会话。
与使用GUI编辑器/IDE和使用python/awk/等来完成额外任务相比,学习Emacs的功能是否值得,取决于你自己。
Vim不是一个壳。而且它不能很好地与子进程通信。这几乎是设计的,而在Emacs中,这些元素是设计包含的。这意味着有些东西,比如嵌入调试器或解释器(产生某种IDE),在Vim中是很困难的。
此外,Emacs快捷方式主要是通过修饰符访问的,显然Vim接口是出了名的模态接口,可以访问大量的直接键进行操作。
Emacs曾经是这两个编辑器中唯一可编程的编辑器,而Vim的可编程性有很多奇怪的级别,添加了Python和Ruby绑定(还有更多,我忘记了),Vim也可以以您所关心的大多数方式进行可编程。
我使用Vim,而且我对它相当满意。
Emacs具有Viper模式,因此在某种意义上,它提供了一个超特性集(除了那些在使用Viper和Vimpulse的Emacs中缺少哪些Vim特性?)
vi(和VIM IIRC)的重量较轻(它可以就地编辑文件),但提供的功能较少(子进程通信、扩展语言)。
推荐文章
- 在Vim中如何从“gf”返回
- 如何在Vim注释掉一个Python代码块
- 如何在可视块模式插入?
- 强迫自己掌握vi的最好方法是什么?
- 如何回到行之前编辑的最后一个在Vim?
- 如何跳转到一个特定的人物在vim?
- 如何删除一个大的文本块而不计算行?
- 是否有Eclipse行宽标记?
- 在Vim/Vi中,如何将光标移动到前一个单词的末尾?
- 如何在vim中自动删除尾随空格
- 为什么Vim使用~扩展名保存文件?
- 如何在Vim或Linux中将空格转换为制表符?
- 如何在编辑器(Atom, notepad++, Kate, VIM, Sublime, Textpad等)和ide (NetBeans, IntelliJ IDEA, Eclipse, Visual Studio等)中选择列
- 使用Emacs递归地查找和替换尚未打开的文本文件
- 我如何使用vimdiff来解决git合并冲突?