IntelliJ Organize Imports

254

IntelliJ a-t-il une fonctionnalité Organiser les importations similaire à celle d'Eclipse? Ce que j'ai, c'est un fichier Java avec plusieurs classes sans leurs importations. Exemple:

package com.test;
public class Foo {
    public Map map;
    public JTable table;
}

Dans Eclipse, je pouvais utiliser Organize Imports et il importait automatiquement les deux java.util.Mapet javax.swing.JTable. Dans IntelliJ, je dois aller individuellement à chaque classe, la sélectionner, puis appuyer sur Alt-Entrée. Il existe une fonction Optimiser les importations, mais tout ce qu'elle semble faire est de trier et d'étendre les importations existantes .

J'utilise IntelliJ 10.5.

Steve Kuo
la source
17
Je ne trouve toujours pas d'alternative à Ctrl + Shift + O d'
Eclipse
16
Avez-vous essayé Ctrl + Alt + O? Il ajoute automatiquement toutes les importations uniques et vous invite à choisir entre des importations similaires en appuyant sur Alt + Entrée. Pour info, j'utilise IntelliJ 12.
divesh premdeep
6
Sauf que Ctrl + Alt + O ne retournera pas une importation sur laquelle il ne peut pas décider ... Par exemple, s'il y a plusieurs importations à choisir (que j'essaie de comprendre comment les choisir, car je ne le fais pas avoir le symbole de caractère qu'ils suggèrent sur mon clavier), il indiquera alors "Importation inutilisée introuvable".
Azurespot du

Réponses:

356

Ctrl+ Alt+ O( Code → Optimiser les importations ... ) est ce que vous recherchez, à la fois sur les keymaps Windows / Linux et macOS.

Il indique "Optimiser", mais, s'il est configuré pour le faire, il:

  • organiser les importations existantes
  • supprimer les importations inutiles
  • ajouter de nouvelles importations requises
  • ajouter des importations sans ambiguïté à la volée

Vous pouvez régler les paramètres d' importation automatique sous " Paramètres → Éditeur → Général → Importation automatique " comme décrit par Dave .

Vous pouvez également modifier la façon dont les importations sont ordonnées automatiquement sous " Paramètres → Éditeur → Style de code → Java → Importations "

Ryan Stewart
la source
14
Je continue à recevoir des downvotes transitoires, probablement à cause de la confusion. J'ai mis à jour ma réponse pour expliquer comment cela répond à la question d'origine.
Ryan Stewart
4
Cela ne fonctionne pas lorsque les noms de package dans une dépendance ont changé. Même quand il est encore sans ambiguïté, je dois cliquer sur le nom de classe, appuyez sur Alt + Entrée et Entrée, pour chaque classe affectée ...
Superole
7
Sur Mac, c'est également CTRL + ALT + O (au moins dans Android Studio 1.0)
jlapoutre
9
Je trouve assez stupide que l'option "ajouter des importations sans ambiguïté à la volée" ne soit pas cochée par défaut. Qui préfère faire ça tout seul, classe par classe?
toni07
3
Devrait l'être Settings → Editor → General → Auto Import?
Steve Pitchers
100

Sous "Settings -> Editor -> General -> Auto Import"il y a plusieurs options concernant les importations automatiques. Seules les importations sans ambiguïté peuvent être ajoutées automatiquement; c'est l'une des options.

Dave Newton
la source
Pas assez de votes positifs pour cette réponse. Oui, la réponse de @ ryan-stewart répond entièrement à la question du PO, mais cette réponse fournit la solution à la question que le PO n'a pas posée: comment puis-je résoudre ce problème pour toujours, pas seulement comment le réparer cette fois-ci.
Jonathan Landrum
7
C'est maintenantSetting > Editor -> General > Auto Import
Lucky
J'ai corrigé cela en ajoutant le chèqueclasses
Andrea Bergonzo
cela ne fonctionne pas au niveau du package / dossier / projet, n'est-ce pas? J'ai fait un 'ctrl + alt + o' sur project, src, java et j'ai fait un test de nettoyage mvn ... j'ai toujours 'symbole introuvable' pour le refactor récent.
vieux-moine
@ old-monk Cela fonctionne avec ce que l'éditeur sait; il est plus probable que quelque chose dans le refactor est cassé, mais impossible à dire.
Dave Newton
44

Une solution simple et courte a fonctionné pour moi.

Allez à File-> Settings-> Editor-> Auto Import-> Java(panneau de gauche) et faites les choses ci-dessous: Cochez la case pour " Add unambigious imports on the fly" et " Optimize imports on the fly"

Référez ceci.

entrez la description de l'image ici

Rohit Mandiwal
la source
cela ne fonctionne pas au niveau du package / dossier / projet, n'est-ce pas? J'ai fait un 'ctrl + alt + o' sur project, src, java et j'ai fait un test de nettoyage mvn ... j'ai toujours 'symbole introuvable' pour le refactor récent.
vieux-moine
44

En plus de Optimize Importset Auto Import, qui ont été soulignés par @ dave-newton et @ ryan-stewart dans les réponses précédentes, allez à:

  • IDÉE <= 13: File menu > Settings > Code Style > Java > Imports
  • IDÉE> = 14: File menu > Settings > Editor > Code Style > Java > Imports(merci à @ mathias-bader pour l'astuce!) Boîte de dialogue des paramètres

Vous pouvez y affiner le regroupement et l'ordre ou les importations, " Class count to use import with '*'", etc.

Remarque:
depuis IDEA 13 , vous pouvez configurer les paramètres par défaut du projet de l'IDEA « start page »: Configure > Project defaults > Settings > .... Ensuite, chaque nouveau projet aura ces paramètres par défaut: entrez la description de l'image ici

t0r0X
la source
7
Depuis IntelliJ IDEA 14, cela peut être trouvé sousSettings > Editor > Code Style > Java > Imports
Mathias Bader
@ mathias-bader merci d'avoir signalé le changement des pages "settings"
t0r0X
1
Bravo pour les captures d'écran! Aimer. Un visuel vaut 1000 mots!
atom88
42

Juillet 2015 - J'ai conclu qu'IntelliJ ne prend pas en charge la résolution automatique des importations avec une seule fonction. "Organiser les importations" supprime simplement les importations inutilisées, il ne résout pas les types non importés. Control-Space résout un seul type non importé. Il n'existe pas une seule action pour résoudre les importations de tous les types.

Steve Kuo
la source
11
Ceci a été mon expérience. Frustrant.
ayahuasca du
1
Cela m'a aussi fait trébucher. Voir la solution de @ rohit ci-dessous. Fichier -> Paramètres -> Éditeur -> Général -> Importation automatique -> Java et vérifiez les trois options qu'il a mises en évidence. Cela a fonctionné pour moi.
Carl Rossman
1
Bizarre que ce soit la réponse acceptée, car elle est très inexacte. Voir stackoverflow.com/a/8609200/839646 .
Ryan Stewart
1
@RyanStewart ne résout pas les importations ambiguës de la même manière qu'Eclipse. Eclipse vous demandera quand il est ambigu, IntelliJ l'ignore simplement.
Steve Kuo
9

accédez au fichier où vous souhaitez organiser les importations ou cliquez simplement sur l'ensemble du package ou même cliquez sur le projet que appuyez sur CTRL + ALT + O

Khachatur Stepanyan
la source
1
Cette réponse existe déjà . Vous pourriez envisager d'ajouter les informations supplémentaires ("vous pouvez cliquer sur l'ensemble du package ou même cliquer sur le projet que d'appuyer sur CTRL + ALT + O") comme commentaire à cette réponse
Zach Lysobey
9

Dans IntelliJ 14, le chemin d'accès aux paramètres d'importation automatique a changé. Le chemin est

IntelliJ IDEA-> Préférences-> Éditeur-> Général-> Importation automatique

puis suivez les instructions ci-dessus, en cliquant sur Ajouter des importations sans ambiguïté à la volée

Je ne peux pas imaginer pourquoi cela ne serait pas défini par défaut.

Joe
la source
3

Raccourci pour le Mac: (ctrl + opt + o)

Tiago Gaspar
la source
1
Non, son contrôle + option + o
Deividi Cavarzan
En fait, cette réponse est la même que celle la plus votée dans cette question.
Deividi Cavarzan
2

Déplacez simplement votre souris sur la vue manquante et appuyez sur les touches des fenêtres ALT + ENTER

Baig
la source
2

ALT + ENTER était loin de l'habitude de l'éclipse, dans IDEA pour moi, le survol de la souris ne fonctionnait pas, donc setting>IDESetting>Keymap>Show intention actions and quick-fixesje l'ai changé en clic gauche de la souris, il ne supportait pas le survol de la souris! mais le clic gauche de la souris était OK et le plus proche de mon intention.

Ali.Mojtehedy
la source
2

J'ai finalement créé une solution de contournement autour de ce problème frustrant. Je ne suis pas complètement satisfait de la solution de contournement, mais c'est mieux que rien.

Fondamentalement, après avoir collé le code source et que les importations sans ambiguïté soient corrigées, appuyez simplement sur F2pour mettre en surbrillance la prochaine erreur du compilateur. Si l'erreur actuelle est une erreur manquante à l'importation, appuyez sur Alt+Enter, puis sur Enterpour sélectionner l' Importoption, puis choisissez l'importation correcte. Ensuite, appuyez à F2nouveau.

Martin Vysny
la source
1

Ce plugin effectuera automatiquement l'action "organiser l'importation" lors de l'enregistrement du fichier: https://github.com/dubreuia/intellij-plugin-save-actions .

Pour installer: "Fichier> Paramètres> Plugins> Parcourir les référentiels ...> Rechercher 'Enregistrer les actions'> Catégorie 'Outils de code'". Activez ensuite l'action de sauvegarde "organiser l'importation".

Alexandre DuBreuil
la source
Juger un outil sur une caractéristique (manquante) peut ne pas être considéré comme un jugement réfléchi. Si le plugin ne fonctionne pas, n'hésitez pas à y combler un bug: github.com/dubreuia/intellij-plugin-save-actions/issues .
Alexandre DuBreuil
5
Vous avez raison, ce n'est pas un jugement réfléchi dans des situations normales. C'est - cependant - une frustration exhalée sur une fonctionnalité de base incroyablement manquante d'un outil ultime. J'ai passé 2 heures à l'agonie à essayer de faire fonctionner cette fonctionnalité simple et essentielle, sans succès. Et ce qui a empiré, plutôt que d'être une fonctionnalité intégrée par défaut (comme l'élégance d'Eclipse), un plugin devait vraiment être écrit pour y parvenir! C'est comme construire un jet jumbo à la pointe de la technologie et le plus complexe mais sans climatisation, à la place, chaque passager reçoit un ventilateur en papier! Cela m'a pris 1 seconde dans Eclipse.
DhafirNz
1
En fait, l'utilisation de ce plug-in a mis en évidence un problème et une faiblesse dans IntelliJ. J'ai dû désactiver ce plug-in car il détourne IntelliJ à chaque enregistrement automatique, le rendant inutilisable et lent. C'est parce qu'il essaie de faire toutes les actions de sauvegarde chaque fois que je tape quelque chose. Si l'enregistrement automatique peut être désactivé d'une manière ou d'une autre, ce plug-in sera en effet très utile.
DhafirNz
0

S'il vous manque une seule importation (le nom de la classe est souligné en rouge), cliquez dessus et passez la souris dessus, et une instruction d'importation suggérée bleue apparaîtra. Si vous appuyez sur Alt + Entrée à ce stade, l'importation sera incluse dans le fichier et le soulignement rouge devrait disparaître.

Zorayr
la source
Je suis sûr que c'est une fonctionnalité multiplateforme
Zach Lysobey
0

Allez à l'aide -> Rechercher une action (raccourci pour cela est Cntl + Maj + A) et tapez Optimiser les importations (raccourci pour cela est Cntl + Alt + O)

Manga Rao
la source