IntelliJ 中可能的事情在 Eclipse 中是不可能的?
我听说过那些已经改变了任何一种方式的人,他们发誓要这样做。
作为一个强大的Eclipse粉丝,但没有时间尝试IntelliJ,我有兴趣听到IntelliJ用户的意见,他们是“前Eclipsians”,你可以用IntelliJ做一些具体的事情,你不能用Eclipse做。
注意:这不是一个主观问题,也根本不意味着变成IDE圣战。请对任何火焰诱饵答案投下反对票。
我听说过那些已经改变了任何一种方式的人,他们发誓要这样做。
作为一个强大的Eclipse粉丝,但没有时间尝试IntelliJ,我有兴趣听到IntelliJ用户的意见,他们是“前Eclipsians”,你可以用IntelliJ做一些具体的事情,你不能用Eclipse做。
注意:这不是一个主观问题,也根本不意味着变成IDE圣战。请对任何火焰诱饵答案投下反对票。
CTRL单击将您带到定义单击对象的位置,不仅在Java代码中的Java类和变量中,而且在Spring配置中(您可以单击类名,属性或bean名称),在Hibernate中(您可以单击属性名称或类,或包含的资源),您只需单击一下即可从Java类导航到它用作Spring或Hibernate bean的位置;单击包含的JSP或JSTL标签也可以,按住Ctrl键单击JavaScript变量或函数会将您带到定义它的位置,或者如果有多个位置(包括HTML或JSP文件中的其他.js文件和JS代码)将显示菜单。
在 HSQL 表达式、休眠配置(包括类、属性和数据库列名称)中自动完成,在 Spring 配置中自动完成
<property name="propName" ref="<hit CTRL-SPACE>"
它将显示您可以注入该属性的那些豆子的列表。
在 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();
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-click this.getName() 会把你带到定义这个函数的地方,即使你的项目中还有其他一些 getName() 函数。
我是否在文件路径中提到了自动完成和按住ctrl-click键,例如<script src=“”,<img src=“”等?
在 HTML 标记属性中自动完成。自动完成 HTML 标记的样式属性,包括属性名称和值。在类属性中也自动完成。
键入 <div class=“<CTRL-SPACE>它将显示项目中定义的 CSS 类的列表。选择一个,按住Ctrl键单击它,您将被重定向到定义它的位置。
最新版本具有语言注入功能,因此您可以声明自定义的JSTL标签通常包含JavaScript,并且它将突出显示其中的JavaScript。
<ui:obfuscateJavaScript>function something(){...}</ui:obfuscateJavaScript>
您可以使用任何Java类或方法的Find Usages,它会找到使用它的位置,不仅包括Java类,还包括Hibernate,Spring,JSP和其他地方。重命名方法重构不仅在Java类中重命名方法,而且在包括注释在内的任何地方重命名方法(它不能确定注释中的字符串是否真的是方法名称,因此它会询问)。即使存在另一个同名类的方法,它也只会找到您的方法。良好的源代码管理集成(SVN 是否支持更改列表?IDEA支持它们的每个源代码管理),能够使用您的更改创建补丁,以便您可以将更改发送给其他团队成员而无需提交它们。
当我在调试器的监视窗口中查看HashMap时,我看到逻辑视图 - 键和值,上次我在Eclipse中执行此操作时,它显示了带有哈希和下一个字段的条目 - 我并没有真正调试HashMap,我只想查看它的内容。
当你编辑它时,它会立即验证Spring和Hibernate配置,所以我不需要重新启动服务器就知道我拼错了类名,或者添加了构造函数参数,所以我的Spring cfg是无效的。
上次我尝试时,我无法在Windows XP x64上运行Eclipse。
它会建议您 person.name 或人员地址。按住 Ctrl 键并单击 person.name 它将导航到 Person 类的 getName() 方法。
在此处键入 put \\,按 CTRL-空格键,并查看有关可以放入正则表达式中的有用提示。您也可以在此处使用语言注入 - 定义您自己的方法,该方法采用字符串参数,在IntelliLang选项对话框中声明您的参数是正则表达式 - 它还将为您提供自动完成。不用说,它突出显示了不正确的正则表达式。Pattern.compile("");
我不确定Eclipse中是否存在一些功能。但至少我们团队中每个使用 Eclipse 的成员,也使用一些合并工具将本地更改与源代码管理中的更改(通常是 WinMerge)合并。我从来不需要它 - 在IDEA中合并对我来说就足够了。通过3次单击,我可以看到源代码管理中的文件版本列表,通过3次单击,我可以比较以前的版本,或者以前和当前的版本,并可能合并。
它允许指定我需要文件夹中的所有.jars,而无需单独选择每个文件,因此当有人将新.jar提交到该文件夹中时,它会自动拾取它。WEB-INF\lib
上面提到的可能是它所做的10%。我不使用Maven,Flex,Swing,EJB和许多其他东西,所以我无法说出它如何帮助它们。但事实确实如此。
我使用intellij而不是eclipse的原因只有一个:可用性
无论是调试、重构、自动完成。Intellij更易于使用,具有一致的键绑定,可在查找它们的地方使用的选项等。在功能方面,intellij很难赶上Eclipse,因为后者有更多的插件可供intellij使用,并且易于扩展。