在IntelliJ中可能无法在Eclipse中完成的事情?


365

我听说有人改变了选择的方式,并且互相誓约。

作为Eclipse的忠实拥护者,但没有时间尝试IntelliJ,我感兴趣的是IntelliJ用户,他们是“前Eclipsians”,您可以使用IntelliJ来完成某些您无法使用Eclipse来完成的特定工作。

注意:这不是主观问题,也不是要成为IDE的圣战。请否决任何烈火的答案



1
我从Eclipse到Netbeans再到IntelliJ ruby​​Mine,每个都比前一个“进步”了。我暂时看不到具体的内容(因此这不是一个答案),但是最大的跃升是rubyMine,它更“集成”并且似乎具有更多的功能,并且可以更轻松地呈现内容使用方式。它似乎还比其他方法更好地处理了宝石问题,依赖项等。
毫无价值

我想从intelliJ切换到Eclipse(由于android开发),因此这种类型的问题和答案非常有用。
chrome

8
@chrome Android现在以另一种方式切换: developer.android.com/sdk/installing/studio.html
Daniel Alexiuc 2013年

1
我尽可能多地发布这些帖子,所有答案都指向实际上可以使日食变暗的事物,有时更容易恕我直言。我想感觉像是通过intellij获得了我的价值,但是我购买它的唯一原因是Javascript自动完成功能。如果这是我所能得到的,我本可以以便宜的价格购买webstorm。可能有一个eclipse插件也做同样的事情。坦率地说,我认为日食更加一致,并且我错过了Perspectives功能。
dres 2013年

Answers:


185

Ctrl单击可在任何地方使用

按住CTRL键并单击即可将定义的对象带到任何地方-不仅在Java类和Java代码中的变量中,而且在Spring配置中(您可以单击类名,属性或bean名称),在Hibernate中(您可以单击可以单击属性名称或类,或包含的资源),您可以在Java类中单击一下导航到用作Spring或Hibernate bean的位置;单击包含的JSP或JSTL标记也可以,按住Ctrl键单击JavaScript变量或函数可将您带到定义的位置,或者如果存在多个位置,则显示菜单,包括HTML或JSP中的其他.js文件和JS代码文件。

自动完成许多语言

冬眠

在HSQL表达式中,在Hibernate配置中(包括类,属性和数据库列名称),在Spring配置中自动完成

<property name="propName" ref="<hit CTRL-SPACE>"

它将显示您可以注入该属性的那些bean的列表。

爪哇

Java代码中非常聪明的自动完成功能:

interface Person {
    String getName();
    String getAddress();
    int getAge();
}
//---
Person p;
String name = p.<CTRL-SHIFT-SPACE>

它仅向您显示getName()getAddress()toString()(仅按类型兼容),并且getName()在列表中排在第一位,因为它具有更相关的名称。仍在EAP中的最新版本8具有更智能的自动完成功能。

interface Country{
}
interface Address {
    String getStreetAddress();
    String getZipCode();
    Country getCountry();
}
interface Person {
    String getName();
    Address getAddress();
    int getAge();
}
//--- 
Person p;
Country c = p.<CTRL-SHIFT-SPACE>

它会自动将其自动完成

Country c = p.getAddress().getCountry();

Java脚本

JavaScript中的智能自动完成功能。

function Person(name,address) {
    this.getName = function() { return name };
    this.getAddress = function() { return address };
}

Person.prototype.hello = function() {
    return "I'm " + this.getName() + " from " + this.get<CTRL-SPACE>;
}

并且它仅显示getName()getAddress(),无论您项目中其他JS对象中的get *方法如何,然后按住ctrl单击this.getName()都会将其转到定义该位置的位置,即使您的项目中还有其他一些getName()函数。

的HTML

我是否提到过自动完成功能和按ctrl键单击文件的路径,例如<script src =“”,<img src =“”等?

HTML标记属性中的自动完成。HTML标签的样式属性的自动完成功能,包括属性名称和值。类属性也自动完成。
输入<div class =“ <CTRL-SPACE>,它会向您显示项目中定义的CSS类的列表。选择其中一个,然后按住Ctrl并单击它,您将被重定向到定义它的位置。

轻松自学语言

最新版本具有语言注入功能,因此您可以声明自定义JSTL标记通常包含JavaScript,并将在其中突出显示JavaScript。

<ui:obfuscateJavaScript>function something(){...}</ui:obfuscateJavaScript>

所有项目的索引搜索。

您可以使用任何Java类或方法的“查找用法”,它不仅可以找到Java类,还可以找到Hibernate,Spring,JSP和其他位置的使用位置。重命名方法重构不仅在Java类中而且在包括注释的任何地方都重命名方法(无法确定注释中的字符串是否真的是方法名称,因此会询问)。即使存在另一个同名类的方法,它也只会找到您的方法。良好的源代码控制集成(SVN是否支持更改列表?IDEA支持每个源代码控制),能够使用您的更改创建补丁,以便您可以将更改发送给其他团队成员而无需提交更改。

改进的调试器

当我在调试器的监视窗口中查看HashMap时,我看到了逻辑视图-键和值,上一次我在Eclipse中进行操作时,它显示的是带有哈希值和下一个字段的条目-我并不是真正在调试HashMap,我只想看看它的内容。

Spring&Hibernate配置验证

当您编辑它时,它会正确验证Spring和Hibernate配置,因此我不需要重新启动服务器即可知道我拼写了错误的类名或添加了构造函数参数,因此我的Spring cfg无效。

上次尝试时,无法在Windows XP x64上运行Eclipse。

它会建议你PERSON.NAMEperson.address。按住Ctrl键单击person.name,它将导航您到Person类的getName()方法。

类型Pattern.compile("");把\\那里,按CTRL-SPACE,看什么,你可以把你的正则表达式有用的提示。您还可以在此处使用语言注入-定义自己的使用字符串参数的方法,在IntelliLang选项对话框中声明您的参数为正则表达式-它将在此自动完成。不用说,它突出显示了不正确的正则表达式。

其它功能

我不确定Eclipse中是否存在一些功能。但是,至少我们团队中使用Eclipse的每个成员还使用某种合并工具来合并本地更改与源代码控制(通常是WinMerge)中的更改。我从不需要它-对我来说,合并IDEA就足够了。通过单击3次,我可以在源代码管理中看到文件版本的列表,通过单击3次以上,我可以比较以前的版本,或者可以比较以前的版本和当前的版本,并可能合并。

它允许指定我需要WEB-INF\lib文件夹中的所有.jar,而无需分别选择每个文件,因此当有人将新.jar提交到该文件夹​​时,它将自动将其拾取。

上面提到的大概是其功能的10%。我不使用Maven,Flex,Swing,EJB和许多其他东西,因此我无法确定它如何对他们有所帮助。但是确实如此。


26
关于自动完成Java代码的两个示例在eclipse中的工作原理相同。有更多代表的人可以删除Java示例吗?
Craig P. Motlin,2009年

9
您的大多数示例都可以直接或通过第三方插件在Eclipse中使用。我不知道有人在Eclipse中使用外部工具进行svn合并。对于spring / hibernate / javascript编辑器(和自动完成),有3rd party插件。至于regex和jsp EL,您击败了我:)
Yoni

1
Jboss工具插件添加了Hibernate和JSF表达式的自动完成功能。
达莫,

4
对于eclipse调试视图,有一个选项可以显示集合的内容,而不是实现的详细信息。对于列表和集合,它将显示其内容。对于地图,它将显示键值对列表。也可以设置自定义显示。
deterb

1
Eclipse 3.7(Indigo)也可以自动完成Spring配置中的类名。
stivlo 2011年

81

我使用intellij而不是蚀的原因只有一个:可用性

无论是调试,重构,自动完成。Intellij都易于使用,因为它们具有一致的键绑定,可以在需要的位置使用的选项等。在功能方面,intellij很难赶上Eclipse,因为后者具有比intellij更多的插件,并且易于扩展。


10
它是智能的,而且该死的很快。这就增加了许多可用性功能。遍历子类或实现类,在路径中查找,查找用法等操作是如此之快。自动完成功能是内联的,只需插入一个标签即可。自动完成也是很聪明的,不仅仅是纯粹的建议,而是IDE为您考虑名称等。
拉文德拉纳特·阿基拉(Ruvindranath Akila)2012年

使用IntelliJ的原因不止一个。可用性甚至不是最重要的。IntelliJ中的功能比Eclipse多。IntelliJ总共有较少的插件,但有更多“质量”插件。因此,尽管投票赞成,但这个答案是错误的。
软件工程师

2
@EngineerDollery我不会说这是“错误的”,因为阿密特说:“世界上只有一个原因,用的IntelliJ和不偏食”,而不是“只有一个理由使用的IntelliJ和不偏食”。
Max Nanasy

54

大概不是什么可以做/不可以做,而是如何做。

例如,两者的编辑器周围都有用于项目,类路径,输出,结构等的停靠面板。在日食中,所有这些面板均保持打开状态,从而使我的编辑器区域大大缩小,约占总可见区域的1/5。因此,我必须抓住鼠标并单击以最小化这些面板中的内容。整日这样做在日食方面是非常令人沮丧的经历。

相反的事情发生在视图输出窗口中。在Idea中,运行程序会带出输出窗口/面板以查看程序的输出,即使以前已将其最小化也是如此。在eclipse中,我必须再次抓住鼠标,寻找“输出”选项卡,然后单击它以查看我的程序输出,因为输出窗口/面板与其他所有窗口一样只是另一个窗口,但是在Idea中,它在一种特殊的方式:“如果用户要运行其程序,很可能希望查看该程序的输出!” 当我编写它时,看起来很自然,但是在这个基本的用户界面概念中,eclipse失败了。

eclipse中可能有一个快捷方式(在编辑时自动隐藏输出窗口,并在运行程序时自动显示它),但是作为其他数十种功能,必须在论坛,在线帮助等地方找到快捷方式,而在Idea中则需要更多一些“自然”。

几乎所有功能都可以重复此操作,包括自动完成功能,自动换行功能,快速文档查看功能以及所有功能。我认为Idea的用户体验要比Eclipse的要愉快得多。然后,座右铭成真“快乐发展”

Eclipse处理更快的大型项目(+300个jar和+4000个类),我认为IntelliJ Idea 8正在为此工作。

所有这些当然是主观的。我们如何衡量用户体验?


18
在Eclipse中,您可以按Control-m来最小/最大编辑窗口,或双击其编辑器选项卡-这
很有帮助

哇...非常感谢 如果Eclipse有一种我知道的方式(除了阅读热键备忘单),这将非常有帮助。有没有办法改变输出窗口?
OscarRyz's

ALT-SHIFT-Q弹出“显示视图”窗口... C是用于控制台ALT-SHIFT-Q,C是转到控制台的快捷方式。
Instantsoup

7
Ctrl + Shift + L向您显示当前上下文中可用的热键列表。
Dan Berindei 09年

3
双击子窗口标题-ANY子窗口-子窗口将弹出全屏显示。再次进行还原。使用控制台将面板最小化,然后在发生输出时,控制台会立即弹出。
伊恩

44

Idea 8.0具有出色的ctrl+shift+spacex 2功能,可以执行以下自动完成功能:

 City city = customer.<ctrl-shift-space twice>

决心

 City city = customer.getAddress().getCity();

通过任意数量的吸气剂/吸气剂。


27
非常酷,尽管超过两个级别的代码味道都相当……;)
Epaga,2009年


31

我最喜欢的IntelliJ快捷方式是“转到符号”,它在Eclipse中没有等效项(我发现了)。 CTRL-ALT-SHIFT-N使您可以从整个项目中开始输入和汇总类,方法名,变量名等。


10
蚀中的ctrl-shift-G
dres 2013年

ctrl-shift-G不是Paul所描述的。.更像是“ ctrl + O”,而是项目中的所有类,方法和变量
Tano 2014年

27

由于新的Android Studio,我试图切换到IntelliJ。但是我现在非常失望。我将Eclipse与Code Recommanders插件一起使用。这是一个为什么Eclipse如此出色的简单示例:

我想创建一个新的SimpleTimeZoneSimpleTimeZone没有带有零参数的构造函数。

Ctrl + Space 在Eclipse中

在此处输入图片说明

Ctrl + Space 在IntelliJ中

在此处输入图片说明

在IntelliJ中,我不知道任何类型的构造函数SimpleTimeZone

Enter在Eclipse

在此处输入图片说明

我得到了先前选择的构造函数,其中填充了预定义的变量名。我可以看到每个参数的类型。Eclipse使用Code Recommanders通过当前作用域中先前定义的变量类型来猜测正确的构造函数,并用这些var填充该构造函数。

Enter在IntelliJ 之后,什么也没有发生。我得到一个空的构造函数。我必须按一下Ctrl + P才能看到预期的论点。

在此处输入图片说明


25

如果您将光标放在某个方法上,CTRL+SHIFT+I则将弹出该方法的实现。如果该方法是一种interface方法,则可以使用向上和向下箭头在实现之间循环:

Map<String, Integer> m = ...
m.contains|Key("Wibble");

哪里 是(例如)您的光标所在的位置。


4
实际上,在Eclipse(至少是我正在使用的版本)中,当您将光标放在方法名称上并按CTRL + T时,您将获得整个层次结构树,从最顶层的接口到叶实现,并且可以跳转给他们中的任何一个。
Yuval

2
在Eclipse中,您还可以Ctrl +单击方法名称以跳到方法定义/实现(取决于上下文)
qualidafial

8
关键是您实际上并没有导航到实现。它只是显示弹出窗口,就像javadoc等一样。–
jackrabbit

1
在Eclipse中,您只需将方法名称与Shift悬停在一起,以打开其实现的弹出窗口
Victor

24

IntelliJ具有一些相当高级的代码检查功能(与FindBugs相当,但有所不同)。

尽管我在使用IntelliJ时非常想念FindBugs插件(Eclipse / FindBugs集成非常酷)。

是IntelliJ支持的CodeInspections的正式列表

编辑:最后,有一个IntelliJ 的findbugs插件。它仍然是一个beta版,但是Code Inspections和FindBugs的组合真是太棒了!


是的,findbugs是为数不多的真正能够真正发现实用的诚实到善良错误的静态代码分析器之一。:)
Epaga

您是否有其代码检查的特定示例?它可以检测到什么样的东西?
Epaga

:有关检查的另一个链接hamletdarcy.blogspot.com/2008/04/...

8
我发现IntelliJ的代码检查可以发现更多错误,并提供有用的快速修复,可以在输入警告时提供警告并修复行。(您不必保存文件,也不必编译)这些优点使尽快修复错误变得更加实用。
彼得·劳瑞


15

我经常使用的一件事是设置一个断点,然后控制它的作用。(在我的上一份工作中,大多数其他人都使用了Eclipse ...我记得很惊讶,没人能找到如何在Eclipse中做到这一点。)

例如,可以使断点实际上不停止,而只需将消息记录到控制台即可。这意味着,我不必用“ System.out.println(...)”乱码,然后重新编译。


2
您可以在Eclipse中使用条件断点来执行此操作,但是它有点厚脸皮。真实
HaveAGuess 2011年

我认为intelliJ可以让您设置更复杂的点击计数,不是吗?
金博尔·鲁滨逊

3
现在更容易在Eclipse中查找-它现在在断点视图中显示条件(因此您知道它们可用)。您可以依靠计数,输入任意代码,例如System.out.println("here"); false打印但不中断(最后一个语句是确定是否应该中断的布尔表达式)
Scott Stanchfield

15

有许多想法可以用更简单的方法解决,或者没有等效的解决方法:

  • 自动完成动作:ctrl+shift+a您可以从键盘上调用任何想法动作,而无需记住其按键组合...考虑一下gnome-do或在Windows中启动,您就知道了!另外,此功能支持CamelCasing缩写;)

  • 架子:让您轻松地将一些代码分开,然后通过diff查看器对其进行检查。

  • 本地历史记录:管理起来更好,更简单。

  • SVN注释和历史记录:更易于检查,并且您也可以仅查看整个源文件中这一部分的历史记录。

  • 到处都有自动完成功能,例如评估表达式和断点条件窗口。

  • Maven集成...要简单得多,而且集成得很好。

  • 重构离手更近,例如循环插入,环绕/投射,重命名和添加变量。

  • 查找功能强大且组织良好的组织。即使在大型项目中

  • 可以同时与一个大型项目的多个分支一起工作非常稳定(由于分支机构以前曾为1.5Gb的bugfixer,并且需要同时使用它们,想法表明了其坚如磐石的功能)

  • 界面更简洁

  • 而且,仅使用键盘更易于使用,无需使用鼠标即可完成许多简单的操作,从而节省了时间,并让您更加专注于代码……这很重要!

现在,成为开源... Idea用户群将成倍增长。


2
自动完成操作=在Eclipse中快速访问;我看不出当地的历史比日食更容易...
Scott Stanchfield

正如Scott所指出的,它是Ctrl + 3。当评估表达式和设置条件断点时,也可以使用内容辅助。我不确定上述重构比Ctrl + 1和Ctrl + 2提出的重构有多近。其余大部分听起来很主观。
nitind

14

结构搜索和替换。

例如,搜索如下内容:

  System.out.println($string$ + $expr$);

其中$ string $是文字,$ expr $是my.package.and.Class类型的表达式,然后替换为:

  $expr$.inspect($string$);

1
其实你可以搜索类型转换/() -运营商/在你的代码,用纯文本搜索几乎是不可能的
卡尔

13

就此线程而言,我的时机可能有点差,但我只需要响应即可。

我是月食的忠实粉丝-自首次露面以来就一直使用它。那时(10年前),一个朋友告诉我它将成为一名选手。他是对的。

然而!我刚刚开始使用IntelliJ,如果您还没有看到或使用过更改列表,则可能会错过编程的天堂。

跟踪我更改的文件的能力(在我的开发分支ala clearcase上)是我在eclipse插件中所需要的。Intellij一次提交即可跟踪所有更改,非常简单。您可以使用自定义列表隔离更改的文件。我将其用于必须在本地唯一的配置文件,但是在我与存储库进行同步或比较时会不断对其进行标记-将它们列出在更改列表下,我可以对其进行监视,但可以整齐地将它们藏起来,以便专注于实际添加的内容我正在做。

另外,还有一个Commit Log插件,可以输出未与您的错误跟踪软件集成的那些SCCS的所有更改的文本。将日志粘贴到故障单的工作历史记录中可捕获文件,它们的版本,日期/时间以及分支/标签。真是太酷了。

我敢说,所有这些都可以通过eclipse中的插件(或将来的增强功能)来支持。然而,Intellij使这变得轻而易举。

最后,对于这个产品的主流热爱,我真的感到很兴奋-击键,虽然很痛苦,但是很有趣。


我真的很喜欢变更列表功能。它类似于VCS独立的补丁程序/架子集,您可以独立进行处理,并且可以与之关联,也可以与问题跟踪器关联。您具有本地历史记录(例如小型VCS),可以在几乎行级别的细节上跟踪更改,因此可以在需要时返回几乎任何时间点。此外,当您切换任务,所有IDEA记得IDE新任务的状态,并恢复打开的文件,窗口位置,等等
希尔瓦纳

变更列表实际上是SVN功能。IntelliJ仅允许您查看和管理Eclipse SVN插件所没有的地方。
尼尔·特拉夫特

12

IntelliJ调试器具有一个非常方便的功能,称为“评估表达式”,它比Eclipse吊坠要好得多。它具有完整的代码完成功能,我认为它通常“更有用”。


8
Eclipse还具有一个表达式评估器,可提供代码完成功能。转到窗口->显示视图->调试->显示在调试器中的断点处停止时,您可以在该显示视图中评估任意表达式。
laz

11

好吧,对我来说,这是一千个小事。我发现某些宏(通常是Eclipse中的GUI布局)非常糟糕。我无法在Eclipse的不同窗口中打开多个项目。我可以打开多个项目,但是当我切换文件时,基于视图的系统会在我周围交换很多东西。IntelliJ的代码检查似乎更好。它的弹出式助手可以解决常见问题,很好。许多简单的可用性事情,例如侧栏,我可以将鼠标悬停在热点上,它会告诉我方法的每个实现子类或要实现的方法以及从何处实现。

每当我不得不使用Eclipse或观看某人使用Eclipse时,似乎他们就可以完成IntelliJ中我可以做的大多数事情,但是它们花费的时间更长,而且笨拙。


9

介绍变量。(Ctrl+Alt+V在Windows上,Cmd+Alt+V在OSX上)

假设您调用一个方法service.listAllPersons() Hit Ctrl+Alt+VEnter,并插入了用于从方法调用返回值的变量:

List<Person> list = service.listAllPersons();

节省您的键入时间,而无需检查正在调用的方法的返回类型。在使用泛型时尤其有用,例如

new ArrayList<String>()

[引入变量]

ArrayList<String> stringArrayList = new ArrayList<String>();

(当然,您可以在点击之前轻松更改变量的名称Enter


13
这是Eclipse中的Ctrl + 2L。
米克,

2
很好,我不知道,我所问的任何Eclipse用户也都不知道。该功能在Eclipse中已经存在很长时间了吗?
rlovtang

3
相当长的时间...如果使用quickfix control+1(世界上最明显的键绑定,是吗?),它建议您可以在当前光标位置执行操作,类似于IDEA中的意图。例如,它列出了“本地分配”,“分配字段”和其他选项。control+2, L是它的捷径。
Scott Stanchfield

在eclipse中,一旦选择ctrl+2, L,您仍然可以将创建的变量的类型更改为右侧类型(默认情况下)或任何超类型:该变量类型可通过TAB选择。
加坦2014年

8

IntelliJ具有从代码到jspx文档的智能感知和重构支持。


您能澄清一下智能感知的意思吗?Eclipse也具有自动补全功能,但是您还有其他意思吗?
Epaga

Eclipse在jspx文件AFAIK中没有自动补全功能。在常规jsp中,是jspx,否。
krosenvold

3
他的意思是,如果您有一个引用POJO上某个属性的JSP,并重命名了该属性,则您的JSP会正确更新。IntelliJ的JSP支持启动了Eclipse / WTP!
erickson

2
在JSP EL表达式中,我无法获得Eclipse的自动完成功能。JSP或JSPX没关系,这只是毫无头绪。IntelliJ可以按您期望的方式处理tagx和jspx:就像标记或jsp文件一样。
erickson

很高兴看到日食用户对他们不喜欢的事物投了反对票。如果我的观察结果有误,请发表评论。告诉我如何在日食中做到这一点!
krosenvold

7

对我而言,这是IDEA的maven支持,尤其是在版本9中首屈一指。项目与Maven模型的即时同步非常棒,并且使开发变得愉快。


6

Intellij具有比Subversive或Subclipse更好的SVN插件,并且可以使用!我们浪费了使用Eclipse合并源文件的时间,这是不值得考虑的。这对于IntelliJ来说不是问题,因为该插件可以为您提供更多帮助。

Subclipse插件也不可靠-我们经常遇到这样的实例,即该插件认为其他开发者没有将任何代码签入SVN,但确实存在-CI服务器已对其进行处理!


确切地讲,svn支持在思想上是一流的,而subclipse / subversive则有错误,笨拙且不是很可靠。git也是如此,实际上我不记得任何关于eclipse的合理git集成,而intelliJ处理得很好
Kamil Mikolajczyk

我个人认为,即使您的IDE可以做到,您也应该在命令行上进行所有版本控制。当您在命令行上执行此操作时,您将知道如何稍后对其执行bash脚本编写,这确实可以加快开发速度。有时,我的同事向我寻求有关subclipse或git的eclipse插件的帮助,我只是告诉他们停止使用它,并在命令行上进行操作。
msknapp 2014年

4

VIM仿真器。这个插件在IDEA中编辑文件时提供了几乎完整的vi / vim / gvim仿真。支持以下功能:

  • 动作键
  • 删除/更改
  • 插入模式命令
  • 分数
  • 寄存器
  • VIM撤消/重做
  • 视觉模式命令
  • 一些防爆命令
  • 一些:set选项
  • 用于搜索和搜索/替换的完整VIM正则表达式
  • 巨集
  • 字形图
  • 命令行历史
  • 搜索历史记录
  • 跳转列表
  • VIM帮助

来自此插件的一些评论 http://plugins.jetbrains.net/plugin/?id=164

由于这个插件,我看不到任何其他想法。两全其美...太棒了!这就是我在所有IDE中都缺乏的东西。

我同意,如果没有我的IdeaVim插件,我将无法生存,但是,公平地说,有一个适用于Eclipse的Vim插件,恰当地命名为VimPlugin(vimplugin.org
Keith,2010年

3
Vwrapper是另一个Vim Eclipse插件。它的工作原理甚至比Idea Vim插件更好(重复键有效)。尽管(虽然搜索效果很好),但Vwrapper不能从命令行处理搜索和替换,也不允许以交互方式定义宏。同意Vim支持在IDE中至关重要。没有它就不会使用Eclipse或Idea!
布伦特·浮士德

1
viableplugin.com是Eclipse非常好。我也正在使用intellij之一,但我发现在某些情况下intellij有时会挂在编辑器中,并且不响应命令。
John Lemp 2012年


3

其他一些事情:

  • 更改方法签名时传播参数/异常,非常便于在调用堆栈内部更新方法
  • 作为参数传递给jdbc调用的字符串中的SQL代码验证(以及整个新捆绑的语言注入内容)
  • 在界面和类(及其方法)的图标中实现/覆盖图标以及智能实现导航(Ctrl + Alt + Click或Ctrl + Alt + B)
  • EJB 2.1接口和Bean类之间的链接(包括重构支持);旧的,但在处理较旧的项目时仍然非常宝贵

2

IntelliJ所做的两件事对我而言是Eclipse所没有的:

方法分离:方法之间的那些微弱灰线使代码得多更易读

文本抗锯齿:使代码在IDE中看起来很棒


2
我实际上发现IntelliJ的抗锯齿功能比Eclipse差得多。但是,这是IntelliJ的几个版本。有没有改善?
laz

我使用Verdana比例字体,我认为它比使用抗锯齿效果更好。
彼得·劳瑞

2

一个非常有用的功能是能够部分构建Maven反应堆项目,从而仅包括您需要的零件的能力。

为了使这一点更加清楚,请考虑以下情况:使用叠加技术在WAR文件的集合之间共享许多公共资源(例如JavaScript,Spring配置文件等)。如果您正在某个网页上运行(在Jetty中运行)并且想要更改保存在单独模块中的某些覆盖代码,则通常希望停止Jetty,运行Maven构建,再次启动Jetty,然后继续。Eclipse和我使用过的几乎所有其他IDE都是这种情况。在IntelliJ中不是这样。使用项目设置,您可以定义要将哪个模块的哪个方面包含在后台构建中。因此,您最终将看到一个无缝的过程。您对项目中的几乎所有代码进行了更改,刷新浏览器后即可立即使用。

非常整洁,非常快。

我无法想象没有它的情况下,将类似YUI的前端编码支持到DWR / SpringMVC上。


2

我的答案的序言:我对Eclipse的使用受到限制。我们需要一个Java IDE才能在Windows和Mac上运行,并且Mac端口日渐减慢。这是几年前的事,我确定现在可以。但这就是促使我们转向IntelliJ的原因,我们对此感到满意。

现在我来回答:我还没有提到的一个很大的不同是IntelliJ / Jet Brains对技术的支持更好。我们向JetBrains发送电子邮件,并在不到一个小时的时间内得到了明确的答复。寻找Eclipse问题的答案会得到通常的“您愚蠢的傻瓜”答案(通常是少数答复)以及大量的有见地,有用的答复。但是需要一些整理才能得到真正的答案。


Eclipse是开源的。没有人因回答问题或修复错误而付费。购买商业的基于Eclipse的IDE,例如MyEclipse,并获得资金支持。快速统计:我向JetBrains报告了56个错误,其中23个已关闭;报告给Eclipse 33的65个错误已关闭。唯一的区别是JetBrains修复bug的速度比Eclipse快。
维克多2014年

2

我一直在IntelliJ中使用的东西在我键入时一直在重构。我已经使用两个IDE从打印输出中重写了类(最初是用eclipse编写的),并且在IntelliJ中编写相同的类比使用eclipse少了大约40%的击键/鼠标单击次数。

在它们使用不完整的代码支持尽可能多的重构之前,我不希望使用Eclipse。

这是IntelliJ 8.0 / 8.1中较长的功能列表[ http://www.jetbrains.com/idea/features/index.html]


2

有一件事,IntelliJ的表现要比Eclipse好得多,这实在是空洞了!

但是,我确实更喜欢使用它,并且与Eclipce相比,它具有与文件系统同步的一个最大优点是,对于大型项目和速度较慢的计算机(是的,在工作环境中,PC的速度比我们在家中的PC慢得多)。尽管IntelliJ的初始索引时间较慢,但它似乎要更快一些。

IntelliJ社区版显然可以免费使用它,但是您很快就会希望CC版中未包含的那些额外的重构和漂亮的小东西。

在我看来,它通常具有更好的用户体验,但是其成本是否值得每个开发人员自行回答。

但是,值得庆幸的是,由于NetBeans一直在不断发展,我们目前拥有多达三个出色的Java IDE。


3
IntelliJ Ultimate Edition确实不是免费的,但是作为开发人员,我每天大约需要8到10个小时使用我的IDE。因此,我认为他的合理价格不是缺陷!!
罗曼·林索拉斯

2

数据流分析:过程间向后流分析和向前流动的分析,如所描述的在这里。我的经验是基于Community Edition的,它可以很好地进行数据流分析。在少数情况下,当代码非常复杂时,它会失败(拒绝执行任何操作)。


2

首先,我喜欢intellij。它至少有一百个缺少日食的功能。我说的是可靠性和智能性更高的级别,在重构,重命名,移动和其他已经提到的方面,夸张无法描述。

但是,有一件事情是intellij不允许哪个蚀发生的。它不允许在同一虚拟机下一次运行多个项目。

当您为前端,中间,核心,代理等创建单独的项目时,它们都必须彼此交互,因此无法同时快速修改和调试afaik。我目前解决这个问题的唯一方法是使用ant脚本在相关项目中部署和更新jar,或者使用maven。

Eclipse允许在一个ide vm实例下调试多个项目。


4
这应该已经发布在Eclipse可以做到IntelliJ不能做到的事情中,而不是相反。
尼尔·特拉夫特

IntelliJ完全没有问题。这个答案是完全错误的。
软件工程师
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.