どちらかに切り替えて、どちらか一方を信頼しているという人々から聞いたことがあります。
私は Eclipse の大ファンですが、IntelliJ を試す時間がなかったので、「元 Eclipsian」の IntelliJ ユーザーから、Eclipse ではできないが IntelliJ ではできる具体的なことについて聞きたいと思っています。
注: これは主観的な質問ではなく、IDE の聖戦にするつもりもありません。炎上を煽る回答には反対票を投じてください。
ベストアンサー1
Ctrlキーを押しながらクリックするとどこでも動作します
クリックしたオブジェクトが定義されている場所に移動する Ctrl キーを押しながらクリックする機能は、Java コード内の Java クラスや変数だけでなく、Spring 構成 (クラス名、プロパティ、または Bean 名をクリックできます)、Hibernate (プロパティ名、クラス、または含まれているリソースをクリックできます) でもどこでも機能します。Java クラスから Spring または Hibernate Bean として使用されている場所に 1 回のクリックで移動できます。含まれている JSP または JSTL タグをクリックしても機能します。JavaScript 変数または関数を Ctrl キーを押しながらクリックすると、それが定義されている場所に移動するか、他の .js ファイルや HTML または JSP ファイル内の JS コードなど、場所が複数ある場合はメニューが表示されます。
多くの言語のオートコンプリート
休止状態
HSQL 式、Hibernate 構成 (クラス、プロパティ、DB 列名を含む)、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()のみが表示されます(型によって互換性があるのはこの 3 つだけです) 。 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>;
}
プロジェクト内の他の JS オブジェクトに get* メソッドがいくつあっても、getName()とgetAddress()だけが表示されます。プロジェクト内に他のgetName()関数があっても、 this.getName()を Ctrl キーを押しながらクリックすると、この関数が定義されている場所に移動します。
html
<script src=""、<img src="" などのファイルへのパスのオートコンプリートと Ctrl キーを押しながらクリックについて言及しましたか?
HTML タグ属性の自動補完。HTML タグのスタイル属性の属性名と値の両方の自動補完。クラス属性の自動補完も同様です。
<div class="<CTRL-SPACE> と入力すると、プロジェクトで定義されている CSS クラスのリストが表示されます。1 つ選択して 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.nameまたはperson.addressが提案されます。person.nameを Ctrl キーを押しながらクリックすると、 PersonクラスのgetName()メソッドに移動します。
そこに put \\と入力しPattern.compile("");
、CTRL-SPACE を押すと、正規表現に何を入力できるかについての役立つヒントが表示されます。ここで言語インジェクションを使用することもできます。文字列パラメータを取る独自のメソッドを定義し、IntelliLang オプション ダイアログでパラメータが正規表現であることを宣言すると、そこでもオートコンプリートが提供されます。言うまでもなく、不正な正規表現は強調表示されます。
その他の機能
Eclipse に備わっているかどうかわからない機能がいくつかあります。しかし、少なくとも Eclipse を使用する私たちのチームの各メンバーは、ローカルの変更をソース コントロールからの変更とマージするために、通常は WinMerge などのマージ ツールも使用しています。私はこれを必要としたことがありません。IDEA でのマージで十分です。3 回のクリックでソース コントロールのファイル バージョンの一覧を表示でき、さらに 3 回のクリックで以前のバージョン、または以前のバージョンと現在のバージョンを比較して、マージすることもできます。
各ファイルを個別に選択せずに、フォルダー内のすべての .jar が必要であることを指定できるWEB-INF\lib
ため、誰かがそのフォルダーに新しい .jar をコミットすると、自動的に選択されます。
上記は、おそらく機能の 10% に過ぎません。私は Maven、Flex、Swing、EJB など、他の多くのものを使用していないので、それらにどう役立つかはわかりません。しかし、役立ちます。