Rzeczy możliwe w IntelliJ, które nie są możliwe w Eclipse?

365

Słyszałem od ludzi, którzy zmienili się w jedną stronę i którzy przysięgają na jedno lub drugie.

Będąc wielkim fanem Eclipse, ale nie mając czasu na wypróbowanie IntelliJ, jestem zainteresowany usłyszeniem od użytkowników IntelliJ, którzy są „byłymi Eclipsianami”, pewnych konkretnych rzeczy, które możesz zrobić z IntelliJ, których nie możesz zrobić z Eclipse.

Uwaga : To nie jest pytanie subiektywne ani w ogóle nie ma na celu przekształcenia się w świętą wojnę IDE. Prosimy zanegować wszelkie odpowiedzi dotyczące przynęty ogniowej .

Epaga
źródło
1
Przeszedłem z Eclipse do Netbeans na IntelliJ rubyMine i każdy z nich był „krokiem naprzód” w stosunku do poprzedniego. Nie widziałem, co konkretnie (stąd nie jest to odpowiedź), ponieważ minęło trochę czasu, ale największym skokiem było RubyMine, który był bardziej „zintegrowany” i wydawał się mieć większą funkcjonalność i przedstawiał rzeczy w łatwiejszy sposób używać sposobu. Wydawało się również, że radzi sobie z problemami z klejnotami, zależnościami i tym podobnymi lepiej niż inne.
śmieciowy
Chcę przejść z IntelliJ do Eclipse (z powodu rozwoju Androida), dlatego tego typu pytania i odpowiedzi są bardzo przydatne.
chrom
8
@chrome Android zmienia teraz inny sposób: developer.android.com/sdk/installing/studio.html
Daniel Alexiuc
1
Mam tyle postów, ile potrafię, a wszystkie odpowiedzi wskazują na rzeczy, które można faktycznie zrobić zaćmienie, czasem łatwiej IMHO. Chcę poczuć się, jakbym dostał wartość $ z intellij, ale jedynym powodem, dla którego go kupiłem, była autouzupełnianie Javascript. Mógłbym właśnie kupić webstorm za tańsze, jeśli to wszystko, co dostaję. Prawdopodobnie istnieje wtyczka Eclipse, która robi to samo. Szczerze mówiąc, myślę, że zaćmienie jest bardziej spójne i brakuje mi funkcji Perspektywy.
dres

Odpowiedzi:

185

Klawisz CTRL działa wszędzie

CTRL-kliknięcie, które prowadzi do miejsca, w którym zdefiniowano kliknięty obiekt, działa wszędzie - nie tylko w klasach Java i zmiennych w kodzie Java, ale w konfiguracji Spring (możesz kliknąć nazwę klasy, właściwości lub nazwy fasoli), w Hibernacji (możesz może kliknąć nazwę właściwości lub klasę lub dołączony zasób), możesz przejść jednym kliknięciem z klasy Java do miejsca, w którym jest ona używana jako fasola wiosenna lub hibernacyjna; kliknięcie dołączonego znacznika JSP lub JSTL również działa, kliknięcie z wciśniętym klawiszem Ctrl na zmienną lub funkcję JavaScript prowadzi do miejsca, w którym jest zdefiniowane lub wyświetla menu, jeśli jest więcej niż jedno miejsce, w tym inne pliki .js i kod JS w HTML lub JSP akta.

Autouzupełnianie dla wielu języków

Hibernować

Autouzupełnianie w wyrażeniach HSQL, w konfiguracji Hibernacji (w tym nazw klas, właściwości i kolumn DB), w konfiguracji Spring

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

i wyświetli listę ziaren, które możesz wstrzyknąć do tej właściwości.

Jawa

Bardzo inteligentne autouzupełnianie w kodzie Java:

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

i pokazuje TYLKO getName () , getAddress () i toString () (tylko te są kompatybilne według typu), a getName () jest pierwszy na liście, ponieważ ma bardziej odpowiednią nazwę. Najnowsza wersja 8, która jest jeszcze w EAP, ma jeszcze więcej inteligentnego autouzupełniania.

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>

i po cichu automatycznie je uzupełni

Country c = p.getAddress().getCountry();

JavaScript

Inteligentne autouzupełnianie w 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>;
}

i to tylko pokazuje getName () i getAddress () , bez względu na to w jaki sposób może uzyskać * Metody masz w JS innych obiektów w projekcie, a Ctrl-kliknięcie this.getName () przenosi Cię do miejsca, gdzie ten jest określony, nawet jeśli W twoim projekcie jest kilka innych funkcji getName () .

HTML

Czy wspomniałem o autouzupełnianiu i klikaniu w Ctrl ścieżek do plików, takich jak <script src = "", <img src = "" itp.?

Autouzupełnianie w atrybutach znaczników HTML. Autouzupełnianie w atrybucie stylu znaczników HTML, zarówno nazw atrybutów, jak i wartości. Autouzupełnianie również w atrybutach klasy.
Wpisz <div class = "<CTRL-SPACE>, a wyświetli się lista klas CSS zdefiniowanych w twoim projekcie. Wybierz jedną, kliknij ją, przytrzymując klawisz Ctrl, a zostaniesz przekierowany do miejsca, w którym jest zdefiniowany.

Łatwe wyróżnianie własnego języka

Najnowsza wersja ma wstrzykiwanie języka, więc możesz zadeklarować, że niestandardowy tag JSTL zwykle zawiera JavaScript i podświetli w nim JavaScript.

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

Indeksowane wyszukiwanie we wszystkich projektach.

Możesz użyć funkcji Znajdź użycie dowolnej klasy lub metody Java, a znajdzie ona miejsce, w którym jest używana, w tym nie tylko klasy Java, ale także Hibernacja, Wiosna, JSP i inne miejsca. Zmień nazwę metody refaktoryzacja zmienia nazwę metody nie tylko w klasach Java, ale w dowolnym miejscu łącznie z komentarzami (nie ma pewności, czy ciąg znaków w komentarzach jest tak naprawdę nazwą metody, więc zapyta). I znajdzie tylko twoją metodę, nawet jeśli istnieją metody innej klasy o tej samej nazwie. Dobra integracja kontroli źródła (czy SVN obsługuje listy zmian? IDEA obsługuje je dla każdej kontroli źródła), możliwość tworzenia łatki ze swoimi zmianami, aby można było przesyłać zmiany do innego członka zespołu bez ich popełniania.

Ulepszony debugger

Kiedy patrzę na HashMap w oknie obserwacyjnym debuggera, widzę logiczny widok - klucze i wartości, kiedy ostatnio to zrobiłem w Eclipse, pokazywał wpisy z hashem i następnymi polami - tak naprawdę nie debuguję HashMap , chcę tylko spojrzeć na to zawartość.

Sprawdzanie poprawności konfiguracji Spring & Hibernate

Sprawdza poprawność konfiguracji Spring i Hibernacji bezpośrednio podczas jej edycji, więc nie muszę restartować serwera, aby wiedzieć, że źle napisałem nazwę klasy lub dodałem parametr konstruktora, więc moja Spring cfg jest nieprawidłowa.

Ostatnim razem, gdy próbowałem, nie mogłem uruchomić Eclipse na Windows XP x64.

i zasugeruje Ci person.name lub person.address . Naciśnij klawisz Ctrl i kliknij person.name , aby przejść do metody getName () klasy Person .

Wpisz Pattern.compile("");put \\ tam, naciśnij CTRL-SPACE i zobacz pomocną wskazówkę dotyczącą tego, co możesz umieścić w wyrażeniu regularnym. Możesz także użyć funkcji wstrzykiwania języka - zdefiniuj własną metodę, która pobiera parametr ciągu, zadeklaruj w oknie dialogowym opcji IntelliLang, że parametr jest wyrażeniem regularnym - i tam również otrzymasz autouzupełnianie. Nie trzeba dodawać, że podkreśla nieprawidłowe wyrażenia regularne.

Inne funkcje

Istnieje kilka funkcji, które nie jestem pewien, czy są obecne w Eclipse, czy nie. Ale przynajmniej każdy członek naszego zespołu, który korzysta z Eclipse, używa również narzędzia do scalania, aby scalić lokalne zmiany ze zmianami kontroli źródła, zwykle WinMerge. Nigdy tego nie potrzebuję - wystarczy mi połączenie w IDEA. Po 3 kliknięciach widzę listę wersji plików w kontroli źródła, po 3 kolejnych kliknięciach mogę porównać poprzednie wersje lub poprzednie i bieżące i ewentualnie scalić.

Pozwala określić, że potrzebuję wszystkich plików .jars w WEB-INF\libfolderze, bez wybierania każdego pliku osobno, więc gdy ktoś zatwierdza nowy plik .jar w tym folderze, automatycznie go pobiera.

Wymieniono powyżej prawdopodobnie 10% tego, co robi. Nie używam Maven, Flex, Swing, EJB i wielu innych rzeczy, więc nie mogę powiedzieć, jak to pomaga. Ale tak jest.

Pavel Feldman
źródło
26
Dwa przykłady automatycznego uzupełniania kodu Java działają identycznie w środowisku Eclipse. Czy ktoś z większą liczbą przedstawicieli może usunąć tylko przykłady Java?
Craig P. Motlin
9
Większość twoich przykładów jest dostępna w Eclipse, bezpośrednio lub poprzez wtyczki innych firm. Nie znam nikogo, kto używa zewnętrznego narzędzia do scalania svn w Eclipse. Dla edytorów wiosennych / hibernujących / javascript (i autouzupełniania) dostępne są wtyczki innych firm. Jeśli chodzi o regex i jsp EL, pokonałeś mnie :)
Yoni
1
Wtyczka Jboss Tools dodaje autouzupełnianie wyrażeń Hibernacja i JSF.
Damo,
4
W widoku debugowania zaćmienia istnieje opcja pokazania zawartości kolekcji, a nie szczegółów implementacji. W przypadku list i zestawów pokaże ich zawartość. W przypadku map wyświetli listę par klucz-wartość. Możliwe jest również ustawienie niestandardowych wyświetlaczy.
deterb
1
Eclipse 3.7 (Indigo), także automatycznie uzupełnia nazwy klas w konfiguracji Spring.
stivlo,
81

Jest tylko jeden powód, dla którego używam intellij, a nie zaćmienia: użyteczność

Niezależnie od tego, czy jest to debugowanie, refaktoryzacja, autouzupełnianie. Intellij jest znacznie łatwiejszy w użyciu dzięki spójnym powiązaniom klawiszy, opcjom dostępnym tam, gdzie ich szukasz itp. Jeśli chodzi o funkcje, Intellij będzie ciężko dogonić Eclipse, ponieważ ta ostatnia ma znacznie więcej dostępnych wtyczek niż intellij i jest łatwa do rozszerzenia.

amit
źródło
10
Jest inteligentny i cholernie szybki. Daje to wiele funkcji użyteczności. Przechodzenie do podklasy lub klasy implementującej, szukanie w ścieżce, znajdowanie zwyczajów itp. Odbywa się tak szybko. Autouzupełnianie odbywa się w linii, wystarczy wstawić kartę. Automatyczne uzupełnianie jest również sprytne, po prostu nie są czystymi sugestiami, ale IDE myśli o nazwach itp. Dla Ciebie.
Ravindranath Akila
Jest więcej niż jeden powód, aby korzystać z IntelliJ. Użyteczność nie znajduje się nawet na szczycie listy. IntelliJ oferuje więcej funkcji niż Eclipse. IntelliJ ma w sumie mniej wtyczek, ale więcej wtyczek „jakości”. Tak więc ta odpowiedź, pomimo wzrostu głosów, jest błędna.
Inżynier oprogramowania,
2
@EngineerDollery Nie powiedziałbym, że to „źle”, ponieważ amit powiedział: „Jest tylko jeden powód, dla którego używam intellij, a nie zaćmienie”, a nie „Jest tylko jeden powód, aby używać intellij, a nie zaćmienie”.
Max Nanasy,
54

Prawdopodobnie nie jest to kwestia tego, co można / nie można zrobić, ale jak .

Na przykład oba mają edytor otoczony panelami dokowania dla projektu, ścieżki klas, danych wyjściowych, struktury itp. Ale w programie Idea, kiedy zaczynam pisać, wszystkie te zawinięcia automatycznie pozwalają mi skupić się na kodzie, który sam jest; W zaćmieniu wszystkie te panele pozostają otwarte, pozostawiając obszar mojego edytora bardzo ograniczony, około 1/5 całkowitego widocznego obszaru. Więc muszę chwycić mysz i kliknąć, aby zminimalizować te panele. Robienie tego przez cały dzień jest bardzo frustrującym doświadczeniem w zaćmieniu.

Dokładnie odwrotnie dzieje się z oknem wyjściowym widoku. W programie Idea uruchomienie programu powoduje wyświetlenie okna / panelu wyjściowego, aby zobaczyć dane wyjściowe programu, nawet jeśli zostało to w sposób oczywisty zminimalizowane. W Eclipse muszę ponownie złapać mysz i poszukać zakładki danych wyjściowych i kliknąć ją, aby wyświetlić dane wyjściowe programu, ponieważ okno / panel wyjściowy jest po prostu kolejnym, tak jak wszystkie pozostałe okna, ale w Pomysłach jest traktowany w specjalny sposób: „Jeśli użytkownik chce uruchomić swój program, najprawdopodobniej chce zobaczyć wyniki tego programu!” Kiedy piszę, wydaje się to takie naturalne, ale zaćmienie tej podstawowej koncepcji interfejsu użytkownika kończy się niepowodzeniem.

Prawdopodobnie jest to skrót w Eclipse (okno ukrywania danych wyjściowych podczas edycji i automatyczne wyświetlanie podczas uruchamiania programu), ale podobnie jak inne dziesiątki funkcji, skrótu należy szukać na forach, pomocy online itp., Podczas gdy w Idea jest trochę więcej ” naturalny".

Można to powtórzyć dla prawie wszystkich funkcji, które mają obie, autouzupełnianie, zawijanie wyrazów, szybki widok dokumentacji, wszystko. Myślę, że wrażenia użytkownika są o wiele przyjemniejsze w Idea niż w zaćmieniu. Wtedy motto się spełnia: „Rozwijaj się z przyjemnością”

Eclipse obsługuje szybsze większe projekty (+300 słoików i +4000 klas) i myślę, że IntelliJ Idea 8 nad tym pracuje.

Wszystko to oczywiście jest subiektywne. Jak możemy zmierzyć doświadczenie użytkownika?

OscarRyz
źródło
18
w zaćmieniu można nacisnąć control-m, aby min / max okno edycji lub kliknąć dwukrotnie jego kartę edytora - to bardzo pomaga
Scott Stanchfield
Wow ... wielkie dzięki. Byłoby bardzo pomocne, gdyby zaćmienie miało sposób, w jaki to wiem (oprócz czytania skrytki skrótów klawiszowych) Bardzo dziękuję. Czy istnieje sposób zmiany okna wyjściowego?
OscarRyz
ALT-SHIFT-Q wyświetla okno Pokaż widok ... C służy do konsoli ALT-SHIFT-Q, C jest skrótem do przejścia do konsoli.
Instantsoup
7
Ctrl + Shift + L pokazuje listę skrótów klawiszowych dostępnych w bieżącym kontekście.
Dan Berindei,
3
Kliknij dwukrotnie tytuł podokna - DOWOLNE podokno - a podokno przejdzie do pełnego ekranu. Zrób to ponownie, aby przywrócić. Zminimalizuj panel za pomocą konsoli, a następnie, gdy nastąpi wyjście, konsola natychmiast wyskakuje.
Ian
44

Idea 8.0 ma piękny ctrl+shift+spacex 2, który wykonuje następującą autouzupełnianie:

 City city = customer.<ctrl-shift-space twice>

rozwiązuje do

 City city = customer.getAddress().getCity();

przez dowolną liczbę poziomów pobierających / ustawiających.

krosenvold
źródło
27
całkiem fajnie, choć coś więcej niż dwa poziomy to całkiem zapach kodu ...;)
Epaga
33

Nie zapomnij „porównaj ze schowkiem”.

Coś, czego używam cały czas w IntelliJ i które nie ma odpowiednika w Eclipse.

Daniel Alexiuc
źródło
6
Również historia schowka.
Kimball Robinson
3
Tę funkcję można dodać do zaćmienia w postaci wtyczki o nazwie AnyEditTools (znalezionej na rynku)
Yaniv
Nie wiedziałem nawet o historii schowka, dopóki jej nie przeczytałem. Świetny!
NodeDad
Kilka razy mnie uratował
OscarRyz
31

Mój ulubiony skrót w IntelliJ, który nie ma odpowiednika w Eclipse (który znalazłem), nazywa się „Idź do symbolu”. CTRL-ALT-SHIFT-Npozwala rozpocząć pisanie i generowanie klas, nazw metod, nazw zmiennych itp. z całego projektu.

Paul Morie
źródło
10
ctrl-shift-G in eclipse
dres
ctrl-shift-G nie jest tym, co opisał Paul .. jest bardziej jak „ctrl + O”, ale dla wszystkich klas, metod i zmiennych w projekcie
Tano
27

Próbowałem przejść na IntelliJ z powodu nowego Android Studio. Ale teraz jestem bardzo rozczarowany. Korzystam z Eclipse z wtyczką Code Recommendanders . Oto prosty przykład, dlaczego Eclipse jest tak niesamowity:

Chcę stworzyć nowy SimpleTimeZone. SimpleTimeZonenie ma Konstruktora z zerowymi argumentami.

Ctrl + Space w Eclipse

wprowadź opis zdjęcia tutaj

Ctrl + Space w IntelliJ

wprowadź opis zdjęcia tutaj

W IntelliJ nie otrzymuję informacji, jaki rodzaj konstruktorów SimpleTimeZonema.

After Enterin Eclipse

wprowadź opis zdjęcia tutaj

Dostaję wcześniej wybrany konstruktor z predefiniowanymi nazwami zmiennych. I widzę rodzaj każdego argumentu. Dzięki Code Polecającym Eclipse odgaduje właściwy konstruktor na podstawie wcześniej zdefiniowanych typów zmiennych w bieżącym zakresie i wypełnia konstruktor tymi zmiennymi.

Po Enterw IntelliJ nic się nie dzieje. Dostaję pustego konstruktora. Muszę nacisnąć, Ctrl + Paby zobaczyć oczekiwane argumenty.

wprowadź opis zdjęcia tutaj

passsy
źródło
25

Jeśli masz kursor na metodzie, CTRL+SHIFT+Ipojawi się okienko implementacji metody. Jeśli metoda jest interfacemetodą, możesz używać strzałek w górę i w dół, aby przechodzić między implementacjami:

Map<String, Integer> m = ...
m.contains|Key("Wibble");

Gdzie | jest (na przykład) tam, gdzie jest twój kursor.

oxbow_lakes
źródło
4
Właściwie w Eclipse (przynajmniej w wersji, której używam), kiedy umieścisz kursor na nazwie metody i naciśniesz CTRL + T, otrzymasz całe drzewo hierarchii, od najwyższego interfejsu do implementacji liści i możesz przeskakiwać do któregokolwiek z nich.
Yuval,
2
W Eclipse możesz także Ctrl + kliknąć nazwę metody, aby przejść do definicji / implementacji metody (w zależności od kontekstu)
Qualidafial
8
Chodzi o to, że tak naprawdę nie nawigujesz do implementacji. To jest tylko wyskakujące okienko, tak jak javadoc itp.
jackrabbit
1
W Eclipse po prostu najedź kursorem na nazwę metody za pomocą Shift, aby otworzyć wyskakujące okienko z jej implementacją
Victor
24

IntelliJ ma kilka całkiem zaawansowanych inspekcji kodu (porównywalne, ale inne niż FindBugs).

Chociaż poważnie brakuje mi wtyczki FindBugs podczas korzystania z IntelliJ (integracja Eclipse / FindBugs jest całkiem fajna).

Oto oficjalna lista CodeInspections obsługiwanych przez IntelliJ

EDYCJA: Wreszcie, jest wtyczka findbugs dla IntelliJ. To wciąż trochę wersja beta, ale połączenie inspekcji kodu i FindBugs jest po prostu niesamowite!

Mo.
źródło
tak, findbugs jest jednym z niewielu statycznych analizatorów kodów, który naprawdę znajduje praktyczne błędy poprawności i uczciwości. :)
Epaga
Czy masz konkretny przykład kontroli jego kodu? Jakie rzeczy może wykryć?
Epaga
Inny link o inspekcji: hamletdarcy.blogspot.com/2008/04/...
Mo.
8
Widzę, że inspekcja kodu IntelliJ znajduje więcej błędów, ma przydatne szybkie poprawki, może dawać ostrzeżenia i naprawiać wiersze podczas ich pisania. (Nie musisz zapisywać pliku i nie trzeba go kompilować) Te drobiazgi sprawiają, że bardziej praktyczne jest naprawianie błędów tak szybko, jak to możliwe.
Peter Lawrey,
16

Daleko, daleko, znacznie więcej refaktoryzacji.

Tomek
źródło
15

Jedną z rzeczy, których używam regularnie, jest ustalenie punktu przerwania, ale następnie kontrolowanie tego, co robi. (Podczas mojej ostatniej pracy większość innych używała Eclipse ... Pamiętam, że byłem zaskoczony, że nikt nie mógł znaleźć tego w Eclipse.)

Na przykład może nie zatrzymywać punktu przerwania, ale po prostu zapisać komunikat w konsoli. Co oznacza, że ​​nie muszę zaśmiecać mojego kodu za pomocą „System.out.println (...)”, a następnie ponownie skompilować.

jgindin
źródło
2
Możesz to zrobić za pomocą warunkowych punktów przerwania w zaćmieniu, ale jest to trochę bezczelne .eg. true
HaveAGuess
Myślę, że intelliJ pozwala ustawić bardziej złożone liczby trafień, prawda?
Kimball Robinson
3
Łatwiej jest znaleźć teraz w zaćmieniu - wyświetla teraz warunki w widoku punktów przerwania (więc wiesz, że są dostępne). Możesz łamać liczenia, wprowadzać dowolny kod, np. System.out.println("here"); falseDrukować, ale nie łamać (ostatnie zdanie jest wyrażeniem logicznym, które określa, czy powinniśmy złamać)
Scott Stanchfield
15

Istnieje wiele rzeczy, które pomysł rozwiązuje w znacznie prostszy sposób, lub nie ma odpowiednika:

  • Akcje autouzupełniania: czynność ctrl+shift+amożna wywołać dowolną akcję pomysłu z klawiatury, nie pamiętając kombinacji klawiszy ... Pomyśl o gnome-do lub uruchom w Windows, a masz pomysł! Ponadto ta funkcja obsługuje skróty CamelCasing;)

  • Półka: Pozwala łatwo rozdzielić niektóre fragmenty kodu, a następnie przejrzeć je za pomocą przeglądarki różnic.

  • Historia lokalna: jest o wiele lepiej zarządzany i prostszy.

  • Adnotacje i historia SVN: łatwiejsze do sprawdzenia, a także możesz łatwo zobaczyć historię tylko dla takiej części całego pliku źródłowego.

  • Autouzupełnianie wszędzie, na przykład okna oceny wyrażenia i warunku punktu przerwania.

  • Integracja z Maven ... o wiele prostsza i dobrze zintegrowana.

  • Refaktory są znacznie bliżej ręki, takie jak wstawianie pętli, zawijanie / rzutowanie, zmiana nazwy i dodawanie zmiennych.

  • Znajdź wiele potężnych i dobrze zorganizowanych. Nawet w dużych projektach

  • Dużo stabilny do pracy z kilkoma gałęziami dużego projektu w tym samym czasie (jako poprzedni korektor błędów 1,5 Gb według źródeł branżowych i potrzeba pracy nad nimi jednocześnie, pomysł pokazał jego solidne możliwości)

  • Czystszy i prostszy interfejs ...

  • I jest prostszy w użyciu tylko z klawiaturą, eliminując potrzebę używania myszy do wielu prostych czynności, oszczędzając czas i pozwalając skupić się na kodzie ... tam, gdzie ma to znaczenie!

A teraz, będąc open source ... baza użytkowników Idea będzie rosła wykładniczo.

Serginho
źródło
2
Akcje autouzupełniania = szybki dostęp w zaćmieniu; Nie rozumiem, jak lokalna historia może być łatwiejsza niż w zaćmieniu ...
Scott Stanchfield
Jak wskazał Scott, jest to Ctrl + 3. Wspomaganie zawartości jest również dostępne, gdy wyrażenia oceniające i ustawianie warunkowych punktów przerwania. Nie jestem pewien, o ile bliżej są wspomniane refaktoryzacje niż to, co proponują Ctrl + 1 i Ctrl + 2. Większość reszty brzmi subiektywnie.
nitind
14

Wyszukiwanie strukturalne i zamiana.

Na przykład wyszukaj coś takiego:

  System.out.println($string$ + $expr$);

Gdzie $ string $ jest dosłowne, a $ expr $ to wyrażenie typu my.package.and.Class, a następnie zamień na:

  $expr$.inspect($string$);
Darron
źródło
1
W rzeczywistości możesz wyszukać typ casts / () - operator / w swoim kodzie, praktycznie niemożliwe przy wyszukiwaniu zwykłego tekstu
Karl
13

Moje wyczucie czasu może być nieco opóźnione pod względem tego wątku, ale musiałem tylko odpowiedzieć.

Jestem wielkim fanem zaćmienia - używam go od pierwszego pojawienia się. Przyjaciel powiedział mi wtedy (ponad 10 lat temu), że to będzie gracz. On miał rację.

Jednak! Właśnie zacząłem używać IntelliJ, a jeśli nie widziałeś ani nie korzystałeś z list zmian - brakuje ci programowania nieba.

Możliwość śledzenia moich zmienionych plików (w mojej gałęzi programistycznej ala clearcase) była czymś, czego szukałem we wtyczce do zaćmienia. Intellij śledzi wszystkie zmiany w jednym zatwierdzeniu, niezwykle łatwo. Zmienione pliki można izolować za pomocą niestandardowych list. Używam tego do plików konfiguracyjnych, które muszą być unikalne lokalnie, ale są stale oflagowane podczas synchronizacji lub porównania z repozytorium - umieszczając je pod listą zmian, mogę je monitorować, ale starannie je schować, aby móc skupić się na prawdziwych dodatkach Robię.

Ponadto istnieje wtyczka Commit Log, która wyświetla tekst wszystkich zmian dla tych SCCS, które nie są zintegrowane z oprogramowaniem do śledzenia błędów. Wklejanie dziennika do historii pracy zgłoszenia rejestruje pliki, ich wersję, datę / godzinę oraz gałąź / tagi. Fajnie jak diabli.

Założę się, że wszystko to można obsługiwać za pomocą wtyczek (lub przyszłych ulepszeń) w środowisku Eclipse; jednak Intellij sprawia, że ​​jest to proste.

Wreszcie, jestem naprawdę podekscytowany popularnością tego produktu - naciśnięciami klawiszy, więc jest to bolesne, ale zabawne.

G Craig
źródło
Naprawdę podoba mi się lista zmian. Jest podobny do niezależnego od VCS zestawu naszywek / półek, nad którymi można pracować niezależnie i które można z nimi powiązać, a także z narzędziem do śledzenia problemów. Masz historię lokalną (np. Mini VCS) śledzącą zmiany podczas pracy z prawie szczegółami na poziomie linii, dzięki czemu możesz wrócić do niemal dowolnego momentu w razie potrzeby. Ponadto po przełączeniu zadań wszystkie IDEA zapamiętuje stan IDE dla nowego zadania i przywraca otwarte pliki, pozycje okien itp.
sylvanaar
Listy zmian są w rzeczywistości funkcją SVN. IntelliJ pozwala tylko zobaczyć i zarządzać nimi tam, gdzie nie działają wtyczki SVN Eclipse.
Neil Traft
12

Debuger IntelliJ ma bardzo przydatną funkcję o nazwie „Oceń wyrażenie”, która jest zdecydowanie lepsza niż zawieszka zaćmienia. Ma pełne uzupełnianie kodu i wydaje mi się, że jest ogólnie „bardziej użyteczny”.

Mo.
źródło
8
Eclipse ma również funkcję oceny wyrażeń, która oferuje uzupełnianie kodu. Przejdź do okna -> Pokaż widok -> Debuguj -> Wyświetl Po zatrzymaniu w punkcie przerwania w debuggerze możesz ocenić dowolne wyrażenia w tym widoku wyświetlania.
laz
11

Cóż, dla mnie to tysiąc drobiazgów. Niektóre makra, ogólny układ GUI w Eclipse uważam za okropny. Nie mogę otworzyć wielu projektów w różnych oknach w Eclipse. Mogę otwierać wiele projektów, ale wtedy system oparty na widoku zamienia na mnie wiele rzeczy podczas przełączania plików. Inspekcje kodu IntelliJ wydają się lepsze. Wyskakujące pomocniki do rozwiązywania typowych problemów są miłe. Wiele prostych rzeczy związanych z użytecznością, takich jak pasek boczny, w którym mogę najechać myszką na hot spot i pokaże mi każdą podklasę implementacji metody lub metody, którą wdrażam i skąd.

Ilekroć musiałem używać lub obserwować, jak ktoś używa, Eclipse wydaje się, że może robić większość rzeczy, które mogę robić w IntelliJ, ale zajmuje to dłużej i jest bardziej niezrozumiały.

Chris Kessel
źródło
9

Wprowadź zmienną. ( Ctrl+Alt+Vw systemie Windows, Cmd+Alt+Vw OSX)

Powiedzmy, że wywołujesz metodę, service.listAllPersons() Hit Ctrl+Alt+Vi Enter, i wstawiana jest zmienna dla wartości zwracanej z wywołania metody:

List<Person> list = service.listAllPersons();

Oszczędza pisania i nie musisz sprawdzać typu zwracanej metody, którą wywołujesz. Szczególnie przydatny przy stosowaniu leków generycznych, np

new ArrayList<String>()

[wprowadź zmienną]

ArrayList<String> stringArrayList = new ArrayList<String>();

(oczywiście możesz łatwo zmienić nazwę zmiennej przed uderzeniem Enter)

rlovtang
źródło
13
To Ctrl + 2 L w Eclipse.
Micke,
2
Fajnie, nie wiedziałem, ani żaden z użytkowników Eclipse, o który prosiłem. Czy ta funkcja była częścią Eclipse od dłuższego czasu?
rlovtang
3
Dość długo ... Jeśli używasz szybkiej poprawki control+1(najbardziej oczywistego wiązania klawiszy na świecie, co?), Sugeruje to, co możesz zrobić w bieżącej lokalizacji kursora, podobnie jak w IDEA. Zawiera na przykład „przypisz lokalnie”, „przypisz pole” i inne opcje. control+2, Ljest skrótem do tego.
Scott Stanchfield
W Eclipse, kiedy już wybierzesz ctrl+2, L, nadal możesz zmienić typ utworzonej zmiennej na typ po prawej stronie (domyślnie) lub na dowolny nadtyp: typ zmiennej można wybrać za pomocą TAB.
Gaetan
8

IntelliJ ma wsparcie Intellisense i refaktoryzacji z kodu do dokumentów jspx.

krosenvold
źródło
Czy możesz wyjaśnić, co masz na myśli przez intellisense? Eclipse ma również funkcję autouzupełniania, ale czy masz na myśli coś innego?
Epaga
Zaćmienie nie ma autouzupełniania w dokumentach jspx AFAIK. W zwykłym jsp tak, jspx nie.
krosenvold
3
Oznacza to, że jeśli masz stronę JSP, która odwołuje się do właściwości w POJO, i zmieniasz nazwę tej właściwości, twoja strona JSP jest poprawnie aktualizowana. Obsługa JSP IntelliJ uruchamia Eclipse / WTP!
erickson
2
Nie mogę zmusić Eclipse do automatycznego ukończenia działania w wyrażeniach JSP EL, kropka. JSP lub JSPX, to nie ma znaczenia, to po prostu brak pojęcia. IntelliJ obsługuje tagx i jspx tak, jak można się spodziewać: jak tag lub plik jsp.
erickson
Miło jest zobaczyć, jak użytkownicy zaćmienia głosują na rzeczy, których nie lubią. Jeśli moje spostrzeżenia są błędne, proszę o komentarz. Powiedz mi, jak to zrobić w Eclipse!
krosenvold
7

Dla mnie wsparcie maven IDEA, szczególnie w wersji 9, nie ma sobie równych. Synchronizacja projektu w locie z modelem maven jest po prostu fantastyczna i sprawia, że ​​rozwój jest przyjemny.

MDMA
źródło
6

Intellij ma znacznie lepszą wtyczkę SVN niż Subversive lub Subclipse i działa! Ilość czasu, który zmarnowaliśmy na scalanie plików źródłowych za pomocą Eclipse, nie oznacza, że ​​trzeba o tym myśleć. To nie jest problem z IntelliJ, ponieważ wtyczka pomaga ci znacznie więcej.

Również wtyczka Subclipse jest niewiarygodna - regularnie mamy przypadki, w których wtyczka nie uważa, że ​​kod SVN został zarejestrowany przez innych programistów, ale tak - serwer CI przetworzył je!

Tony Ruddock
źródło
dokładnie, wsparcie svn ma doskonały pomysł, podczas gdy subclipse / subversive są błędne, niezdarne i niezbyt niezawodne; to samo tyczy się gita, właściwie nie pamiętam żadnej rozsądnej integracji gita dla zaćmienia i intelliJ radzi sobie z tym bardzo dobrze
Kamil Mikołajczyk
Osobiście uważam, że powinieneś wykonać całą kontrolę wersji w wierszu poleceń, nawet jeśli twoje IDE może to zrobić. Kiedy zrobisz to w wierszu poleceń, będziesz wiedział, jak później skasować skrypt, co może naprawdę przyspieszyć twój rozwój. Czasami moi współpracownicy proszą mnie o pomoc przy subclipse lub wtyczce eclipse gita, po prostu mówię im, aby przestali go używać i zrobili to w wierszu poleceń.
msknapp
4

Emulator VIM . Ta wtyczka zapewnia prawie pełną emulację vi / vim / gvim podczas edycji plików w IDEA. Obsługiwana jest następująca funkcjonalność:

  • Klawisze ruchu
  • Usuwanie / zmiana
  • Wstaw polecenia trybu
  • Znaki
  • Rejestry
  • Cofanie / ponawianie VIM
  • Polecenia trybu wizualnego
  • Niektóre polecenia Ex
  • Niektóre: ustaw opcje
  • Pełne wyrażenia regularne VIM do wyszukiwania i wyszukiwania / zamiany
  • Makra
  • Diagramy
  • Historia wiersza poleceń
  • Historia wyszukiwania
  • Jumplists
  • Pomoc VIM

kilka komentarzy na temat tej wtyczki z http://plugins.jetbrains.net/plugin/?id=164

Nie widzę, aby kiedykolwiek wracał do innych pomysłów z powodu tej wtyczki .. Najlepsze z obu światów ... Niesamowite! tego mi brakowało we wszystkich IDE.
Maciek Kreft
źródło
Zgadzam się, nie mogłem żyć bez mojej wtyczki IdeaVim, jednak szczerze mówiąc, istnieje wtyczka Vim dla Eclipse, trafnie nazwana VimPlugin ( vimplugin.org )
Keith
3
Vwrapper to kolejna wtyczka Vim Eclipse. Działa nawet lepiej niż wtyczka Idea Vim (działają klawisze powtarzania). Vwrapper nie obsługuje wyszukiwania i zamienia z wiersza poleceń (chociaż wyszukiwanie działa świetnie), ani nie pozwala na interaktywne definiowanie makr. Zgodził się, że wsparcie Vima jest niezbędne w środowisku IDE. Bez niego nie użyłby Eclipse ani Idea!
Brent Faust
1
Viableplugin.com jest bardzo dobra dla Eclipse. Korzystam również z wersji Intellij i okazuje się, że ta wersja czasami odkłada się w edytorze i nie reaguje na polecenia.
John Lemp,
3

Kilka innych rzeczy:

  • propaguj parametry / wyjątki podczas zmiany podpisu metody, bardzo przydatne do aktualizacji metod głęboko w stosie wywołań
  • Sprawdzanie poprawności kodu SQL w łańcuchach przekazywanych jako argumenty do wywołań jdbc (i całego nowego pakietu do wstrzykiwania języka)
  • zaimplementowane w / nadpisane w ikonach interfejsów i klas (i ich metod) oraz inteligentnej nawigacji implementacji (Ctrl + Alt + Click lub Ctrl + Alt + B)
  • powiązanie między interfejsami EJB 2.1 i klasami fasoli (w tym obsługa refaktoryzacji); stary, ale wciąż niezwykle cenny podczas pracy nad starszymi projektami
Andrei
źródło
2

Dwie rzeczy, które IntelliJ robi, że Eclipse nie są dla mnie bardzo cenne:

Separatory metod: te słabe szare linie między metodami znacznie poprawiają czytelność kodu

Antyaliasing tekstu: sprawia, że ​​kod wygląda tak ładnie w IDE

Yalestar
źródło
2
Odkryłem, że antyaliasing IntelliJ jest znacznie gorszy niż Eclipse. Było to jednak kilka wersji IntelliJ temu. Czy to zostało ulepszone?
laz
Używam proporcjonalnej czcionki Verdana, która moim zdaniem wygląda ładniej niż przy użyciu wygładzania.
Peter Lawrey,
2

Jedną z bardzo przydatnych funkcji jest możliwość częściowego zbudowania projektu reaktora Maven, aby uwzględnić tylko potrzebne części.

Aby to trochę wyjaśnić, rozważ przypadek kolekcji plików WAR z wieloma wspólnymi zasobami (np. JavaScript, pliki konfiguracyjne Spring itp.) Udostępnianymi między nimi za pomocą techniki nakładania. Jeśli pracujesz na jakiejś stronie internetowej (działającej w Jetty) i chcesz zmienić część kodu nakładki, który jest przechowywany w osobnym module, zwykle oczekujesz, że będziesz musiał zatrzymać Jetty, uruchomić kompilację Maven, uruchomić Jetty ponownie i kontyntynuj. Tak jest w przypadku Eclipse i niemal każdego innego środowiska IDE, z którym pracowałem. Nie w IntelliJ. Za pomocą ustawień projektu możesz zdefiniować, który aspekt modułu chcesz włączyć do kompilacji w tle. W rezultacie powstaje proces, który wydaje się bezproblemowy. Zmieniasz praktycznie dowolny kod w projekcie i natychmiast jest on dostępny po odświeżeniu przeglądarki.

Bardzo schludnie i bardzo szybko.

Bez niego nie wyobrażam sobie kodowania interfejsu w coś takiego jak wsparcie YUI na DWR / SpringMVC.

Gary Rowe
źródło
2

Preambuła do mojej odpowiedzi: Moje użycie Eclipse jest ograniczone. Potrzebowaliśmy środowiska Java IDE do pracy zarówno w systemie Windows, jak i Mac, a port Mac zwalniał z dnia na dzień. To było lata temu i jestem pewien, że teraz jest OK. Ale to właśnie skłoniło nas do przejścia na IntelliJ i jesteśmy z tego zadowoleni.

Teraz moja odpowiedź: jedną wielką różnicą, o której jeszcze nie wspomniałem, jest to, że wsparcie techniczne jest lepsze w przypadku IntelliJ / Jet Brains. Wysyłamy wiadomość e-mail do JetBrains i otrzymujemy ostateczną odpowiedź w ciągu mniej niż godziny. Szukanie odpowiedzi na problemy z Eclipse skutkuje zwykłymi odpowiedziami „Ty głupi idioto” (zwykle niewielka liczba odpowiedzi) wraz ze znacznie większą liczbą wnikliwych, pomocnych odpowiedzi. Jednak uzyskanie prawdziwej odpowiedzi wymaga pewnego sortowania.

Jim Dodd
źródło
Zaćmienie jest open source. Nikt nie jest wynagradzany za odpowiadanie na pytania lub naprawianie błędów. Kup komercyjne IDE oparte na Eclipse, np. MyEclipse, i uzyskaj wsparcie dla swoich pieniędzy. Szybkie statystyki: zgłosiłem 56 błędów JetBrains, 23 z nich są zamknięte; z 65 błędów zgłoszonych do Eclipse 33 są zamknięte. Jedyną różnicą jest to, że JetBrains naprawia błędy nieco szybciej niż Eclipse.
Victor
2

Coś, czego używam w IntelliJ cały czas, refaktoryzuje podczas pisania. Mam przepisane klasy z wydruku (pierwotnie napisanego w środowisku Eclipse) przy użyciu obu IDE i wykorzystałem około 40% mniej uderzeń klawiszy / kliknięć myszą, aby napisać te same klasy w IntelliJ niż Eclipse.

Nie chciałbym używać Eclipse, dopóki nie będą one obsługiwać tyle samo refaktoryzacji przy niekompletnych fragmentach kodu.

Oto dłuższa lista funkcji w IntelliJ 8.0 / 8.1 [ http://www.jetbrains.com/idea/features/index.html]

Peter Lawrey
źródło
2

Jest jedna rzecz, którą IntelliJ robi o wiele lepiej niż Eclipse i opróżnia twoje kieszenie!

Wolę jednak go używać, a jedną wielką zaletą w stosunku do Eclipce jest sposób synchronizacji z systemem plików, w przypadku dużych projektów i powolnych komputerów (tak w środowiskach roboczych komputery są znacznie wolniejsze niż nasze w domu) Eclipse wydaje się walka, w której IntelliJ wydaje się być szybszy, choć z wolniejszym początkowym czasem indeksowania.

Wydanie IntelliJ Community oczywiście czyni korzystanie z niego za darmo, ale wkrótce chcesz, aby te dodatkowe refaktoryzacje i ładne małe gadżety nie były zawarte w edycji CC.

Moim zdaniem jest to ogólnie lepsze doświadczenie użytkownika, ale czy jego koszt jest pytaniem dla każdego programisty.

Ale bądźmy wdzięczni, że mamy teraz do trzech świetnych IDE dla Javy, a NetBeans jest coraz lepszy.

Shawn Vader
źródło
3
IntelliJ Ultimate Edition rzeczywiście nie jest darmowy, ale jako programista używam mojego IDE około 8 do 10 godzin dziennie. Więc nie uważam jego rozsądnej ceny za wadę !!
Romain Linsolas
2

Analiza przepływu danych : międzyprocesowa analiza przepływu wstecznego i analiza przepływu wstecznego, jak opisano tutaj . Moje doświadczenia oparte są na wydaniu Community Edition, które dość dobrze przeprowadza analizę przepływu danych. W kilku przypadkach, gdy kod jest bardzo złożony, zawiódł (odmówił wykonania czegokolwiek).

Ville Laitila
źródło
2

Przede wszystkim kocham intellij. Istnieje co najmniej sto cech, które ma ten brak zaćmienia. Mówię o wielkościach lepszych pod względem niezawodności i inteligencji, których żadna hiperbola nie jest w stanie opisać, jeśli chodzi o refaktoryzację, zmianę nazwy, przenoszenie i inne, o których już wspomniano.

ALE jest jedna rzecz, której intellij nie zezwala na to, co robi zaćmienie. Nie pozwala na uruchamianie wielu projektów jednocześnie pod tym samym vm.

Kiedy masz osobne projekty dla front, middle, core, agent..etc, w których wszystkie muszą ze sobą współdziałać, nie możesz szybko modyfikować i debugować jednocześnie, afaik. Jedynym sposobem, w jaki obecnie sobie z tym radzę, jest użycie skryptów mrówek do wdrażania i aktualizacji słoików w zależnych projektach lub użycie maven.

Eclipse umożliwia debugowanie wielu projektów w ramach jednej instancji ide vm.

blicket
źródło
4
Powinno to zostać opublikowane w temacie Co Eclipse może zrobić, że IntelliJ nie może , a nie na odwrót.
Neil Traft,
IntelliJ robi to bez żadnych problemów. Ta odpowiedź jest po prostu błędna.
Inżynier oprogramowania,