Emacs和Vim之间有哪些实际的、客观的区别? 例如,其中一个可以做到但另一个却无法做到(或者使用其中一个更容易)?我该了解哪些信息才能选择学习其中之一?
(以下文字仅代表我的观点,不应被视为事实或侮辱)
使用Emacs时,你需要24/7保持它开启并在程序内运行,几乎所有的操作都可以在其中完成。你可以编写自己的扩展、用它来记笔记、组织文件、玩游戏、编程、访问shell、访问文件、听音乐、浏览网页。你需要花费数周的时间才能学会并满意使用它,之后你将不断学习新的技能。当你无法访问它时,你会感到烦恼并不断更改配置。你无法轻松地使用其他人的 Emacs 版本,并且它不会自动安装。它使用 Lisp 语言,这很棒。你可以将它变成任何你想要的东西。(任何东西,完全取决于你)。
对于 Vim 来说,它几乎总是预先安装好的。它非常快速。你只需打开一个文件,进行快速编辑,然后退出即可。如果你在别人的计算机上工作,你可以直接使用基本设置。它的可编辑性不如 Emacs,但仍远超大多数文本编辑器。Vim 知道大多数时候你是阅读/编辑而不是打字,因此更快。你不会遭受 emacs pinkie 的困扰,而且它比较容易学习。
尽管我整天使用 Emacs(并且喜欢它),但除非你打算在所选的程序中花费大量时间,否则我会选择 Vim。
vi
系统,而不是别名为vim
。 - ELLIOTTCABLEssh
连接到其他机器时,我经常使用它。这就是为什么我首先学习它的原因——还有因为我的朋友们知道 VIM 并能够帮助我。(也不要低估朋友的支持!) - jvriesemVim不是一个shell,并且与子进程的通信能力不太强。这几乎是出于设计考虑,而在Emacs中,这些元素则是设计上的一部分。这意味着一些东西,例如嵌入调试器或解释器(产生一种IDE),在Vim中会很困难。
此外,Emacs快捷键主要通过修改键访问,而Vim界面显然是漂亮的模态界面,提供了大量直接操作的按键。
Emacs曾经是两者中唯一可编程的编辑器,尽管Vim具有其编程性的多个奇怪层次,但通过添加Python和Ruby绑定(还有更多,我忘记了),Vim也可以以大多数你关心的方式进行编程。
我使用Vim,并且相当满意。
Vim:
Emacs:
就个人而言,我更喜欢vim——它体积小,功能齐全,当我需要一个完整的IDE时,我打开VS。Emacs试图成为一个编辑器和IDE(或者说是操作系统),但它不太能实现这个目标,这在我的观点里已经过时了。在旧日里,将邮件客户端、FTP客户端、俄罗斯方块等放入一个软件包(emacs)中还有一定意义……而现在已不再如此。
然而,这两款编辑器都是程序员和超级用户社区用户之间宗教性讨论的话题,在这方面,如果将它们放在同一句或问题中,它们都非常适合引发争论。
Vim启动速度始终比Emacs快。我想说的是,在任何机器上,Vim开箱即用的安装都会比Emacs更快地启动。而且在对两者进行适度的自定义后,我倾向于认为Vim仍然比Emacs启动更快。
此外,另一个实际差别在于Emacs的模式。当您编辑XML、C/C++/Java/及大多数您可以想到的流行语言、LaTeX时,这些模式会极大地方便您的工作。它们让您想要长时间保持编辑器打开并进行工作。
总的来说,我会说Vim适合用于短时间的快速编辑任务;而Emacs则鼓励您进行长时间的深入编辑。
use-package
和它的:defer
选项后,我的Emacs几乎可以立即打开。我甚至放弃了使用emacsclient。 - JayVI是一种始终可用的编辑器,即使在单用户模式、严重损坏的图形界面、没有键映射、慢速连接的机器上也能运行 - 因此,对于系统管理员任务而言,了解如何在其中编辑简单文件是值得的。
Emacs则是一个完整的用户界面和编辑器。其理念是开机后启动Emacs并永不离开它。它可以保留数千个会话。
无论学习Emacs的功能是否比使用GUI编辑器/集成开发环境以及使用类似Python/Awk等额外工具来处理任务更有价值,这都取决于您自己。
ed
“始终可用,并可以在最受限制的单用户模式、破损的图形界面、没有键映射、低速连接的机器上运行。” 等等,等等,现在是哪一年?(叹气——ed
,我永远不会忘记你。) - belacqua我是一个彻头彻尾的 Emacs 粉丝,但在接触 Emacs 之前我早就认识 VI 了。话虽如此,我让所有人都学习 VI,因为无论何时何地都可以使用它。两者都不会错。
看起来似乎已经有一个答案被选定了,但对我来说,最大的区别始终是模态与非模态。Vim 是模态的,这意味着它根据特定的使用模式进行优化。至少我一直都是这么看的。这使得使用 Vim 的体验不同,因为你并不是在一个工作区中打代码,而是在告诉一个环境来处理文本。这就是为什么人们说用 Vim 就真的在学习一门语言。:wq 和 :s/foo/bar 都是一个类似 shell 的环境中编辑和读取文本的一部分。
另一方面,Emacs 更接近于今天大多数编辑器/文字处理器等。你有一个高度可编程的界面的工作空间。这就是为什么你会看到像电子邮件、irc、shell 等东西。作为程序员,很容易想象说“拿到我当前所在行号并对此信息做些事情”。离开编辑器的欲望变得较小,因为你可以在 Emacs 中完成这些操作,而不必退出,打开其他应用程序/语言,并在某些文本上进行操作。
这两个想法并不一定对立,它们只是揭示了两种不同的关注点。个人而言,我使用 Emacs,但我见过那些很熟悉 Vim 的人,可以诚实地说无论你选择哪个都没关系。我先尝试了 Vim,但最终还是选择了 Emacs。无论你选择什么,都应该至少在 Vim 上有一定的熟练程度,因为它真的是随时可用的。
我一开始用vi,然后换成了emacs,再变成了vim。最近我一直在考虑试试Emacs,看看过去五年里都发生了什么。(说到IDE,我曾经使用过eclipse一段时间,但我更喜欢我的终端窗口连接我自己的mac和我(丈夫的)linux电脑)。
最近剪切和粘贴的问题一直困扰着我。在Vim中,剪切和粘贴需要比Emacs更多的步骤,如果我没有记错的话。从浏览器复制到终端窗口粘贴很烦人,除非你做一些麻烦的事情,我不想这样做,所以我忍受奇怪的缩进。我认为,在Emacs中编辑多个文件更容易。至少如果你同时打开两个文件,跳转到另一个文件就更容易。
我没有玩过vi或emacs的高级功能,因为我只想开始编码。我只需要漂亮的颜色和正确的制表符转换(特别是在Python中非常重要)。
我认为这一切都取决于你是想使用:wq
还是Ctrl-x Ctrl-s
(如果你不关心花哨的东西)来保存文件。
@mgb是正确的。在一个Debian发行版中,我最近仅使用了最基本的Linux功能。只有vi是可用的编辑器。
:set paste
命令,然后粘贴您的文本,完成后使用:set nopaste
命令将返回正常模式。还有一个:set pastetoggle=<F2>
命令,可以使用您选择的键组合切换此功能。 - hbaryyp
命令复制/粘贴操作并不比其他方式更难。此外,您可以参考这里,在不同的窗口之间进行复制和粘贴操作:https://dev59.com/fWoy5IYBdhLWcg3wHqiB#8757876。 - puk日常使用上有很大的区别 - Vim(或任何vi变种)本质上是模态的(您进入命令模式,无法编辑),而Emacs(以及大多数其他编辑器)则不是。
当然,使用菜单等可以在Vim中不必实际进入命令模式 - 起初如此。但要使用Vim的微小部分功能,您将需要这样做。这是Vim / Emacs争论的核心。
就个人而言,我认为Emacs更具可扩展性。您可以找到许多Elisp包。
但我很好奇,您为什么想要学习其中之一而不是更传统的IDE。您想要学习其中之一的原因是什么?
,销售话术
是这样说的<fsbot> 我们不会撒谎。Emacs 不好用。我们中的一些人能忍受它,但我们不能告诉你你是否能够。试试看,自己判断吧。
- SilexPAGER=cat man
,那么 man 将直接在屏幕上显示文本。 - S.S. Annei,esc,wq
即可。 - JL Peyret