IntelliJ Organize Imports

254

Czy IntelliJ ma funkcję Organizuj importowanie podobną do tej w Eclipse? Mam plik Java, w którym wiele klas nie importuje. Przykład:

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

W Eclipse mogłem użyć opcji Organizuj importy, która automatycznie importowałaby zarówno, jak java.util.Mapi javax.swing.JTable. W IntelliJ muszę indywidualnie przejść do każdej klasy, wybrać ją, a następnie nacisnąć Alt-Enter. Istnieje funkcja optymalizacji importu, ale wszystko, co wydaje się robić, to sortowanie i rozszerzanie istniejącego importu.

Używam IntelliJ 10.5.

Steve Kuo
źródło
17
Nadal nie mogę znaleźć alternatywy dla Ctrl + Shift + O w
Eclipse
16
Czy próbowałeś Ctrl + Alt + O? Automatycznie dodaje unikalny import i monituje o wybór pomiędzy podobnym importem, naciskając Alt + Enter. Do Twojej wiadomości używam IntelliJ 12.
Divesh premdeep
6
Z wyjątkiem Ctrl + Alt + O nie zwróci importu, na który nie może się zdecydować ... Na przykład, jeśli istnieje wiele importów do wyboru (które próbuję wymyślić, jak je wybrać, ponieważ nie mają symbol znaku, który sugerują na mojej klawiaturze), a następnie powie: „Nie znaleziono nieużywanego importu”.
Azurespot

Odpowiedzi:

356

Ctrl+ Alt+ O( Kod → Optymalizuj import ... ) jest tym, czego szukasz, zarówno w mapach klawiszy Windows / Linux, jak i macOS.

Mówi „Optymalizuj”, ale jeśli tak skonfigurowano, będzie również:

  • organizować istniejący import
  • usuń niepotrzebny import
  • dodaj nowy wymagany import
  • dodaj jednoznaczny import w locie

Możesz dostroić ustawienia automatycznego importu w „ Ustawienia → Edytor → Ogólne → Auto importzgodnie z opisem Dave'a .

Możesz także zmienić sposób automatycznego zamawiania importów w „ Ustawienia → Edytor → Styl kodu → Java → Import

Ryan Stewart
źródło
14
Ciągle dostaję przejściowe głosy negatywne, prawdopodobnie z powodu zamieszania. Zaktualizowałem swoją odpowiedź, aby wyjaśnić, w jaki sposób spełnia to pierwotne pytanie.
Ryan Stewart
4
Nie działa po zmianie nazw pakietów w zależności. Nawet jeśli nadal jest to jednoznaczne, muszę kliknąć klawisz ClassName, naciskając klawisze Alt + Enter i Enter, dla każdej dotkniętej klasy ...
Superole
7
Na Macu jest to również CTRL + ALT + O (przynajmniej w Android Studio 1.0)
jlapoutre
9
Uważam za głupie, że opcja „dodaj jednoznaczny import w locie” nie jest domyślnie zaznaczona. Kto woli robić to sam, klasa po klasie?
toni07
3
Powinno być Settings → Editor → General → Auto Import?
Steve Pitchers
100

Poniżej "Settings -> Editor -> General -> Auto Import"znajduje się kilka opcji dotyczących automatycznego importu. Tylko jednoznaczne importy mogą być dodawane automatycznie; jest to jedna z opcji.

Dave Newton
źródło
Za mało głosów na tę odpowiedź. Tak, odpowiedź @ ryan-stewart w pełni odpowiada na pytanie PO, ale ta odpowiedź stanowi odpowiedź na pytanie, na które OP nie zadał: jak to naprawić na zawsze, a nie tylko jak to naprawić za jednym razem.
Jonathan Landrum
7
Jest terazSetting > Editor -> General > Auto Import
Lucky
Naprawiłem dodawanie czekuclasses
Andrea Bergonzo
nie działa na poziomie pakietu / folderu / projektu, prawda? Zrobiłem „ctrl + alt + o” w projekcie, src, java i zrobiłem mvn clean test ... wciąż dostaję „symbol not found” dla ostatniego refaktora.
stary mnich
@ old-monk Działa z tym, o czym wie redaktor; bardziej prawdopodobne jest, że coś w reaktorze jest zepsute, ale niemożliwe do powiedzenia.
Dave Newton,
44

Proste i krótkie rozwiązanie działało dla mnie.

Przejdź do File-> Settings-> Editor-> Auto Import-> Java(lewy panel) i wykonaj następujące czynności: Zaznacz pole wyboru „ Add unambigious imports on the fly” i „ Optimize imports on the fly

Zobacz to.

wprowadź opis zdjęcia tutaj

Rohit Mandiwal
źródło
nie działa na poziomie pakietu / folderu / projektu, prawda? Zrobiłem „ctrl + alt + o” w projekcie, src, java i zrobiłem mvn clean test ... wciąż dostaję „symbol not found” dla ostatniego refaktora.
stary mnich
44

Oprócz Optimize Importsi Auto Import, na co wskazywali @ dave-newton i @ ryan-stewart we wcześniejszych odpowiedziach, przejdź do:

  • IDEA <= 13: File menu > Settings > Code Style > Java > Imports
  • IDEA> = 14: File menu > Settings > Editor > Code Style > Java > Imports(dzięki @ mathias-bader za podpowiedź!) Okno dialogowe ustawień

Tam możesz precyzyjnie dostroić pogrupowanie, zamówienie lub import „ Class count to use import with '*'” itp.

Uwaga:
od IDEA 13 można skonfigurować ustawienia domyślne projekt od pomysłu „strona startowa”: Configure > Project defaults > Settings > .... Następnie każdy nowy projekt będzie miał te ustawienia domyślne: wprowadź opis zdjęcia tutaj

t0r0X
źródło
7
Od IntelliJ IDEA 14 można to znaleźć podSettings > Editor > Code Style > Java > Imports
Mathias Bader
@ mathias-bader dziękuję za zwrócenie uwagi na zmianę stron „ustawień”
t0r0X
1
Wyrazy uznania dla zrzutów ekranu! Kocham to. Wizualne jest warte 1000 słów!
atom88
42

Lipiec 2015 r. - Doszedłem do wniosku, że IntelliJ nie obsługuje automatycznego rozwiązywania importów za pomocą jednej funkcji. „Organizuj import” po prostu usuwa nieużywane importy, nie rozwiązuje nieimportowanych typów. Control-Space rozwiązuje pojedynczy nieimportowany typ. Nie istnieje jedno działanie, aby rozwiązać import wszystkich typów.

Steve Kuo
źródło
11
To było moje doświadczenie. Denerwujący.
ayahuasca
1
To mnie też potknęło. Zobacz rozwiązanie @ rohit poniżej. Plik -> Ustawienia -> Edytor -> Ogólne -> Automatyczny import -> Java i sprawdź wszystkie trzy zaznaczone opcje. To zadziałało dla mnie.
Carl Rossman
1
Dziwne, że to zaakceptowana odpowiedź, ponieważ jest bardzo niedokładna. Zobacz stackoverflow.com/a/8609200/839646 .
Ryan Stewart
1
@RyanStewart nie rozwiązuje niejednoznacznych importów w taki sam sposób jak Eclipse. Eclipse wyświetli monit, gdy będzie niejednoznaczny, IntelliJ po prostu zignoruj ​​to.
Steve Kuo,
9

przejdź do pliku, w którym chcesz zorganizować import lub po prostu kliknij cały pakiet, a nawet kliknij projekt niż naciśnij CTRL + ALT + O

Khachatur Stepanyan
źródło
1
Ta odpowiedź już istnieje . Państwo mogłoby rozważyć dodanie dodatkowych informacji ( „można kliknąć na całego pakietu lub nawet kliknąć w projekcie niż Naciśnij Ctrl + Alt + O”) jako komentarz do tej odpowiedzi
Zach Lysobey
9

W IntelliJ 14 ścieżka do ustawień automatycznego importu uległa zmianie. Ścieżka jest

IntelliJ IDEA-> Preferencje-> Edytor-> Ogólne-> Auto import

następnie postępuj zgodnie z instrukcjami powyżej, klikając „Dodaj jednoznaczny import” w locie

Nie mogę sobie wyobrazić, dlaczego to nie byłoby ustawione domyślnie.

Joe
źródło
3

Skrót dla komputerów Mac: (ctrl + opt + o)

Tiago Gaspar
źródło
1
Nie, jego kontrola + opcja + o
Deividi Cavarzan
W rzeczywistości ta odpowiedź to te same klucze, które najczęściej głosowano w tym pytaniu.
Deividi Cavarzan,
2

Wystarczy przesunąć kursor myszy nad brakującym widokiem i nacisnąć klawisze w systemie Windows ALT + ENTER

Baig
źródło
2

ALT + ENTER był daleki od przyzwyczajenia zaćmienia, w IDEA dla mnie myszka nie działała, więc setting>IDESetting>Keymap>Show intention actions and quick-fixeszmieniłem ją na kliknięcie lewym przyciskiem myszy, nie obsługiwała myszy! ale kliknięcie lewym przyciskiem myszy było OK i najbliższe mojej intencji.

Ali.Mojtehedy
źródło
2

W końcu stworzyłem obejście tego frustrującego problemu. Nie jestem do końca zadowolony z obejścia, ale jest to lepsze niż nic.

Zasadniczo po wklejeniu kodu źródłowego i jednoznacznym imporcie zostały naprawione, wystarczy nacisnąć, F2aby podświetlić następny błąd kompilatora. Jeśli bieżącym błędem jest błąd braku importu, naciśnij Alt+Enter, a następnie, Enteraby wybrać Importopcję, a następnie wybierz poprawny import. Następnie naciśnij F2ponownie.

Martin Vysny
źródło
1

Ta wtyczka automatycznie wykona akcję „organizuj import” po zapisaniu pliku: https://github.com/dubreuia/intellij-plugin-save-actions .

Aby zainstalować: „Plik> Ustawienia> Wtyczki> Przeglądaj repozytoria ...> Wyszukaj„ Zapisz akcje ”> Kategoria„ Narzędzia kodu ””. Następnie aktywuj akcję „zorganizuj import”.

Alexandre DuBreuil
źródło
Ocena narzędzia na podstawie jednej (brakującej) cechy może nie być uważana za przemyślaną ocenę. Jeśli wtyczka nie działa, nie wahaj się wypełnić tam błędu: github.com/dubreuia/intellij-plugin-save-actions/issues .
Alexandre DuBreuil,
5
Masz rację, to nie jest rozsądny osąd w normalnych sytuacjach. Jest to jednak uparta frustracja z powodu niewiarygodnie brakującej podstawowej funkcji doskonałego narzędzia. Spędziłem 2 godziny w agonii, próbując sprawić, by ta prosta, niezbędna funkcja działała bez powodzenia. A co go pogorszyło, zamiast domyślnie wbudowanej funkcji (jak to elegancko robi Eclipse), aby to osiągnąć, naprawdę trzeba było napisać wtyczkę! To jak budowanie najnowocześniejszego i najbardziej złożonego jumbo jet, ale bez klimatyzacji, zamiast tego każdy pasażer otrzymuje papierowy wentylator! Zajęło mi to 1 sekundę w Eclipse.
DhafirNz
1
Właściwie użycie tej wtyczki uwidoczniło problem i słabość IntelliJ. Musiałem wyłączyć tę wtyczkę, ponieważ przejmuje ona IntelliJ przy każdym automatycznym zapisywaniu, czyniąc ją bezużyteczną i wolną. Wynika to z tego, że próbuje wykonać wszystkie operacje zapisywania za każdym razem, gdy coś wpisuję. Jeśli można automatycznie wyłączyć automatyczne zapisywanie, ta wtyczka będzie rzeczywiście bardzo przydatna.
DhafirNz
0

Jeśli brakuje tylko jednego importu (nazwa klasy ma czerwone podkreślenie), kliknij i najedź myszą na niego, a pojawi się niebieska sugerowana instrukcja importu. Jeśli naciśniesz, Alt + Enter w tym momencie, import zostanie dołączony do pliku, a czerwone podkreślenie powinno zniknąć.

Zorayr
źródło
Jestem
0

Idź do Pomocy -> Znajdź akcję (skrót to Cntl + Shift + A) i wpisz Optymalizuj import (skrót to Cntl + Alt + O)

Manga Rao
źródło