1. ホーム
  2. java

[解決済み] IntelliJで可能なことで、Eclipseでは不可能なこと?

2022-03-15 20:13:58

質問

どちらかに乗り換えた人からは、どちらかに誓うという話を聞いたことがあります。

Eclipseの大ファンでありながら、IntelliJを試す時間がなかったため、元Eclips派のIntelliJユーザーから、Eclipseではできないこと、IntelliJでできることを具体的に聞いてみたいです。

備考 : これは主観的な質問でもなければ、IDEの聖戦に発展するようなものでもありません。 炎上しそうな回答はdownvoteでお願いします .

解決方法は?

CTRLクリックがどこでも使える

クリックしたオブジェクトが定義されている場所に移動するCTRLクリックは、あらゆる場所で機能します。Javaコード内のJavaクラスや変数だけでなく、Spring構成(クラス名、プロパティ、Bean名をクリックできます)、Hibernate(プロパティ名、クラス、インクルード・リソースをクリックできます)では、JavaクラスからSpringまたはHibernate Beanとして使用されている場所に1クリックで移動することができます。含まれるJSPやJSTLタグをクリックすることもできます。JavaScriptの変数や関数をCtrlキーを押しながらクリックすると、その変数が定義されている場所に移動するか、複数の場所がある場合はメニューが表示され、他の.NET Frameworkも表示されます。 また、他の.jsファイルやHTMLファイル、JSPファイル内のJSコードなど、複数の場所に定義されている場合はメニューが表示されます。

多言語のオートコンプリート

ハイバーネート

HSQL式でのオートコンプリート、Hibernateの設定(クラス、プロパティ、DBカラム名を含む)、Springの設定

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

と入力すると、そのプロパティに注入できるビーンのリストが表示されます。

Java

Javaコードでの非常にスマートなオートコンプリートです。

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

と表示され、ONLY getName() , 取得アドレス() そして 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>;
}

と表示され、ONLY getName() 取得アドレス() をクリックすると、プロジェクト内の他の JS オブジェクトにどれだけ多くの get* メソッドがあっても、ctrl キーを押しながら this.getName() があったとしても、このメソッドが定義されている場所に移動します。 getName() 関数を使用します。

HTML

オートコンプリートやCtrlキーを押しながらファイルへのパス、例えば <script src="" や <img src="" などに言及しましたか?

HTMLタグの属性でオートコンプリートが可能です。HTMLタグのstyle属性(属性名、値とも)をオートコンプリートする。class属性もオートコンプリートします。
div class="<CTRL-SPACE> と入力すると、プロジェクトで定義されている CSS クラスの一覧が表示されます。その中から一つを選び、Ctrlキーを押しながらクリックすると、そのクラスが定義されている場所にリダイレクトされます。

簡単な自国語ハイライティング

最新バージョンでは、言語インジェクションが搭載され、カスタムJSTLタグが通常JavaScriptを含むことを宣言すると、その中のJavaScriptがハイライトされるようになりました。

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

全プロジェクトを横断するインデックス検索。

Javaクラスやメソッドの用途を検索することで、Javaクラスだけでなく、Hibernate、Spring、JSPなど、どこで使用されているかを検索することができます。Rename Method リファクタリングは、Javaクラスだけでなく、コメントを含むあらゆる場所のメソッド名を変更します(コメント内の文字列が本当にメソッド名かどうかは確認できないため、問い合わせが行われます)。また、他のクラスに同じ名前のメソッドがあったとしても、あなたのメソッドだけを見つけることができます。 ソース管理との統合が容易です。(SVNはチェンジリストをサポートしていますか?IDEAは全てのソース管理でサポートしています。) 変更点をパッチとして作成できるので、コミットせずに他のチームのメンバーに変更点を送ることができます。

デバッガの改善

を見ると ハッシュマップ デバッガのウォッチウィンドウでは、キーと値という論理的なビューが表示されますが、前回Eclipseで実行したときは、ハッシュと次のフィールドを持つエントリが表示されました。 ハッシュマップ ただ、中身を見たいだけなんです。

Spring & Hibernateの設定検証

SpringやHibernateの設定を編集する際に、すぐに検証してくれるので、サーバーを再起動しなくても、クラス名のスペルを間違えたり、コンストラクタのパラメータを追加したりして、Springの設定が無効であることを知ることができます。

前回試したときは、Windows XP x64でEclipseを動かすことができませんでした。

と表示されます。 人物名 または 人物.住所 . をCtrlキーを押しながらクリックします。 人名 に移動します。 getName() メソッドの 個人 クラスがあります。

タイプ Pattern.compile(""); を入れ、CTRL-SPACEを押すと、正規表現に何を入れることができるかのヒントが表示されます。文字列をパラメータに取る独自のメソッドを定義して、IntelliLangのオプションダイアログでパラメータが正規表現であることを宣言すれば、そこでもオートコンプリートが使えるようになります。もちろん、不正な正規表現がハイライトされるのは言うまでもありません。

その他の機能

Eclipseにあるのかないのかよくわからない機能がいくつかあります。しかし、少なくともEclipseを使っているチームの各メンバーは、ローカルの変更をソース・コントロールからの変更とマージするために何らかのマージ・ツール、通常はWinMergeも使っているはずです。私はIDEAでマージすることで十分なので、必要ありません。3回クリックすれば、ソースコントロールのファイルバージョンのリストを見ることができ、さらに3回クリックすれば、前のバージョン、または前と現在のものを比較し、場合によってはマージすることができます。

の中にあるすべての.jarが必要であることを指定することができます。 WEB-INF\lib そのため、誰かがそのフォルダに新しい .jar をコミットすると、自動的にそれを取り込みます。

上記は、おそらく10%程度の機能です。私はMaven、Flex、Swing、EJB、その他多くのものを使っていないので、それらがどのように役立つかはわかりません。しかし、それは可能です。