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


75

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

这是“老男孩”俱乐部的事,还是这样编写项目的效率更高?

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

加夫


25
您没有说“基本”文本编辑器,对吗?:-D Emacs可以是所有东西:文本编辑器,IDE,媒体播放器,图像查看器,pdf查看器,Web浏览器,...我必须承认,它在所有这些角色中都不尽人意,但无论如何... ;-)
danielpoe 09年

20
Emacs或vi(m)都取决于您的宗教信仰,就像{{在此处插入IDE}}的杂草一样。IDE只是通往黑暗面真正力量的门户药物。
2009年

6
@danielpoe:你忘了心理学家!
2009年

最好的用例是比其他同事看起来更时髦。
Can Yegane 2014年

3
拥有59票赞成票,但由于mods不具有建设性而被关闭。这些主持人真讨厌每个问题。
DollarAkshay

Answers:


48

我开始使用像Eclipse这样的IDE,但是大约2年前切换到Vim。

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

  • 它几乎可以用作任何语言的IDE(您只需学习一次,然后将其用于所有用途)
  • 它可以完成所有自动完成,重构和许多更复杂的操作等奇特的事情,您可以通过添加宏或插件来扩展它们
  • 它几乎可以在任何地方工作(并且可以通过SSH shell使用)
  • 您不需要GB的ram即可运行它

如果您真的坚持不懈,您会发现在这样的编辑器中工作最终会更快,并且实际上已经根深蒂固,成为一种“肌肉记忆”。这意味着您可以编写代码而不会拖慢思考过程的速度。


7
要制作完整的vim代码,您应该始终进行一些调整。
Mykola Golubyev 09年

5
我认为这是隐含的。根据我的经验,Eclipse甚至需要进行甚至更多的调整。
2009年

46
而且vim的启动速度比您所说的“ Eclipse”还快。
路德维希·威尼泽尔

3
另一方面,Emacs至少需要GB的RAM:PI喜欢这只野兽。
kjfletch

4
@kjfletch我不知道您使用的是哪个版本的Emacs ...我的版本从不占用太多内存。即使在缓冲区中打开了一堆文件,我也从未注意到由于Emacs造成的速度下降。
乔纳森·斯特恩伯格

58

Vim / Emacs

  • 快速/高效的代码编写
  • 低内存占用
  • 快速访问命令行
  • 通过脚本/插件的无限可能性
  • 无需离开键盘

  • 全功能IDE语言
  • 强大的重构支持

他们全部

  • 跨平台
  • 功能丰富
  • 可通过插件扩展

我通常会发现自己vim通过IDE编写了大量的代码并执行调试任务。熟悉代码库无疑是一个因素,因为IDE是用于学习和学习不熟悉的源代码的好工具。


1
+1是最清晰,最有条理的答案,恕我直言。
Android Eve

我发现自己真的很喜欢IntellIJ IDEA,因为它具有出色的vim键绑定以及完整IDE的所有强大功能。QtCreator还具有不错的vim键绑定支持。但是,我还没有在Eclipse中找到可用的解决方案。
Corey D

1
掌握在命令行上工作的编辑器也很有价值。Emacs和Vi(m)都可以,但通常来说,IDE却不这样做,更现代的电源编辑器(如TextMate或Sublime Text)也没有。
RP狄龙

28

自变量“ Eclipse for Java”与“自Eclipse对于[不是Java的东西]”是不同的自变量。Eclipse确实为Java所用。

我的意思是,vi就像螺丝刀,或者是瑞士军刀,而Eclipse就像大型的CNC二合一轧机和沥青摊铺机。您没有完全比较它们,只是两者都使用。

另外,您是否正在研究某个鲜为人知的巨人,但是Eclipse可以理解的巨人?一个示例将在Eclipse本身上进行。在这里,Eclipse具有完美的可见性,全面的语言支持,并且您需要Toast提示和文档链接。

但是,如果您输入100行的Ruby程序来转换SQL数据库,则Eclipse不会增加太多价值,尤其是考虑到其负担。

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

我不认为重构是一个标准。那不是一个小时一次甚至一天一次的事情。当然,在需要重构时启动大型IDE。哦,不要期望Java以外的任何东西都能自动重构。

最后,vi实际上可以完成IDE无法开始做的许多事情。分组的正则表达式全局替换是一种通用的重构引擎。要欣赏视频格式,您需要学习行(“:”)模式。简而言之,这就像在编辑器中包含sed(1)一样。


19
我不同意重构的频率。重构就像重命名类/方法名一样简单,让IDE进行艰苦的工作可以节省大量时间。我知道有一个团队,他们的见习生花了2周的时间手动进行代码重命名...
SteveD

7
+1指向我们的“ Java Eclipse”。“ Eclipse确实为Java所用。” 我同意100%。
路德维希·威恩泽尔

16
请不要告诉人们使用替代进行重构。
R. Martinho Fernandes

我不是说要在需要重构时使用“ IDE”吗?但是,与Java的距离越远,IDE重构就越少……
DigitalRoss

@DigitalRoss,原则上没有什么可以阻止Eclipse获得分组的正则表达式全局替换-没人花时间。
托尔比约恩Ravn的安徒生

23

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

如果您正在寻找Java IDE,那么很难击败Eclipse。它是由Java专家用Java编写的。

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

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

如果您正在寻找切换编辑器的原因,请找出所需的内容。如果您想要更好的Eclipse,vi和Emacs不会提供给您,请坚持使用Eclipse。

如果您正在寻找一个小型的,灵活的编辑器,那么vi很适合您。

如果您正在寻找最终可扩展的编辑器,则可以使用Emacs。

无论您决定使用哪种工具,都要沉浸在自己的身体中。了解所有的来龙去脉,并将其扩展以满足您的需求。最大限度地使用它,并提高其使用效率。


5
+1表示“您决定使用哪种工具,使自己沉浸其中。了解所有的知识和知识,扩展它来满足您的需求。使用它的极限,并提高其使用效率。”
NlightNFotis

+1他们每个人都有自己的长处。双方的EmacsEclipse中提供VIM仿真,而你使用他们每个人对于正处在什么好处,可以提供一致的接口。
Gordon Gustafson 2013年

15

Emacs可以是功能强大的IDE,但是从Emacs到Eclipse,我不得不说我永远不会回头。Eclipse仅提供了许多Emacs无法获得的功能。

Mylyn和我正在使用的数据和文件的作用域视图(调试UI,CVS UI)都是内置的,易于获取和使用。我会用鼠标一点点来得到它们。


我不需要“一个”,我只喜欢使用一个,并拥有Eclipse在我的IDE内部提供的漂亮的UI和diff工具。
RC。

也许CVS UI不错,但是我对Subclipse(eclipse SVN插件)感到非常沮丧。在这一点上,我会认真地(并且会做!)宁愿使用命令行作为SVN。
Tikhon Jelvis 2011年

我主要是指您正在使用CVS,而不是实际使用的东西。不是UI部分。
选项

@mathepic-是的,谢天谢地,我们搬到了Mercurial。:)
RC。

就个人而言,当与Emacs一起使用版本控制时,我喜欢“做下一个合乎逻辑的事情”。
陈征费

12

首先是第一件事。与Eclipse相比,VIM在编程方面更具生产力。您在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的一个实例中打开。当您需要在代码的某一部分中查看与您键入的位置(或在另一个文件中)相距很远的数据时,此功能很有用。您不必花时间调整窗口的大小,也不必担心GUI窗口彼此重叠并且彼此落后。可以在选项卡中打开不相关的代码窗口,以免占用屏幕空间,但允许快速切换。

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


8
“要逐步提高生产力需要多年的实践。” ..好吧,我们不会永远活着,为什么当您在几个小时内就能实现生产力时,您会花一辈子使事情变得复杂吗?就像使用命令行软件而非Winamp收听音乐一样。
Sorin Trimbitas

@SorinTrimbitas同样的原因,人们投资货币来从复利中受益,而不是在赚钱的那一刻就花钱。当然,您可以在几个小时内提高生产力,然后可以在余生中保持该水平的生产率。或者,您可以投入一些初始投资,然后看到您的生产率以更高的速度增长。同样,该报价具有误导性。不需要花费很多年就能像使用IDE那样变得高效。相反,这意味着您使用它的次数越多,您将不断提高生产率。
JBentley '20

8

我已经使用vi多年,可以使用多种语言编辑代码,并且非常喜欢它。但是我发现像Eclipse这样的IDE对于Java开发来说甚至更好,现在我倾向于几乎完全在Eclipse中工作。我不时使用vi进行一些专门的活动,例如批量插入版权声明,主要是处理那些在Eclipse中无法自动执行的某些死记硬背的编辑。当我只想查看源文件而不必等待Eclipse打开时,我也将Windows .java文件类型映射为vi。

Eclipse中的一些吸引人的功能包括:

  • 方法名称完成
  • 错误突出显示
  • 弹出javadoc注释
  • 重构

我发现它通常比vi效率要高得多,因此您应该尝试一下它,看看它是否也对您适用。


6

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

另一个心理影响是,我们将价值赋予昂贵的事物,即,由于Emacs较难学习,因此必须在某种程度上变得更好。

我认为这些效果可以解释很多人对Emacs / Vi的极端情感。

但是,对于Eclipse,我发现它可能非常慢,甚至偶而崩溃,但是通常对于IDE来说并不是这样。

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

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

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

编辑:

似乎是Nick Bastin所指的文章。我同意这不是一个确定的来源。但是,我仍然认为关于感知生产力和实际生产力的观点并不相同。


21
苹果公司于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 与ATOM,Visual Studio,Eclipse和IntelliJ所需的RAM数量相比,Emacs在我的PC上仅占用50-100 MB。
aoeu256

4

这取决于语言。

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

在我看来,对于几乎所有其他语言(C,C ++,ruby,python,haskell,lisp ...),vi和emacs都更好。


如果您使用.NET,则可以两全其美:Visual Studio + ViEmu。
R. Martinho Fernandes

4
您能否写出为什么vim / emacs更适合Eclipse / CDT的c / c ++?
谢尔盖(Sergei)2013年

3

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


2

我想说说,实际的vim / emacs编辑器在提供的快捷方式方面要远远优于Eclipse文本编辑器。但是,对于重构,我完全同意。

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


6
不,我们大多数人只是不编写“重构”需要更改150个不同文件的代码。
jrockway

10
我敢打赌,在Eclipse中更改2个文件的速度比在vim / emacs中更改速度快。另外,我们中的一些人继承了需要重构的错误代码,而像Eclipse提供的工具则使重构变得容易得多。
Mike McQuaid)

@Mike,虽然在很大程度上取决于变化。
托尔比约恩Ravn的安徒生

@Thorbjørn@Mike我可以使用最快地更改它touch
可替代

@mathepic,很大程度上取决于定义的变化...
托尔比约恩Ravn的安徒生

2

我会随时选择emacs而不是蚀。我还必须说,裸骨emacs并不是那么好,但是经过一些调整之后,您将永远不会放任它。特别是,我将告诉您emacs在撰写硕士论文时有多大用处,这应该清楚为什么Eclipse的劣势是因为Eclipse的通用性较低。

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

然后,我的程序需要一台功能非常强大的计算机(不同于任何笔记本电脑)。因此,我可以从emacs内远程完成所有操作!!!使用流浪汉,我发现自己对R代码进行了远程交互式评估,对C ++代码进行了远程编译,执行和调试,并且在与我一直使用的相同的本地emacs窗口中进行了所有操作。相比之下,我的朋友谁都使用单独的工具来完成所有工作,而开发本来可以在另一台计算机上运行的软件要慢得多。

像这样,我还有其他故事,但是我认为,这将使您对使用Emacs可以做的事情有个好主意。总而言之,我认为选择emacs(尽管学习曲线很困难)是我做出的最有生产力的决定。

希望能帮助到你。


1
+1表示您需要在使用前配置Emacs。这是一个常见的错误,导致我在最终获得Emacs之前进行了几次尝试。原因是,如果您运行一个IDE或任何一个编辑器,您都在等待它开箱即用。由于这种误解,我常常被责怪Emacs与我所听到的不符,然后将其扔掉。直到下一篇弹出文章赞美Emacs。
Hi-Angel

1

最近,我们一直在争论这个问题。我认为,Emacs的自动完成功能是我不能没有的一个功能。Eclipse的自动完成功能基于句法分析-解析代码,并且在您键入代码时,系统会为您提供自动完成功能。Emacs的自动完成功能基于简单的文本分析。这意味着它可以在任何地方以纯文本,注释,文档形式工作。我一直在说Emacs的自动完成功能是IntelliSense成长时想要的功能。

更新:

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


我相信Emacs也可以基于TAGS文件(实际上是“转到定义”所需的数据结构的脱机版本)来完成操作,但是我没有Java版本的经验。
托尔比约恩Ravn的安徒生

1

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


0

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.