我大约5年前开始编码。我是通过Java和Eclipse进行介绍的,它们在编程社区中都有相当大的污名。我目前在公司实习的许多人都喜欢emacs或vim。我看不到基本的文本编辑器比一般的IDE更快或更容易的方法,尽管我欣赏从命令行构建等东西会更快。
这是“老男孩”俱乐部的事,还是这样编写项目的效率更高?
您可以提供一些用例进行演示吗?如果我提倡Eclipse,我会说重构和自动完成是非常方便的工具。
加夫
我大约5年前开始编码。我是通过Java和Eclipse进行介绍的,它们在编程社区中都有相当大的污名。我目前在公司实习的许多人都喜欢emacs或vim。我看不到基本的文本编辑器比一般的IDE更快或更容易的方法,尽管我欣赏从命令行构建等东西会更快。
这是“老男孩”俱乐部的事,还是这样编写项目的效率更高?
您可以提供一些用例进行演示吗?如果我提倡Eclipse,我会说重构和自动完成是非常方便的工具。
加夫
Answers:
我开始使用像Eclipse这样的IDE,但是大约2年前切换到Vim。
您可能要使用文本模式编辑器的原因:
如果您真的坚持不懈,您会发现在这样的编辑器中工作最终会更快,并且实际上已经根深蒂固,成为一种“肌肉记忆”。这意味着您可以编写代码而不会拖慢思考过程的速度。
Vim / Emacs
蚀
他们全部
我通常会发现自己vim
通过IDE编写了大量的代码并执行调试任务。熟悉代码库无疑是一个因素,因为IDE是用于学习和学习不熟悉的源代码的好工具。
自变量“ 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)一样。
这完全取决于您想要/期望什么以及您的使用模型是什么。
如果您正在寻找Java IDE,那么很难击败Eclipse。它是由Java专家用Java编写的。
如果您正在寻找一种可以从命令行快速编辑文件的工具,那么Emacs或vi都适合。
如果您正在寻找一个永远不需要离开的工具,因为它可以做任何您想做的事(发送/阅读邮件,管理项目,待办事项列表,编译,调试等等等),那么Emacs就是更多“高效”。
如果您正在寻找切换编辑器的原因,请找出所需的内容。如果您想要更好的Eclipse,vi和Emacs不会提供给您,请坚持使用Eclipse。
如果您正在寻找一个小型的,灵活的编辑器,那么vi很适合您。
如果您正在寻找最终可扩展的编辑器,则可以使用Emacs。
无论您决定使用哪种工具,都要沉浸在自己的身体中。了解所有的来龙去脉,并将其扩展以满足您的需求。最大限度地使用它,并提高其使用效率。
Emacs可以是功能强大的IDE,但是从Emacs到Eclipse,我不得不说我永远不会回头。Eclipse仅提供了许多Emacs无法获得的功能。
Mylyn和我正在使用的数据和文件的作用域视图(调试UI,CVS UI)都是内置的,易于获取和使用。我会用鼠标一点点来得到它们。
首先是第一件事。与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
我已经使用vi多年,可以使用多种语言编辑代码,并且非常喜欢它。但是我发现像Eclipse这样的IDE对于Java开发来说甚至更好,现在我倾向于几乎完全在Eclipse中工作。我不时使用vi进行一些专门的活动,例如批量插入版权声明,主要是处理那些在Eclipse中无法自动执行的某些死记硬背的编辑。当我只想查看源文件而不必等待Eclipse打开时,我也将Windows .java文件类型映射为vi。
Eclipse中的一些吸引人的功能包括:
我发现它通常比vi效率要高得多,因此您应该尝试一下它,看看它是否也对您适用。
我记得曾读过某项研究,该研究表明人们认为键盘快捷键比鼠标更有效,而实际上并非总是如此。
另一个心理影响是,我们将价值赋予昂贵的事物,即,由于Emacs较难学习,因此必须在某种程度上变得更好。
我认为这些效果可以解释很多人对Emacs / Vi的极端情感。
但是,对于Eclipse,我发现它可能非常慢,甚至偶而崩溃,但是通常对于IDE来说并不是这样。
我经常使用Eclipse,VS和Emacs。我也将使用TextMate,但是现在没有Mac了。这取决于我在做什么,更具体地说,哪个系统最能支持我的语言和工具。
我知道人们花很多时间在编辑器上,而不是花在做一些有用的事情上。他们中的一些人甚至承认自己只是为了挑战而这样做。其他人经常声称Emacs / Vi具有比IDE更强大的功能,因为它们是可编写脚本的。好吧,大多数IDE(包括Eclipse)也可以编写脚本。从这个意义上讲,几乎所有编辑器都是等效的(尽管我承认,有些编辑器比其他编辑器更容易编写脚本)。
如果您喜欢IDE,我的建议是继续使用IDE。没有一个真正的编辑器。
编辑:
这似乎是Nick Bastin所指的文章。我同意这不是一个确定的来源。但是,我仍然认为关于感知生产力和实际生产力的观点并不相同。
这取决于语言。
对于Java或.NET,请使用IDE(Eclipse,Netbeans,Visual Studio ...)。
在我看来,对于几乎所有其他语言(C,C ++,ruby,python,haskell,lisp ...),vi和emacs都更好。
我想说说,实际的vim / emacs编辑器在提供的快捷方式方面要远远优于Eclipse文本编辑器。但是,对于重构,我完全同意。
大多数人必须编写脚本来完成Eclipse能够进行的那种级别的重构。我认为其中一部分是吹牛的权利,或者人们只是以他们一直拥有的方式这样做。
touch
。
我会随时选择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(尽管学习曲线很困难)是我做出的最有生产力的决定。
希望能帮助到你。
最近,我们一直在争论这个问题。我认为,Emacs的自动完成功能是我不能没有的一个功能。Eclipse的自动完成功能基于句法分析-解析代码,并且在您键入代码时,系统会为您提供自动完成功能。Emacs的自动完成功能基于简单的文本分析。这意味着它可以在任何地方以纯文本,注释,文档形式工作。我一直在说Emacs的自动完成功能是IntelliSense成长时想要的功能。
更新:
Eclipse确实提供了Alt- /,它应该类似于Emacs。不过,不确定其效果如何。