Что возможно в IntelliJ, что невозможно в Eclipse?

365

Я слышал от людей, которые перешли в ту или иную сторону и которые клянутся тем или другим.

Будучи большим поклонником Eclipse, но не имея времени опробовать IntelliJ, мне интересно услышать от пользователей IntelliJ, которые являются «бывшими Eclipsians», некоторые конкретные вещи, которые вы можете делать с IntelliJ, которые вы не можете делать с Eclipse.

Примечание : это не субъективный вопрос и вовсе не означает превращения в священную войну IDE. Пожалуйста, уменьшите любые ответы на приманки .

Epaga
источник
1
Я перешел из Eclipse в NetBeans в IntelliJ rubyMine, и каждый из них был «на шаг впереди» по сравнению с предыдущим. Я не могу понять, что конкретно (следовательно, это не ответ), поскольку это было какое-то время, но самый большой скачок был к rubyMine, который был просто более «интегрированным» и, казалось, имел больше функциональности и представлял вещи в более простой форме. использовать способ. Казалось, что он лучше, чем другие, решал проблемы с драгоценными камнями, зависимостями и тому подобным.
старье
Я хочу переключиться с intelliJ на Eclipse (из-за разработки под Android), поэтому этот тип вопросов и ответов очень полезен.
хром
8
@chrome Android теперь переключается в другую сторону: developer.android.com/sdk/install/studio.html
Даниэль Алексюк
1
У меня есть столько этих сообщений, сколько я могу, и все ответы указывают на то, что на самом деле можно сделать затмение, иногда проще ИМХО. Я хочу чувствовать, что я получил свою сумму в $ intellij, но единственной причиной, по которой я его купил, было автозаполнение Javascript. Я мог бы просто купить веб-шторм дешевле, если это все, что я получу. Вероятно, есть плагин Eclipse, который делает то же самое. Честно говоря, я думаю, что затмение является более последовательным, и я скучаю по функции перспективы.
Dres

Ответы:

185

CTRL-клик работает где угодно

CTRL-щелчок, который приводит вас туда, где определен объект, по которому щелкают объекты, работает везде - не только в классах Java и переменных в коде Java, но и в конфигурации Spring (вы можете щелкнуть по имени класса, или свойству, или имени компонента), в Hibernate (вы можете щелкнуть имя свойства или класс или включенный ресурс), вы можете в течение одного клика перейти от класса Java к тому месту, где он используется как компонент Spring или Hibernate; щелчок по включенному тегу JSP или JSTL также работает, нажатие Ctrl при нажатии на переменную или функцию JavaScript возвращает вас к определенному месту или показывает меню, если имеется более одного места, включая другие файлы .js и код JS в HTML или JSP. файлы.

Автозаполнение для многих языков

Hibernate

Автозаполнение в выражениях HSQL, в конфигурации Hibernate (включая имена классов, свойств и столбцов БД), в конфигурации Spring

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

и он покажет вам список бобов, которые вы можете добавить в это свойство.

Ява

Очень умное автозаполнение в коде Java:

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

и он показывает вам ТОЛЬКО getName () , getAddress () и toString () (только они совместимы по типу), а getName () стоит первым в списке, потому что у него более подходящее имя. Последняя версия 8, которая все еще находится в EAP, имеет еще более умное автозаполнение.

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

Умное автозаполнение в 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>;
}

и он показывает ТОЛЬКО getName () и getAddress () , независимо от того, как можно получить методы *, которые есть у вас в других объектах JS в вашем проекте, и нажатие ctrl на this.getName () приведет вас туда, где это определено, даже если в вашем проекте есть некоторые другие функции getName () .

HTML

Я упоминал автозаполнение и нажатие Ctrl в путях к файлам, таким как <script src = "", <img src = "" и т. Д.?

Автозаполнение в атрибутах HTML-тегов. Автозаполнение в стиле атрибута тегов HTML, как имен атрибутов, так и значений. Автозаполнение в атрибутах класса.
Напечатайте <div class = "<CTRL-SPACE>, и он покажет вам список классов CSS, определенных в вашем проекте. Выберите один, кликните по нему Ctrl и вы будете перенаправлены туда, где он определен.

Легкое выделение языка

В последней версии есть внедрение языка, поэтому вы можете объявить, что ваш пользовательский тег JSTL обычно содержит JavaScript, и он будет выделять JavaScript внутри него.

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

Индексированный поиск по всему проекту.

Вы можете использовать Find Usages любого Java-класса или метода, и он найдет, где он используется, включая не только Java-классы, но и Hibernate, Spring, JSP и другие места. Переименование метода рефакторинг переименовывает метод не только в классах Java, но и где угодно, включая комментарии (не может быть уверенности, что строка в комментариях действительно является именем метода, поэтому он спросит). И он найдет только ваш метод, даже если есть методы другого класса с таким же именем. Хорошая интеграция с системой контроля версий (поддерживает ли SVN списки изменений? IDEA поддерживает их для каждого элемента управления версиями), возможность создавать патч с вашими изменениями, чтобы вы могли отправлять свои изменения другому члену команды без их фиксации.

Улучшенный отладчик

Когда я смотрю на HashMap в окне просмотра отладчика, я вижу логическое представление - ключи и значения, в прошлый раз, когда я делал это в Eclipse, он отображал записи с хешем и следующими полями - я не отлаживаю HashMap , я просто хочу посмотреть на это содержание.

Проверка конфигурации Spring & Hibernate

Он проверяет конфигурацию Spring и Hibernate при редактировании, поэтому мне не нужно перезагружать сервер, чтобы узнать, что я неправильно написал имя класса или добавил параметр конструктора, чтобы мой Spring cfg был недействительным.

В прошлый раз, когда я пытался, я не мог запустить Eclipse на Windows XP x64.

и он предложит вам person.name или person.address . Ctrl щелкните на person.name и переведет вас в GetName () метод Person класса.

Введите Pattern.compile("");put \\ туда, нажмите CTRL-SPACE и посмотрите полезный совет о том, что вы можете вставить в свое регулярное выражение. Здесь вы также можете использовать языковую инъекцию - определите свой собственный метод, который принимает строковый параметр, объявите в диалоговом окне параметров IntelliLang, что ваш параметр является регулярным выражением, и он также даст вам автозаполнение. Излишне говорить, что это подчеркивает неправильные регулярные выражения.

Другие особенности

Есть несколько функций, которые я не уверен, есть в Eclipse или нет. Но, по крайней мере, каждый член нашей команды, который использует Eclipse, также использует какой-то инструмент слияния для объединения локальных изменений с изменениями из системы контроля версий, обычно WinMerge. Мне это никогда не нужно - мне достаточно слияния в IDEA. В 3 клика я вижу список версий файлов в системе контроля версий, еще в 3 клика я могу сравнить предыдущие версии или предыдущую и текущую и, возможно, объединить.

Он позволяет указать, что мне нужны все файлы .jars внутри WEB-INF\libпапки, не выбирая каждый файл по отдельности, поэтому, когда кто-то фиксирует новый файл .jar в эту папку, он автоматически подхватывает его.

Упомянутое выше, вероятно, составляет 10% того, что он делает. Я не пользуюсь Maven, Flex, Swing, EJB и многими другими вещами, поэтому не могу сказать, как это помогает с ними. Но это так.

Павел Фельдман
источник
26
Два примера об автозаполнении Java-кода одинаково работают в Eclipse. Может кто-то с большим количеством представителей удалить только примеры Java, пожалуйста?
Крейг П. Мотлин
9
Большинство ваших примеров доступны в Eclipse, напрямую или через сторонние плагины. Я не знаю никого, кто использовал бы внешний инструмент для слияния SVN в Eclipse. Для редакторов Spring / Hibernate / Javascript (и автозаполнения) существуют сторонние плагины. Что касается регулярных выражений и JSP EL, вы победили меня :)
Yoni
1
Плагин Jboss Tools добавляет автозаполнение выражений Hibernate и JSF.
Дамо,
4
Для представления отладки eclipse есть опция, показывающая содержимое коллекций, а не детали реализации. Для списков и наборов будет показано их содержимое. Для карт будет показан список пар ключ-значение. Также возможно настроить пользовательские дисплеи.
Определить
1
Eclipse 3.7 (Indigo), также автоматически завершает имена классов в конфигурации Spring.
stivlo
81

Есть только одна причина, по которой я использую intellij, а не eclipse: юзабилити

Будь то отладка, рефакторинг, автозаполнение. Intellij гораздо проще использовать с согласованными привязками клавиш, опциями, доступными для поиска и т. Д. По функциям Intellij будет сложно догнать Eclipse, так как последний имеет гораздо больше доступных плагинов, чем intellij, и легко расширяемый.

Amit
источник
10
Это умно и чертовски быстро. Это добавляет много полезных функций. Переход к подклассу или реализации класса, поиск в пути, поиск использования и т. Д. Происходит очень быстро. Автозаполнение происходит внутри строки, просто вкладка вставит его. Автозаполнение также является умным, просто не чистые предложения, но IDE думает об именах и т.д. для вас.
Равиндранат Акила
Существует несколько причин использовать IntelliJ. Юзабилити даже не в начале списка. В IntelliJ больше возможностей, чем в Eclipse. Всего IntelliJ имеет меньше плагинов, но больше «качественных» плагинов. Таким образом, этот ответ, несмотря на положительные отзывы, неверен.
Инженер-программист
2
@EngineerDollery Я бы не сказал , что это «неправильно», так как Амит сказал : «Существует только одна причина , я использовать IntelliJ и не затмить», а не «Там только одна причина , чтобы использовать IntelliJ и не затмить».
Макс Нанаси
54

Вероятно, дело не в том, что можно / нельзя сделать, а в том, как это сделать .

Например, у обоих есть редактор, окруженный док-панелями для проекта, пути к классам, выходных данных, структуры и т. Д. Но в Idea, когда я начинаю печатать все эти свертки, автоматически позвольте мне сосредоточиться на самом коде; В затмении все эти панели остаются открытыми, оставляя мою область редактора очень уменьшенной, около 1/5 от общей видимой области. Поэтому мне нужно схватить мышь и щелкнуть, чтобы свернуть эти панели. Делать это целый день - очень неприятный опыт в затмении.

Совершенно противоположное происходит с окном вывода вида. В Idea запуск программы выводит окно / панель вывода, чтобы увидеть результат работы программы, даже если он был явно свернут. В eclipse мне нужно снова схватить мою мышь и найти вкладку вывода и щелкнуть по ней, чтобы просмотреть вывод моей программы, потому что окно вывода / панель просто другое, как и все остальные окна, но в Idea это рассматривается в особым образом: «Если пользователь хочет запустить свою программу, очень вероятно, что он хочет увидеть результаты этой программы!» Когда я пишу это, это кажется естественным, но затмение терпит неудачу в этой базовой концепции пользовательского интерфейса.

Возможно, для этого есть ярлык в eclipse (окно вывода с автоматическим скрытием при редактировании и автоматическое отображение его при запуске программы), но, как и у некоторых других десятков функций, на форумах, онлайн-справке и т. Д. Нужно искать ярлык, а в Idea это немного больше » естественно».

Это может быть повторено почти для всех функций: автозаполнение, перенос слов, быстрый просмотр документации, все. Я думаю, что пользовательский опыт гораздо более приятен в идее, чем в затмении. Тогда сбудется девиз «Развивайся с удовольствием»

Eclipse быстрее обрабатывает большие проекты (+300 банок и +4000 классов), и я думаю, что IntelliJ Idea 8 работает над этим.

Все это, конечно, субъективно. Как мы можем измерить пользовательский опыт?

оборота ОскарРыз
источник
18
в eclipse вы можете нажать control-m, чтобы мин. / макс. окно редактирования, или дважды щелкнуть его вкладку редактора - это очень помогает
Скотт Стэнчфилд,
Вау ... большое спасибо. Было бы очень полезно, если бы у Eclipse был способ, которым я знаю это (помимо чтения шпаргалки горячих клавиш) Большое спасибо. Есть ли способ изменить окно вывода?
ОскарРиз
ALT-SHIFT-Q вызывает окно Show View ... C - для консоли ALT-SHIFT-Q, C - это ярлык для перехода к консоли.
Instantsoup
7
Ctrl + Shift + L показывает вам список горячих клавиш, доступных в текущем контексте.
Дэн Бериндей
3
Дважды щелкните заголовок подокна - ЛЮБОЕ подокно - и ваше подокно развернется на весь экран. Сделайте это снова для восстановления. Сверните панель с помощью консоли, а затем, когда произойдет вывод, консоль мгновенно откроется.
Ян
44

Идея 8.0 имеет прекрасный ctrl+shift+spaceх 2, который выполняет следующее автозаполнение:

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

решает в

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

через любое количество уровней геттеров / сеттеров.

кросенволд
источник
27
довольно круто, хотя что-то больше, чем два уровня, это просто запах кода
;;
33

Не забудьте "сравнить с буфером обмена".

То, что я все время использую в IntelliJ и которое не имеет аналогов в Eclipse.

Даниэль Алексюк
источник
6
Также история буфера обмена.
Кимбалл Робинсон
3
Эта функция может быть добавлена ​​к затмению в виде плагина под названием AnyEditTools (найден на рынке)
Yaniv
Даже не знал об истории буфера обмена, пока не прочитал это. Отлично!
NodeDad
Спасли
31

Мой любимый ярлык в IntelliJ, который не имеет эквивалента в Eclipse (который я нашел), называется «Перейти к символу». CTRL-ALT-SHIFT-Nпозволяет начать вводить и выводить классы, имена методов, имена переменных и т. д. из всего проекта.

Paul Morie
источник
10
ctrl-shift-G в затмении
дрес
ctrl-shift-G - это не то, что описал Пол .. больше похоже на "ctrl + O", но для всех классов, методов и переменных проекта
Tano
27

Я пытался перейти на IntelliJ из-за новой Android Studio. Но сейчас я очень разочарован. Я использую Eclipse с плагином Code Recommanders . Вот простой пример, почему Eclipse такой крутой:

Я хочу создать новый SimpleTimeZone. SimpleTimeZoneне имеет конструктора с нулевыми аргументами.

Ctrl + Space в затмении

введите описание изображения здесь

Ctrl + Space в IntelliJ

введите описание изображения здесь

В IntelliJ я не получаю информации о том, какие конструкторы SimpleTimeZoneесть.

После Enterв Затмении

введите описание изображения здесь

Я получаю ранее выбранный конструктор, заполненный предопределенными именами переменных. И я вижу тип каждого аргумента. С помощью Code Recommanders Eclipse угадывает правильный конструктор по предварительно определенным типам переменных в текущей области и заполняет конструктор этими переменными.

После Enterв IntelliJ ничего не происходит. Я получаю пустой конструктор. Я должен нажать, Ctrl + Pчтобы увидеть ожидаемые аргументы.

введите описание изображения здесь

passsy
источник
25

Если у вас есть курсор на метод, CTRL+SHIFT+Iпоявится всплывающее окно реализации метода. Если метод является interfaceметодом, то вы можете использовать стрелки вверх и вниз для циклического перебора реализаций:

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

Где | находится (например), где находится ваш курсор.

oxbow_lakes
источник
4
На самом деле в Eclipse (по крайней мере, в той версии, которую я использую), когда вы помещаете курсор на имя метода и нажимаете CTRL + T, вы получаете все дерево иерархии, от самого верхнего интерфейса до конечных реализаций, и можете перейти любому из них.
Юваль
2
В Eclipse вы также можете нажать Ctrl + клик по имени метода, чтобы перейти к определению / реализации метода (в зависимости от контекста)
qualidafial
8
Дело в том, что вы на самом деле не переходите к реализации. Это просто показано всплывающее окно, так же, как Javadoc и т. Д.
Jackrabbit
1
В Eclipse вы просто наводите имя метода с помощью Shift, чтобы открыть всплывающее окно с его реализацией
Victor
24

IntelliJ имеет несколько довольно продвинутых проверок кода (сравнимых, но отличающихся от FindBugs).

Хотя я серьезно скучаю по плагину FindBugs при использовании IntelliJ (интеграция Eclipse / FindBugs довольно крутая).

Вот официальный список CodeInspections, поддерживаемых IntelliJ

РЕДАКТИРОВАТЬ: Наконец, есть плагин findbugs для IntelliJ. Это все еще немного бета, но сочетание Code Inspections и FindBugs просто потрясающе!

Мо
источник
да, findbugs - один из немногих статических анализаторов кода, который действительно находит практические ошибки честного и доброго. :)
Epaga
У вас есть конкретный пример проверки кода? Какие вещи он может обнаружить?
Epaga
Еще одна ссылка о проверках: hamletdarcy.blogspot.com/2008/04/...
штат Миссури
8
Я считаю, что проверка кода IntelliJ находит больше ошибок, имеет полезные быстрые исправления, может выдавать предупреждения и исправлять строки по мере их ввода. (Вам не нужно сохранять файл и он не должен компилироваться). Эти тонкости делают более практичным исправление ошибок как можно скорее.
Питер Лори
16

Куда, куда, намного больше рефакторингов.

Том
источник
15

Одна вещь, которую я регулярно использую, это установка точки останова, но затем контроль того, что она делает. (На моей последней работе большинство остальных использовали Eclipse ... Я помню, что был удивлен, что никто не мог найти, как это сделать в Eclipse.)

Например, точка останова может не останавливаться, а просто записывать сообщение в консоль. Это означает, что мне не нужно засорять мой код «System.out.println (...)», а затем перекомпилировать.

jgindin
источник
2
Вы можете сделать это с условными контрольными точками в затмении, но это немного нахально .eg. правда
HaveAGuess
Я думаю, что intelliJ позволяет вам устанавливать более сложные числа посещений, не так ли?
Кимбалл Робинсон
3
Теперь проще найти в eclipse - он отображает условия в представлении контрольных точек (так что вы знаете, что они доступны). Вы можете разбивать счет, вводить произвольный код, например, System.out.println("here"); falseпечатать, но не разбивать (последний оператор - логическое выражение, определяющее, следует ли нам разбивать)
Скотт Стэнчфилд,
15

Есть много вещей, которые идея решает намного проще, или нет эквивалента:

  • Автозаполнение действий: ctrl+shift+aВы можете вызывать любое действие идеи с клавиатуры, не помня комбинацию клавиш ... Подумайте о gnome-do или запуске в окнах, и у вас есть идея! Также эта функция поддерживает сокращения CamelCasing;)

  • Полка: позволяет легко разделить некоторые части кода, а затем просмотреть их через средство просмотра различий.

  • Местная история: гораздо лучше управляемый и простой.

  • Аннотации и история SVN: проще проверять, а также вы можете легко просматривать историю только для такой части всего исходного файла.

  • Автозаполнение везде, например, в окне оценки выражения и состояния точки останова.

  • Интеграция Maven ... намного, намного проще и хорошо интегрирована.

  • Рефакторинг гораздо ближе к руке, такой как вставка циклов, обтекание / приведение, переименование и добавление переменных.

  • Найти много мощных и хорошо организованных. Даже в больших проектах

  • Гораздо стабильнее для работы с несколькими ветками большого проекта одновременно (как бывший исправитель 1.5Gb по источникам веток и необходимость одновременной работы в них, идея показала его отличные возможности)

  • Более чистый и простой интерфейс ...

  • И проще в использовании только с клавиатурой, избавляя от необходимости использовать мышь для множества простых операций, экономя ваше время и давая вам больше внимания к коду ... где это важно!

И теперь, будучи открытым исходным кодом ... пользовательская база Idea будет расти в геометрической прогрессии.

Serginho
источник
2
Автозаполнение действий = быстрый доступ в затмении; Я не понимаю, как местная история может быть легче, чем при затмении ...
Скотт Стэнчфилд
Как указал Скотт, это Ctrl + 3. Помощник по содержимому также доступен при оценке выражений и установке условных точек останова. Я не уверен, насколько ближе под рукой упомянутые рефакторинги, чем то, что предлагают Ctrl + 1 и Ctrl + 2. Большая часть остального звучит субъективно.
nitind
14

Структурный поиск и замена.

Например, найдите что-то вроде:

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

Где $ string $ это литерал, а $ expr $ это выражение типа my.package.and.Class, а затем заменить на:

  $expr$.inspect($string$);
Darron
источник
1
На самом деле вы можете искать тип приведений / () - оператор / в вашем коде, что практически невозможно при обычном текстовом поиске
Карл
13

Мое время может быть немного с точки зрения этой темы, но я просто должен был ответить.

Я большой поклонник затмений - использую его с первого появления. Друг сказал мне тогда (10+ лет назад), что это будет игрок. Он был прав.

Однако! Я только начал использовать IntelliJ, и если вы не видели или не использовали списки изменений - вы упускаете возможность попасть на небеса программирования.

Возможность отслеживать мои измененные файлы (в моей ветке разработки ala clearcase) была тем, что я искал в плагине для Eclipse. Intellij отслеживает все ваши изменения за один коммит, чрезвычайно легко. Вы можете изолировать измененные файлы с помощью пользовательских списков. Я использую это для файлов конфигурации, которые должны быть уникальными локально, но постоянно помечаются, когда я синхронизирую или сравниваю с репозиторием - перечисляя их в списке изменений, я могу отслеживать их, но аккуратно убрать их, чтобы я мог сосредоточиться на реальных дополнениях Я делаю.

Также есть плагин Commit Log, который выводит текст всех изменений для тех SCCS, которые не интегрированы с вашим программным обеспечением для отслеживания ошибок. При вставке журнала в историю работы заявки фиксируются файлы, их версия, дата / время и ветка / теги. Это чертовски круто.

Могу поспорить, что все это может быть поддержано с помощью плагинов (или будущих улучшений) в Eclipse; тем не менее, Intellij делает это бризом.

Наконец, я очень рад общепринятой любви к этому продукту - нажатия клавиш, так что это больно, но весело.

Дж Крейг
источник
Мне действительно нравится функция списков изменений. Это похоже на независимый от VCS набор патчей / полок, с которыми вы можете работать независимо, и которые могут быть связаны с ними, также могут быть связаны с вашей системой отслеживания проблем. У вас есть локальная история (например, мини VCS), отслеживающая ваши изменения, когда вы работаете почти на уровне детализации линии, так что вы можете вернуться почти к любому моменту времени, если вам нужно. Также при переключении задач все IDEA запоминают состояние IDE для нового задания и восстанавливают открытые файлы, положения окон и т. Д.
sylvanaar
Changelists на самом деле особенность SVN. IntelliJ позволяет вам видеть и управлять ими там, где плагины Eclipse SVN этого не делают.
Нил Трэфт
12

Отладчик IntelliJ имеет очень удобную функцию, называемую «Evaluate Expression», которая намного лучше, чем подвеска Eclipses. У этого есть полное завершение кода, и я полагаю, что это вообще "более полезно".

Пн.
источник
8
Eclipse также имеет оценщик выражений, который предлагает завершение кода. Перейти к окну -> Показать представление -> Отладка -> Показать Когда остановлено на точке останова в отладчике, вы можете оценить произвольные выражения в этом представлении отображения.
лаз
11

Ну, для меня это тысячи крошечных вещей. Некоторые макросы, макет GUI в целом в Eclipse я нахожу ужасным. Я не могу открыть несколько проектов в разных окнах в Eclipse. Я могу открыть несколько проектов, но тогда система, основанная на представлении, меняет на меня кучу вещей, когда я переключаю файлы. Проверки кода IntelliJ кажутся лучше. Его всплывающие подсказки для исправления общих проблем - это хорошо. Множество простых в использовании вещей, таких как боковая панель, где я могу навести курсор на горячую точку, и она расскажет мне о каждом реализующем подклассе метода или метода, который я реализую, и откуда.

Всякий раз, когда мне приходилось использовать или наблюдать за тем, как кто-то использует, в Eclipse кажется, что они могут делать большинство вещей, которые я могу делать в IntelliJ, но это отнимает у них больше времени и выглядит более грубым.

Крис Кессель
источник
9

Введите переменную. ( Ctrl+Alt+Vв Windows, Cmd+Alt+Vв OSX)

Допустим, вы вызываете метод, service.listAllPersons() Hit Ctrl+Alt+Vи Enter, и вставляется переменная для возвращаемого значения из вызова метода:

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

Сохраняет ваш ввод, и вам не нужно проверять тип возврата метода, который вы вызываете. Особенно полезно при использовании дженериков, например

new ArrayList<String>()

[ввести переменную]

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

(конечно, вы можете легко изменить имя переменной перед нажатием Enter)

rlovtang
источник
13
Это Ctrl + 2 L в Eclipse.
Микке
2
Хорошо, я не знал, и ни один из пользователей Eclipse, о котором я спрашивал. Эта функция была частью Eclipse в течение длительного времени?
rlovtang
3
Довольно долго ... Если вы используете quickfix control+1(самая очевидная привязка клавиш в мире, а?), Он предлагает действия, которые вы можете сделать в текущей позиции курсора, аналогично намерениям в IDEA. Например, в нем перечислены «назначить локальный», «назначить поле» и другие параметры. control+2, Lэто ярлык для него.
Скотт Стэнчфилд
В eclipse, как только вы выбрали ctrl+2, L, вы все равно можете изменить тип создаваемой переменной либо на правый тип (по умолчанию), либо на любой супертип: тип переменной можно выбрать с помощью TAB.
Gaetan
8

IntelliJ имеет поддержку intellisense и рефакторинга из кода в документы jspx.

krosenvold
источник
Не могли бы вы уточнить, что вы подразумеваете под intellisense? Eclipse также имеет автозаполнение, но вы имеете в виду что-то еще?
Epaga
Eclipse не имеет автозаполнения в документах jspx AFAIK. В обычном JSP да, JSPX нет.
krosenvold
3
Он означает, что если у вас есть JSP, который ссылается на свойство в POJO, и вы переименовываете свойство, ваш JSP обновляется правильно. Поддержка IntelliJ JSP запускает Eclipse / WTP!
Эриксон
2
Я не могу заставить автозавершение Eclipse работать в выражениях JSP EL, точка. JSP или JSPX, это не имеет значения, это просто невежественно. IntelliJ обрабатывает tagx и jspx так, как вы ожидаете: как тег или файл jsp.
Эриксон
Приятно видеть, как пользователи затмений голосуют за то, что им не нравится. Если мои наблюдения неверны, пожалуйста, ответьте с комментарием. Подскажите как это сделать в затмении!
krosenvold
7

Для меня это поддержка IDEA maven, особенно в 9-й версии. Синхронизация проекта на лету с моделью «на лету» просто фантастическая и делает разработку приятной.

МДМА
источник
6

Intellij имеет гораздо лучший плагин SVN, чем Subversive или Subclipse, и он работает! Время, которое мы потратили на слияние исходных файлов с использованием Eclipse, не имеет значения. Это не проблема с IntelliJ, потому что плагин поможет вам гораздо больше.

Также плагин Subclipse ненадежен - у нас регулярно бывают случаи, когда плагин не думает, что какой-либо код был зарегистрирован в SVN другими разработчиками, но есть - сервер CI обработал их!

Тони Раддок
источник
Точно, поддержка svn превосходна в идее, в то время как subclipse / subversive ошибочны, неуклюжи и не очень надежны; то же самое касается git, на самом деле я не помню разумной интеграции git для eclipse, и intelliJ справляется с этим очень хорошо
Kamil Mikolajczyk
Лично я думаю, что вы должны выполнять весь контроль версий в командной строке, даже если ваша IDE может это сделать. Когда вы сделаете это в командной строке, тогда вы узнаете, как сделать это позже, что действительно может ускорить вашу разработку. Иногда мои коллеги просят меня помочь с subclipse или плагином git eclipse, я просто говорю им прекратить использовать его и сделать это в командной строке.
msknapp
4

VIM Emulator. Этот плагин обеспечивает почти полную эмуляцию vi / vim / gvim при редактировании файлов в IDEA. Поддерживаются следующие функции:

  • Клавиши движения
  • Удаление / Изменение
  • Команды режима вставки
  • Метки
  • Регистры
  • VIM отменить / повторить
  • Команды визуального режима
  • Некоторые команды Ex
  • Некоторые: установить параметры
  • Полные регулярные выражения VIM для поиска и поиска / замены
  • макрос
  • Diagraphs
  • История командной строки
  • История поиска
  • Jumplists
  • VIM помощь

некоторые комментарии об этом плагине от http://plugins.jetbrains.net/plugin/?id=164

Я не могу видеть, чтобы когда-либо возвращался к любому другому идею из-за этого плагина .. Лучшее из обоих миров ... Удивительно !. это то, чего мне не хватало во всех IDE.
Maciek Kreft
источник
Я согласен, я не смог бы жить без моего плагина IdeaVim, однако, если честно, есть плагин Vim для Eclipse, метко названный VimPlugin ( vimplugin.org )
Кит
3
Vwrapper - еще один плагин Vim Eclipse. И это работает даже лучше, чем плагин Idea Vim (повторные ключи работают). Vwrapper не обрабатывает поиск и замену из командной строки, хотя (хотя поиск работает отлично) и не позволяет определять макросы в интерактивном режиме. Договорились, что поддержка Vim необходима в IDE. Не использовал бы Eclipse или Idea без него!
Брент Фауст
1
Viableplugin.com очень хорошо для затмения. Я также использую intellij и иногда обнаруживаю, что intellij иногда зависает в редакторе и в некоторых случаях не отвечает на команды.
Джон Лемп
3

Несколько других вещей:

  • распространять параметры / исключения при изменении сигнатуры метода, что очень удобно для обновления методов глубоко внутри стека вызовов
  • Проверка кода SQL в строках, переданных в качестве аргументов для вызовов jdbc (и всего нового встроенного языка внедрения)
  • реализовано в / перезаписано в значках для интерфейсов и классов (и их методов) и для интеллектуальной реализации навигации (Ctrl + Alt + Click или Ctrl + Alt + B)
  • связь между интерфейсами EJB 2.1 и классами компонентов (включая поддержку рефакторинга); старый, но все еще очень ценный при работе над старыми проектами
Андрей
источник
2

IntelliJ делает две вещи, которые Eclipse не делает, которые очень ценны для меня:

Метод сепараторы: те слабые серые линии между методами сделать код гораздо более удобным для чтения

Сглаживание текста: код выглядит так красиво в IDE

yalestar
источник
2
Я обнаружил, что сглаживание IntelliJ намного хуже, чем Eclipse. Это было несколько версий IntelliJ назад, однако. Это было улучшено?
лаз
Я использую пропорциональный шрифт Verdana, который, мне кажется, выглядит лучше, чем сглаживание.
Питер Лори
2

Одна очень полезная функция - возможность частично построить проект реактора Maven, чтобы в него входили только те детали, которые вам нужны.

Чтобы сделать это немного понятнее, рассмотрим случай, когда коллекция файлов WAR со множеством общих ресурсов (например, JavaScript, файлы конфигурации Spring и т. Д.) Распределяется между ними с использованием метода наложения., Если вы работаете над какой-либо веб-страницей (запущенной в Jetty) и хотите изменить часть оверлейного кода, хранящегося в отдельном модуле, то обычно вы ожидаете, что вам придется остановить Jetty, запустить сборку Maven, запустить Jetty снова и Продолжить. Так обстоит дело с Eclipse и практически со всеми другими IDE, с которыми я работал. Не так в IntelliJ. Используя настройки проекта, вы можете определить, какой аспект какого модуля вы хотите включить в фоновую сборку. Следовательно, вы получите процесс, который выглядит безупречно. Вы вносите изменения практически в любой код проекта, и он сразу становится доступным после обновления браузера.

Очень аккуратно и очень быстро.

Я не мог себе представить кодирование внешнего интерфейса в чем-то вроде YUI с резервированием на DWR / SpringMVC без него.

Гэри Роу
источник
2

Преамбула к моему ответу: мое использование Eclipse ограничено. Нам нужна была Java IDE для работы как на Windows, так и на Mac, и порт Mac замедлялся с каждым днем. Это было много лет назад, и я уверен, что теперь все в порядке. Но это то, что заставило нас перейти на IntelliJ, и мы были рады этому.

Теперь мой ответ: одна большая разница, о которой я еще не упоминал, заключается в том, что техническая поддержка лучше с IntelliJ / Jet Brains. Мы отправляем электронное письмо в JetBrains и получаем окончательный ответ менее чем за час. Поиск ответов на проблемы Eclipse приводит к обычным ответам «Ты глупый идиот» (обычно небольшое количество ответов) вместе с гораздо большим количеством проницательных, полезных ответов. Но чтобы получить реальный ответ, нужно немного разобраться.

Джим додд
источник
Затмение с открытым исходным кодом. Никто не платит за ответы на вопросы или исправление ошибок. Купите коммерческую среду разработки на основе Eclipse, например MyEclipse, и получите поддержку за свои деньги. Быстрая статистика: я сообщил JetBrains 56 ошибок, 23 из них закрыты; из 65 сообщений об Eclipse 33 закрыты. Единственное отличие состоит в том, что JetBrains исправляет ошибки немного быстрее, чем Eclipse.
Виктор
2

То, что я все время использую в IntelliJ, - это рефакторинг, когда я печатаю. Я переписал классы из распечатки (первоначально написанной в Eclipse), используя обе IDE, и я использовал примерно на 40% меньше нажатий клавиш / щелчков мыши, чтобы написать те же классы в IntelliJ, что и Eclipse.

Я не хотел бы использовать Eclipse, пока они не поддерживают столько же рефакторинга с неполными частями кода.

Вот более длинный список возможностей IntelliJ 8.0 / 8.1 [ http://www.jetbrains.com/idea/features/index.html]

оборота Питер Лоури
источник
2

Есть одна вещь, что IntelliJ делает намного лучше, чем Eclipse, и это пустые карманы!

Однако я предпочитаю использовать его, и одним из его больших преимуществ по сравнению с Eclipce является то, как он синхронизируется с файловой системой, для больших проектов и медленных компьютеров (да, в рабочих средах ПК намного медленнее, чем у нас дома), кажется, Eclipse бороться, где IntelliJ кажется более быстрым, хотя и с более медленным начальным временем индексации.

Версия IntelliJ Community, очевидно, делает его бесплатным, но вскоре вы захотите, чтобы этот дополнительный рефакторинг и приятные маленькие вкусности не вошли в версию CC.

На мой взгляд, это, как правило, лучший пользовательский опыт, но стоит ли вопрос стоимости, это вопрос для каждого разработчика, чтобы ответить на себя.

Но давайте будем благодарны, что у нас есть до трех отличных IDE для Java прямо сейчас, и NetBeans постоянно улучшается.

Шон Вейдер
источник
3
IntelliJ Ultimate Edition действительно не бесплатен, но как разработчик я использую свою среду разработки примерно от 8 до 10 часов в день. Так что я не вижу его разумную цену как недостаток !!
Ромен Линсолас
2

Анализ потока данных : межпроцедурный анализ обратного потока и анализ прямого потока, как описано здесь . Мой опыт основан на Community Edition, которая довольно хорошо анализирует потоки данных. Он потерпел неудачу (отказался что-либо делать) в нескольких случаях, когда код очень сложный.

Ville Laitila
источник
2

Прежде всего я люблю интеллидж. Есть по крайней мере сто особенностей, которые есть в этом затмении. Я лучше говорю о надежности и интеллекте, которые ни одна гипербола не может описать, когда речь заходит о рефакторинге, переименовании, перемещении и других, которые уже были упомянуты.

НО, есть одна вещь, которую intellij не позволяет, что делает затмение. Он не позволяет запускать сразу несколько проектов под одним и тем же vm.

Когда у вас есть отдельные проекты для front, middle, core, agent..etc, где они все должны взаимодействовать друг с другом, вы не можете быстро изменять и отлаживать одновременно, афаик. Единственный способ справиться с этим в настоящее время - использовать ant-скрипты для развертывания и обновления jar-файлов в зависимых проектах или использовать maven.

Eclipse позволяет отлаживать несколько проектов в одном экземпляре ide vm.

blicket
источник
4
Это должно было быть опубликовано в Things Eclipse может сделать то, что IntelliJ не может , а не наоборот.
Нил Трафт
IntelliJ делает это без каких-либо проблем. Этот ответ просто неверен.
Инженер-программист