Emacs或Vim与Eclipse提供的效率是什么?

我在5年前开始编码。 我是通过Java和Eclipse引入的,这两者在编程社区都有很大的耻辱。 我现在实习的公司里的一些人更喜欢emacs或者vim。 我看不到一个基本的文本编辑器比一般的IDE更快或更简单,但是我喜欢从命令行更快的构build。

这是一个“老男孩俱乐部”的案例,还是以这种方式进行项目编程会更有效率?

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

GAV

我开始使用像Eclipse这样的IDE,但是大约两年前转向了Vim。

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

  • 它可以用作任何语言的IDE(您可以学习一次,并将其用于一切)
  • 它可以完成所有那些奇特的事情,如自动完成,重构和更复杂的操作,您可以通过添加macros或插件来扩展
  • 它可以在任何地方使用(并且可以通过SSH shell使用)
  • 你不需要一个GB的RAM来运行它

如果你真的坚持下去,你会发现,像这样的编辑工作最终会变得更快,而且实际上已经成为一种“肌肉记忆”。 这意味着您可以在不减速的情况下编写代码来思考过程。

Vim / Emacs

  • 非常快速/高效的代码写入
  • 低内存占用
  • 快速访问命令行
  • 无限的可能性通过脚本/插件
  • 永远不必离开键盘

  • 支持多种语言的全functionIDE
  • 伟大的重构支持

他们全部

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

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

参数“Eclipse for Java”与“Eclipse for [不是java的东西]”不同。 Eclipse对Java有很大的帮助。

我的意思是,vi就像一把螺丝刀,也可能是一把瑞士军刀,Eclipse就像是一台大型的数控组合铣床和沥青摊铺机。 你不完全比较它们,你只是使用两个。

另外,你在内部工作的巨人,你知道一点,但哪些Eclipse可以理解? Eclipse本身就是一个例子。 在这里,Eclipse具有完美的可见性,完全的语言支持,并且您需要提示和文档链接。

但是,如果您正在input一个100行的Ruby程序来转换SQL数据库,Eclipse并没有增加太多的价值,特别是考虑到它的包袱。

build立vi正确也是至关重要的,否则你不会赞同上诉。 Autoindent,showmatch,标签处理和其他各种选项应该被设置。 你应该有一个简单的方法来生成一个标签文件。 Google可以find标签生成器,或者只需从头开始编写一个标签生成器,只需要几行shellcode和sed(1)。

我不认为重构是一个标准。 那不是每小时一次,甚至每天一次。 当然,当你需要重构时,启动大的IDE。 呵呵,不要指望自动重构除Java以外的任何东西。

最后,vi实际上可以做许多IDE无法开始做的事情。 分组正则expression式全局replace是一种广义的重构 – 任何引擎。 为了欣赏viforms,你需要学习行(“:”)模式。 简而言之,就像在编辑器里面有sed(1)一样。

这一切都取决于你想要什么和期望以及你的使用模式是什么。

如果你正在寻找一个Java IDE,Eclipse很难被打败。 它是由Java人员用Java编写的。

如果您正在寻找一种快速编辑命令行文件的工具,则Emacs或vi都适合该账单。

如果你正在寻找一种你永远不用离开的工具,因为它可以做任何你想做的事情(发送/读取邮件,pipe理项目,待办事项列表,编译,debugging等等),那么Emacs更多“高效”。

如果你正在寻找切换编辑的理由,找出你想要的。 如果你想要一个更好的Eclipse,vi和Emacs将不会给你这个,坚持到Eclipse。

如果你正在寻找一个小巧,灵活的编辑器,六将符合法案。

如果您正在寻找最终可扩展的编辑器,Emacs就是这样。

无论你决定去哪个工具, 沉浸在你自己 。 了解所有的细节,扩展它以满足您的需求。 使用它的极限,并在使用中变得高效。

Emacs可以是一个强大的IDE,但是从Emacs到Eclipse,我不得不说我永远不会回头。 Eclipse只提供了很多function,您不能在Emacs中获得。

Mylyn和我正在使用的数据和文件的范围视图,debugging用户界面,CVS用户界面,都是内置的,易于获取和使用。 我会用一点鼠标来get'em。

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

Eclipse中的一些有吸引力的function是:

  • 方法名称完成
  • 错误突出显示
  • popupjavadoc评论
  • 重构

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

首先是事情。 与Eclipse相比,VIM的编程效率更高。 VIM的个人产品可能会很糟糕,但VIM的潜在上限要高得多。 这是事实。

VIM是一门武术。 第一次使用时感觉不自然。 而且你甚至不能使它工作。 需要多年的实践才能逐渐成长。 您首先着重于掌握一些细节。 慢慢地,你掌握的所有这些东西加起来,直到文本轻松地从你的手指尖stream到屏幕上。 复杂的编辑会让你的同事感叹一下,然后才能完成呼气。 很less有人可以使用VIM。 谁可以使用它productivley更less。 而且你可能永远不会遇到一个主人。 但他们传闻存在。

VIM旨在保持你的手在家里。 把你的手从键盘移动到鼠标是令人沮丧的。 这是一个严重的运动。 移动你的arm有一个phsycological效果,伤害你的动机。 使用VIM,人们可以将手腕套在键盘上,而且还可以轻松地打开文件,拆分窗口,打开制表符,构build项目,search/replace,更改字体,更改颜色等。

VIM是模态的。 这意味着您不必在按住Ctrl + Shift + Key的情况下执行复杂的组合键。 这从长远来看会伤害你的双手。 而是执行命令。 由于模式性质,不需要关键组合。

我们像电脑一样将数据存储在我们的内存中。 我们的记忆一次只能容纳几个数值。 看看你头脑中有多less个不同的整数,然后开始溜走。 我们通过写下东西来克服这个人的局限性。 如果数据不在我们的记忆之中,我们可以很容易地看到我们写下来的内容。 如果你的时间花在做大动作上,那么你正在浪费时间的物理事物可能会花在处理大脑中的数据上。 你想让自己的头脑在没有任何努力的情况下stream入屏幕。 听起来可能不是很多,但是VIM能够毫不费力地把你心目中的东西转移到屏幕上,这是一个巨大的生产力提升。 我想说什么很难。

VIM支持代码完成。 基于文本和查找。 它可以从多个文件中提取文本。 任何你想要的东西都可以在VIM中find。 要么亲自制作,要么使用其他人制作的东西。

VIM支持使用ctags进行定义。 您也可以find一个项目的所有参考。 再次,任何你想要的东西都可以在VIM中find。

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

在VIM的instnat中打开分割窗口。 当您需要查看远离您正在input的地方(或另一个文件中)的代码的一部分中的数据时,它是有用的。 您不必花时间调整窗口大小,也不必担心GUI窗口会彼此重叠,而是落后于对方。 不相关的代码窗口可以在选项卡中打开,不占用屏幕空间,但允许快速切换。

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

这取决于语言。

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

对于几乎所有其他语言(C,C ++,ruby,python,哈斯克尔,lisp …)vi和emacs在我看来更好。

我记得有一个研究报告表明,人们认为键盘快捷键比鼠标更有效率,实际上并不总是如此。

另一个心理效应是,我们把价值附加在昂贵的东西上,也就是说,因为Emacs很难学,所以它在某种程度上要好一些。

我认为这些效果可以解释一些人对Emacs / Vi的极度的喜爱。

然而,在Eclipse的情况下,我发现它可能会非常缓慢,甚至偶尔会崩溃,但对于一般的IDE来说,情况并非如此。

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

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

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

编辑:

这似乎是尼克·巴斯汀所指的文章。 我同意这个问题远不是一个确定的来源。 不过,我仍然认为,我对于感知和现实生产力的观点并不是一回事。

从vim / emacs提供的效率主要是由于他们沉重的键盘使用。 在这些程序中,你可以直接从键盘上做任何事情,而不必停下来使用鼠标。

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

大多数人都必须编写脚本来完成Eclipse所能实现的重构级别。 我认为其中的一部分是吹嘘权利,或者就像他们一直这样做。

我会随时去emacs而不是日食。 我也不得不说,裸骨emacs,不是很好,但经过一些调整,你永远不会想放手。 特别是我会告诉你在写硕士论文的时候emacs是多么的有用,应该明白为什么eclipse是劣质的,仅仅是因为它不那么通用。

我用以下编程语言编写了我的硕士论文:C ++,Python和R.补充,我必须编写论文,为此我使用了LaTeX。 而且,我不得不写一堆shell脚本和cmake脚本。 你猜怎么了? Emacs对它的全部支持。 特别是,与AuCTeX合作生产LaTeX文档是一种乐趣。 然后,Emacs提供了与R一起工作的伟大的ESS模式。同样,它提供了python的工具。 一旦我有用于构buildC ++代码的cmake脚本,我只需要使用emacs进行编译,然后就完成了。 Eclipse不能完全做这个事情,所以你需要学习使用许多不同的程序。 做笔记? 有组织模式,这是伟大的!

然后,我的程序需要一个非常强大的电脑(不像任何笔记本电脑)。 所以,我可以从emacs里面做所有的事情! 使用tramp,我发现自己正在对R代码进行远程交互式评估,远程编译,执行和debuggingC ++代码,以及我一直在使用的同样良好的本地emacs窗口中的所有内容。 相比之下,我的朋友使用单独的工具来开发所有的软件,而这些软件本来就是在另一台计算机上运行的。

像这样,我还有一些其他的故事,但是我认为,这会给你一个关于你可以用Emacs做的事情的好主意。 总而言之,我认为select使用emacs(尽pipe学习曲线)是我所做过的最有成效的决定。

希望能帮助到你。

最近我们有这个争论。 我认为,Emacs的自动完成function是我不能没有的一个function。 Eclipse的自动完成是基于语法分析的 – 代码被parsing,而当你键入代码时,你可以select完成。 Emacs的自动完成基于简单的文本分析。 这意味着它可以在纯文本,注释和文档中无处不在。 我一直在说Emacs的自动完成是IntelliSense在成长过程中想要的。

更新:

Eclipse确实提供了Alt- /,它应该和Emacs类似。 不知道它有多好,但。

我唯一喜欢IDE的地方是debugging。 我设置了我的vim环境进行debugging,但使用起来非常痛苦,如此笨拙,以至于我现在只是在需要debugging的时候切换到我的IDE(Netbeans)。 vim非常适合文本编辑,对于更复杂的东西(比如debugging和一些项目pipe理相关的任务)来说IDE非常棒。

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

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