ChatGPT解决这个技术问题 Extra ChatGPT

Emacs 或 Vim 与 Eclipse 的效率如何? [关闭]

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、参考资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您认为此问题可以改进并可能重新打开,请访问帮助中心获取指导。 9年前关闭。

我大约在 5 年前开始编码。我是通过 Java 和 Eclipse 介绍的,它们在编程社区中都有相当大的污名。我目前在公司实习的一些人更喜欢 emacs 或 vim。我看不出一个基本的文本编辑器是如何比一般的 IDE 更快或更容易的,尽管我很欣赏一些东西,比如从命令行构建往往更快。

这是“老男孩”俱乐部的情况,还是以这种方式编写项目更有效率?

你能提供一些用例来演示吗?如果我提倡 Eclipse,我会说重构和自动完成是非常方便的工具。

加夫

您没有说“基本”文本编辑器,是吗? :-D Emacs 可以是一切:文本编辑器、IDE、媒体播放器、图像查看器、pdf 查看器、Web 浏览器……我不得不承认,它在所有这些角色中并不优越,但无论如何……;-)
Emacs 或 vi(m),这一切都取决于你的宗教信仰,就像 {insert IDE here} 的杂草一样。 IDE 只是通往黑暗面真正力量的门户药物。
@danielpoe:你忘了心理学家!
最好的用例会比你的其他同事看起来更时髦。
有 59 票赞成,但因不具建设性而被 mods 关闭。伙计,这些版主真的讨厌每一个问题。

C
Corey D

Vim / Emacs

非常快速/高效的代码编写

低内存占用

快速访问命令行

通过脚本/插件提供无限可能

永远不必离开键盘

适用于多种语言的全功能 IDE

强大的重构支持

他们全部

跨平台

功能丰富

可通过插件扩展

我通常发现自己通过 vim 编写大量代码并通过我的 IDE 执行调试任务。熟悉代码库当然是一个因素,因为 IDE 是跳来跳去和学习不熟悉的源代码的好工具。


+1 以获得最清晰和最有条理的答案,恕我直言。
我发现自己非常喜欢 IntellIJ IDEA,因为它具有出色的 vim 键绑定以及完整 IDE 的所有强大功能。 QtCreator 也有不错的 vim 键绑定支持。但是,我还没有在 Eclipse 中找到可用的解决方案。
掌握一个在命令行上工作的编辑器也很有价值。 Emacs 和 Vi(m) 都可以,但一般来说,IDE 不会,更现代的强力编辑器(如 TextMate 或 Sublime Text)也不会。
O
Oreo

我开始使用 Eclipse 等 IDE,但大约 2 年前切换到 Vim。

您可能想要使用文本模式编辑器的原因:

它可以用作几乎任何语言的 IDE(您只需学习一次,就可以将其用于任何事情)

它可以完成所有这些花哨的事情,例如自动完成、重构和许多更复杂的操作,您可以通过添加宏或插件来扩展这些操作

它几乎可以在任何地方使用(并且可以通过 SSH shell 使用)

您不需要 GB 的内存来运行它

如果你真的持之以恒,你会发现在这样的编辑器中工作最终会更快,而且实际上会成为一种根深蒂固的“肌肉记忆”。这意味着您可以在不放慢速度思考过程的情况下进行编码。


要使 vim 完整的代码,你应该总是调整一些东西。
我认为这是一种暗示。以我的经验,Eclipse 需要同样多的调整。
而且 vim 的启动速度比你说的“Eclipse”还要快。
另一方面,Emacs 至少需要 GB 的 RAM:PI 喜欢野兽。
@kjfletch 我不知道您使用的是什么版本的 Emacs……我的版本从不占用太多 RAM。即使在缓冲区中打开了一堆文件,我也从未注意到 Emacs 导致速度变慢。
D
DigitalRoss

论点“Eclipse for Java”与“Eclipse for [something that is not java]”是不同的论点。 Eclipse 确实适用于 Java。

我的意思是,vi 就像一把螺丝刀,或者可能是一把瑞士军刀,而 Eclipse 就像一个大型 CNC 组合铣床和沥青撒布机。你不完全比较它们,你只是使用两者。

此外,您是否在某个您知之甚少但 Eclipse 了解的巨大事物中工作?一个例子是在 Eclipse 本身上工作。在这里,Eclipse 具有完美的可见性、全面的语言支持,并且您需要 toast 提示和文档链接。

但是,如果您正在输入一个 100 行的 Ruby 程序来转换 SQL 数据库,那么 Eclipse 并没有增加多少价值,尤其是考虑到它的包袱。

正确设置 vi 也很重要,否则您将无法理解它的吸引力。应设置自动缩进、显示匹配、制表符处理和各种其他选项。您应该有一种简单的方法来生成标签文件。 Google 可以找到标签生成器,或者只是从头开始编写一个,只需几行 shellcode 和 sed(1)。

我不认为重构是一个标准。这不是你每小时甚至每天一次做的事情。当然,在需要重构时启动大型 IDE。哦,不要指望自动重构除 Java 之外的任何东西。

最后,vi其实可以做很多IDE不能开始做的事情。分组正则表达式全局替换是一种通用的重构引擎。要欣赏 vi 格式塔,您需要学习行 (":") 模式。简而言之,这就像在编辑器中使用 sed(1)。


我不同意重构的频率。重构可以像重命名类/方法名称一样简单,让 IDE 完成繁重的工作可以节省大量时间。我知道一个团队让他们的实习生花了 2 周时间手动检查他们的代码进行重命名......
+1 指向我们的“Eclipse for Java”。 “Eclipse 确实适用于 Java。”我同意 100%。
请不要告诉人们使用替换来重构。
我不是说在需要重构时使用“IDE”吗?但是你离 Java 越远,你的 IDE 重构就越少……
@DigitalRoss,原则上没有什么禁止 Eclipse 进行分组正则表达式全局替换 - 没有人只是花时间。
T
Trey Jackson

这完全取决于您想要/期望什么以及您的使用模型是什么。

如果您正在寻找 Java IDE,Eclipse 很难被击败。它是由 Java 人员用 Java 为 Java 编写的。

如果您正在寻找从命令行快速编辑文件的工具,Emacs 或 vi 都适合您。

如果您正在寻找一种您永远不必离开的工具,因为它可以做任何您想做的事情(发送/阅读邮件、管理项目、待办事项列表、编译、调试等),那么 Emacs 更适合“高效的”。

如果您正在寻找更换编辑器的理由,请弄清楚您想要什么。如果您想要更好的 Eclipse,vi 和 Emacs 不会给您,请坚持使用 Eclipse。

如果您正在寻找一个小巧灵活的编辑器,vi 将符合您的要求。

如果您正在寻找最终可扩展的编辑器,那么 Emacs 就是您的最佳选择。

无论您决定使用哪种工具,都让自己沉浸其中。了解所有细节,扩展它以满足您的需求。将其发挥到极致并提高使用效率。


+1 表示“无论您决定使用哪种工具,都让自己沉浸其中。了解所有细节,扩展它以满足您的需求。将其发挥到极致并提高使用效率。”
+1 他们每个人都有自己的长处。 EmacsEclipse 都提供 vim 仿真,当您使用它们各自擅长的事情时,它可以提供一致的界面。
R
RC.

Emacs 可以是一个强大的 IDE,但是从 Emacs 到 Eclipse,我不得不说我再也不会回去了。 Eclipse 只是提供了许多您在 Emacs 中无法获得的特性。

我正在使用的数据和文件的 Mylyn 和范围视图、调试 UI、CVS UI 都是内置的,并且易于获取和使用。我会用一点鼠标来获取它们。


我不“需要”一个,我只是更喜欢使用一个并拥有 Eclipse 在我的 IDE 中提供的漂亮 UI 和差异工具。
也许 CVS UI 很好,但我对 Subclipse(eclipse SVN 插件)感到非常沮丧。在这一点上,我会认真(并且做!)而不是使用 SVN 的命令行。
我主要指的是您使用的是 CVS,而不是实际工作的东西。不是 UI 部分。
@mathepic - 是的,谢天谢地,我们已经搬到 Mercurial。 :)
就个人而言,我喜欢在 Emacs 中使用版本控制时“做下一个合乎逻辑的事情”。
m
mike

第一件事。 VIM 在编程方面比 Eclipse 更有效率。你在 VIM 中的个人生产力可能很糟糕,但 VIM 的潜在上限要高得多。这是事实。

VIM是一门武术。第一次使用时感觉不自然。你甚至不能让它工作。需要多年的实践才能逐渐变得富有成效。一开始你专注于掌握一些细节。慢慢地,你掌握的所有这些位加起来,直到文本毫不费力地从你的指尖流到屏幕上。让你的同事叹气的复杂编辑会在他完成呼气之前从你的手中跳出来。很少有人会使用VIM。能高效使用它的人越来越少。你可能一辈子也遇不到大师了。但据传它们存在。

VIM 旨在让您的双手保持在本垒打。把你的手从键盘移到鼠标上是令人沮丧的。这是一个粗大的运动。移动你的手臂会产生一种损害你动力的生理效应。使用 VIM,有人可以将您的手腕固定在键盘上,您仍然可以轻松地打开文件、拆分窗口、打开选项卡、构建项目、搜索/替换、更改字体、更改颜色等。一切都以闪电般的速度进行。

VIM 是模态的。这意味着您不必在按住 control+shift+Key 的情况下进行复杂的组合键。从长远来看,这会伤害您的手。相反,您执行命令。由于模态性质,不需要键组合。

我们像计算机一样将数据存储在内存中。我们的记忆一次只能保存几个值。看看在它们开始溜走之前你可以在脑海中记住多少个不同的整数。我们通过写下东西来克服这种人为的限制。如果数据从我们的记忆中消失,我们可以很容易地查看我们写下的内容以将其取回。如果你的时间花在大运动上,那么你就失去了原本可以花在处理大脑数据上的时间。您希望自己的思想毫不费力地流到屏幕上。这听起来可能不多,但 VIM 能够毫不费力地将您的想法转移到屏幕上,这极大地提高了生产力。很难用语言表达我想说的话。

VIM 支持代码完成。基于文本和查找。它可以从多个文件中提取文本。你想要的任何东西都可以在 VIM 中得到。要么自己做,要么用别人做的东西。

VIM 支持使用 ctags 进行定义。您还可以找到一个项目的所有参考。同样,你想要的任何东西都可以在 VIM 中得到。

VIM 的脚本非常庞大。您可以下载或创建数千种配色方案并立即更改颜色。尝试在 Microsoft Visual Studio 中更改字体或颜色,它会在加载数据时挂起 20 秒。它不会让你存储配色方案,每次你想要改变风景时,你必须花 30 分钟调整颜色和字体。在 VIM 中,您可以将行距设置为零以适应屏幕上的更多代码行。我得到了80多行。 Visual Studio 每行使用 2 个像素的间距,你不能调整它!!!更少的行=更多的滚动=更少的生产力=被迫使用小字体来获得更多的行=眼睛疲劳。

拆分窗口在 VIM 的 instnat 中打开。当您需要查看远离您输入位置(或不同文件)的代码部分中的数据时,它很有用。您不必花时间调整窗口大小,或担心 GUI 窗口相互重叠和相互落后。可以在选项卡中打开不相关的代码窗口,不占用屏幕空间,但允许快速切换。

VIM 作为 IDE:http://www.youtube.com/watch?v=MQy2rVOf-z0&feature=fvwrel VIM 复仇:http://www.youtube.com/watch?v=lQNFfhC4QI8


“需要多年的实践才能逐渐变得富有成效。” .. 好吧,我们不会永远活着,当您可以在几个小时内取得成果时,您为什么还要花费一生来复杂化事情呢?这就像使用命令行软件而不是 Winamp 来听音乐。
@SorinTrimbitas 人们投资钱是为了从复利中受益,而不是在赚到钱的那一刻就花掉。当然,您可以在几个小时内提高工作效率,然后您可以在余生中保持这种平稳的生产率。或者您可以进行一些初始投资,然后看到您的生产力提高到更高的速度。此外,该报价具有误导性。不需要数年时间就可以像使用 IDE 一样高效。相反,这意味着您使用的次数越多,您的工作效率就会不断提高。
J
Jim Ferrans

多年来我一直使用 vi 来编辑各种语言的代码,我真的很喜欢它。但是我发现像 Eclipse 这样的 IDE 更适合 Java 开发,现在我几乎完全倾向于在 Eclipse 中工作。我不时放弃使用 vi 进行一些专门的活动,例如批量插入版权声明,主要是那些处理某些在 Eclipse 中不能很好自动化的死记硬背编辑的活动。当我只想查看源文件而不等待 Eclipse 打开时,我还将我的 Windows .java 文件类型映射到 vi。

Eclipse 中一些吸引人的特性是:

方法名补全

错误高亮

弹出 javadoc 注释

重构

我确实发现它总体上比 vi 更有效,所以你应该尝试一下,看看它是否也适用于你。


J
Jørgen Fogh

我记得在某处读到过一项研究,该研究表明人们认为键盘快捷键比鼠标更有效,但实际上并非总是如此。

另一个心理影响是我们重视昂贵的东西,即由于 Emacs 更难学习,它在某些方面一定更好。

我认为这些影响可以解释很多人对 Emacs/Vi 的极端喜爱。

但是,在 Eclipse 的情况下,我发现它可能非常慢,甚至偶尔会崩溃,但一般来说,这不是针对 IDE 的情况。

我经常使用 Eclipse、VS 和 Emacs。我也会使用 TextMate,但我没有 mac 了。这取决于我在做什么,更具体地说,什么系统最能支持我的语言和工具。

我知道有些人花更多的时间来编写编辑器,而不是花在做有用的事情上。他们中的一些人甚至承认自己只是为了挑战而这样做。其他人经常声称 Emacs/Vi 可以比 IDE 做更多的事情,因为它们是可编写脚本的。好吧,大多数 IDE(包括 Eclipse)也可以编写脚本。从这个意义上说,几乎所有编辑器都是等效的(尽管我承认,有些编辑器比其他编辑器更容易编写脚本)。

如果你喜欢 IDE,我的建议是继续使用。没有一个真正的编辑器。

编辑:

This 似乎是 Nick Bastin 所指的文章。我同意它远非确定的来源。但是,我仍然认为我关于感知生产力和实际生产力不同的观点仍然成立。


这项“研究”是苹果公司在 1989 年完成的(不是真正的科学研究,而是焦点小组研究),当时他们试图将鼠标评估为对习惯于完全通过键盘使用计算机的人来说是真正的“新技术”。时代(和界面)现在已经完全不同了,甚至 Tognazzini 也同意编辑器是一个键盘曾经(并且现在)总是更快的地方(当然,假设你的键盘快捷键不是你必须考虑的东西)。
Emacs 是一个很大的 REPL,所以如果你在 emacs lisp 中编码并按 C+X C+E 你可以看到一堆 s 表达式的中间值。还可以对其进行编程以向您显示每个中间值,而无需按 Cx Ce,这比每一个臃肿的 Java 或 Visual Studio IDE 都要好... youtube.com/watch?v=TgHvRcbYJ-8&t=38s Emacs 只占用我的 50-100 MB PC 与 ATOM、Visual Studio、Eclipse 和 IntelliJ 所需的 ram 数量相比。
h
hiena

这取决于语言。

对于 Java 或 .NET,请使用 IDE(Eclipse、Netbeans、Visual Studio...)。

对于几乎所有其他语言(C、C++、ruby、python、haskell、lisp...),我认为 vi 和 emacs 更好。


如果您使用 .NET,则可以两全其美:Visual Studio + ViEmu。
你能写下为什么 vim/emacs 更适合 Eclipse/CDT 的 c/c++ 吗?
J
Jon W

vim/emacs 提供的效率主要是通过大量使用键盘来提供的。在这些程序中,您可以直接从键盘执行大多数操作,而不必停下来使用鼠标。


M
Mike McQuaid

我想说,就它们提供的快捷方式而言,实际的 vim/emacs 编辑器远远优于 Eclipse 文本编辑器。但是,我完全同意你关于重构的看法。

大多数人必须编写脚本来完成 Eclipse 能够进行的那种级别的重构。我认为其中一部分是吹嘘自己的权利,或者人们只是以他们一贯的方式来做这件事。


不,我们大多数人只是不编写“重构”需要更改 150 个不同文件的代码。
我敢打赌,我在 Eclipse 中更改 2 个文件的速度比在 vim/emacs 中更快。此外,我们中的一些人继承了需要重构的不良代码,而像 Eclipse 提供的那些工具使这变得容易得多。
@Mike,虽然很大程度上取决于什么变化。
@Thorbjørn @Mike 我可以使用 touch 以最快的速度更改它。
@mathepic,很大程度上取决于变化的定义......
J
Jose Antonio Alvarez Ruiz

我会随时选择emacs而不是eclipse。我还不得不说,赤裸裸的 emacs 并没有那么好,但经过一些调整,你永远不会想放手。特别是我会告诉你emacs在写我的硕士论文时是多么的有帮助,这应该清楚为什么Eclipse是劣等的,只是因为它不那么通用。

我的硕士论文是用以下编程语言写的:C++、Python 和 R。作为补充,我必须写论文,为此我使用了 LaTeX。此外,我不得不编写一堆 shell 脚本和 cmake 脚本。你猜怎么着? Emacs 对这一切都有很好的支持。特别是,很高兴与 AuCTeX 一起制作 LaTeX 文档。然后,Emacs 为使用 R 提供了出色的 ESS 模式。同样,它为 python 提供了便利。一旦我有了用于构建 C++ 代码的 cmake 脚本,我只需要从 withing emacs 调用 compile 就完成了。 Eclipse 不能完全做到这一点,因此您需要学习使用许多不同的程序。做笔记?有组织模式,这很棒!

然后,我的程序需要一台功能非常强大的计算机(不像任何笔记本电脑)。所以,我可以在 emacs 中远程做所有事情!!!!使用 tramp,我发现自己在我一直使用的同一个良好的本地 emacs 窗口中对 R 代码进行远程交互式评估、远程编译、执行和调试 C++ 代码以及所有内容。相比之下,我的朋友们在开发旨在在另一台计算机上运行的软件时,使用单独的工具来完成所有事情的速度要慢得多。

像这样我还有一些其他的故事,但我认为,这会让你对 Emacs 可以做的事情有一个很好的了解。总而言之,我认为选择使用 emacs(尽管有学习曲线)是我做过的最有成效的决定。

希望能帮助到你。


+1 提到您需要在使用前配置 Emacs。这是一个常见的错误,导致我在最终得到它之前尝试了几次 Emacs。原因是,如果您运行 IDE,您需要等待它开箱即用的编辑器。由于这种误解,我经常被指责 Emacs 与我所听到的不匹配,并把它扔掉了。直到下一篇赞美 Emacs 的弹出式文章。
佚名

我们最近在工作中遇到了这种争论。我的看法是,我离不开的一个特性是 Emacs 的自动完成功能。 Eclipse 的自动完成基于句法分析——代码被解析,并且当您键入代码时,您可以选择完成。 Emacs 的自动完成功能基于简单的文本分析。这意味着它可以在纯文本、评论、文档中 - 无处不在。我一直说 Emacs 的自动完成功能是 IntelliSense 长大后想要的。

更新:

Eclipse 确实提供了 Alt-/,它应该类似于 Emacs。不过,不确定它的效果如何。


我相信 Emacs 也可以基于 TAGS 文件(本质上是“转到定义”所需的数据结构的离线版本)完成完成,但我没有使用 Java 版本的经验。
r
rg88

我更喜欢 IDE 的唯一地方是用于调试。我为调试设置了我的 vim 环境,但使用起来非常痛苦,非常笨重,以至于我现在需要调试时才切换到我的 IDE (Netbeans)。 vim 非常适合文本编辑,IDE 非常适合更复杂的东西(例如调试和一些项目管理相关的任务)。


R
Rev316

像上面的一些帖子一样,我从 IDE (Eclipse) 开始。从那里我搬到了 Emacs,然后我又回到了富文本编辑器 (TextMate)。

对我来说,效率是在界面级别拥有编辑器的能力。允许我将我已经建立(或其他)的其他服务集成到我的伪 IDE 环境中。