EclipseのようにIntelliJ IDEAでクラスを自動インポートする方法(またはショートカット)はありますか?


122

Eclipseでは、JavaでコーディングしながらCtrl+ Shift+ + を押すと、Oすべてのクラスが自動的にインポートされます。
NetBeansのでは、これはで行われますCtrl+ Shift+ I

IntelliJ IDEAでこれを行う方法はありますか?

同等のショートカットをgoogle、StackOverflow、IntelliJ IDEA構成、およびIntelliJの公式Webサイトで検索しました。見逃せないキーボードショートカットです。



4
コマンド/キーボードショートカットを探すときは、Ctrl-shift-A(Macの場合はCmd-shift-A)を入力して、コマンドを検索します。たとえば、ここで「imports」と入力すると、「インポートの最適化」コマンドとそのキーボードショートカットが表示されます。
JB Nizet

2
「インポートの最適化」が機能せず、クラスが追加されます
bywronski

「設定>エディター>一般>自動インポート」で有効にすると、クラスの自動インポートが機能します。
Andrea Bergonzo、2017年

これは本当にintellijの最大の欠点です。それは苦痛です。インポート時に競合やマージを取得するのは愚かですが、intellijはそれを簡単に解決できません
bharal

回答:


103

IntelliJ IDEAには、インポートを追加するアクションがありません。むしろそれはあなたがタイプするようなことをする能力を持っています。[設定]> [エディタ]> [一般]> [自動インポート][あいまいでないインポートを即座に追加]を有効にすると、ショートカットを必要とせずに、入力時にIntelliJ IDEAがそれらを追加します。自動インポートから除外するクラスとパッケージを追加して、使用頻度の高いクラスを、同じ名前の他のクラスと衝突しないようにすることもできます。

あいまいなクラスの場合(または「あいまいでないインポートをその場で追加する」オプションをオフにしたい場合)、クラスの名前を入力するだけです(名前だけで十分です。完全に修飾する必要はありません)。コード補完を使用して、必要な特定のクラスを選択します。

ここに画像の説明を入力してください

右側の完全修飾名に注意してください。必要なものを選択してEnterキーを押すと、IDEAは自動的にインポート文を追加します。これは、コンストラクタの名前を入力した場合も同じように機能します。静的メソッドの場合は、必要なメソッドを入力し続けることもできます。次のスクリーンショットでは、「StringUtils」クラスはまだインポートされていません。

ここに画像の説明を入力してください

または、クラス名を入力してからAlt+Enterまたは+ Enterを押して「インテンションアクションとクイックフィックスを表示」し、インポートオプションを選択します。

私はそれを使ったことがないが、私は考えてEclipseコードフォーマッタ、サードパーティのプラグインは、あなたがやりたいだろう。機能として「Eclipseのインポートの最適化をエミュレートする」がリストされています。詳細については、その手順を参照してください。しかし、結局のところ、IDEAの機能がパラダイムに慣れると、IDEAの組み込み機能が正常に機能するようになると思います。一般に、IDEAは「意図による開発」の概念を使用しています。したがって、開発作業を中断してインポートステートメントを追加するのではなく、必要なクラスを入力するだけで(意図)、IDEAは自動的にクラスのインポートステートメントを追加します。


7
古いファイルを編集しているときは、この方法の方がはるかに多くの作業になります。
Adam

これではうまくいきません。オートコンプリートリストに表示されるクラスを選択してEnterキーを押すと、IntelliJはそれをインポートしません。代わりに、クラスの完全修飾名を書き込みます。これは非常に迷惑で役に立たない。これを修正する方法を知っていますか?
ロドリゴ

^この動作の理由は、インポートしようとしたクラスがビルドパスになかったためです。追加したら、Enterキーを押すとクラスが正しくインポートされました。
ロドリゴ

3
IntelliJのそのような主要なショートカットを見つけることを期待してこの質問に来ました。問題は、クラスを持つコードの大きなセクションにコメントを付けると、IntelliJが名前空間のインポートを自動的に削除することです。コードをコメント解除すると、IntelliJは名前空間を同じように再インポートしないため、それぞれに対してAlt + Enterを実行するのは非常に面倒になります。解決策はありますか?
Rahul Saini 2017

これについて@RahulSainiに同意します。1つのアクティビティに対して2つの別々のキーマップを用意する必要はありません。単一のアクションを実行するために複数のことをしたくないし、すべきではありません。現時点では、intellijはそれについて好戦的であり、インポートを「最適化」するのではなく、インポートを「整理」しない本当の理由はないと思います。技術的には正しいのですが、この回答には反対票を投じたいと思います。
peekay

73

一度にすべてではありません。しかし、あなたは押すことができます

Alt + Enter

人々はそれがあなたが特定のアイテムにいるときだけ機能すると思います。しかし、実際には「次の欠落している型」に対して機能します。Alt+ を押し続けるとEnter、すべてが修正されるまでIDEAは次々と修正します。


1
キーボードのキー記号を参照していると思います。これらはkbdタグを使用して追加できます<kbd>Alt</kbd> + <kbd>Enter</kbd>
GuiSim

1
見つからないクラスに移動し、⌥+ Enterキーを押します。下にスクロールしてくれてうれしい。
Ajak6 2016年

1
Alt+Enterより指に優しい組み合わせに再マッピングする方法はありますか?IntelliJ IDEA > Preferences > Keymapメニューではわかりませんでした。
laylaylom 2017年

1
私は、Eclipseの方法でIDEAよりもインポート文を追加する方法が不足していることに気付きました。Alt + Enterを入力する前にマウスカーソルをどこに置くか、いつも混乱します
vikramvi

Alt + EnterとF2(次の強調表示されたエラー)の組み合わせは、(大きすぎる)クラスの場合でも、通常非常に高速です。
osundblad

10

IntelliJ IDEAが自動的に欠落したクラスをインポートするようであり、手動でAlt+をEnter押すことでそれらをインポートできます。


8

Eclipse / Netbeansとまったく同じではありませんが、「インポートの最適化」設定を変更することが最善の解決策だと思います。

Preferences > Editor > General > Auto Import

セットする Add unambiguous imports on the fly

編集:この方法を使用すると、あいまいなインポートある場合、IntelliJ から通知され、Wuaner回答で概説されているAlt+ Enterメソッドを使用できます

ほとんどの場合、最も適切なインポートはリストの一番上にあります。


1
@Raja理由もよくわかりません。私が同僚にこの方法を使用しないことを選択したことを伝えたとき...不思議なことは知っています。
2018年

手順はかなり明確です。unambiguousクラスを自動インポートするだけです。そして、過去2日間、3000以上のクラスプロジェクトで使用しています。魅力のように機能します。共有いただきありがとうございます。
Raja Anbazhagan

5

一度にすべてインポートすることはできませんが、次の組み合わせを使用できます。

ALT+ Enter->インテンションアクションとクイックフィックスを表示します。

F2 ->次にハイライトされたエラー。


3

別のオプションは、IDEAにEclipseショートカットキーを使用してEclipseのように動作するように要求することです。これを有効にすると、すべてのEclipseショートカットを使用できます

手順は次のとおりです。

1- IDEAを開いた状態で、Ctrl + `を押します。以下のオプションがポップアップ表示されます。

ここに画像の説明を入力してください

2- [キーマップ]を選択します。別のポップアップが表示されます。そこでEclipseを選択します。

ここに画像の説明を入力してください

3- 次にを押しCtrl + Shift + Oます。完了です!


私は試した。「インポートの整理」がEclipseのように動作することはありません。
Florian F

0

control+ option+ Lを使用してパッケージを自動インポートし、Macで未使用のパッケージを自動的に削除します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.