Скрытые возможности Eclipse [закрыто]

97

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

Том

DIA Tom
источник

Ответы:

139

Не забудьте Ctrl+ Shift+ L, который отображает список всех комбинаций горячих клавиш (на случай, если вы забудете любую из перечисленных здесь).

Бен
источник
1
Для новичков, использующих Mac, используйте кнопку COMMAND вместо CTRL для всех команд, перечисленных здесь. Мне потребовалось время, чтобы понять это. Это может кому-то помочь.
500865
119

Ctrl-2 что-то

Похоже, никто не упомянул Ctrl-2 L (назначить новой локальной переменной) и Ctrl-2 F (назначить новому полю), они изменили способ написания кода.

Раньше я набирал, скажем (| - расположение курсора):

Display display = new |

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

new Display()|

и нажмите Ctrl-2 L, в результате получится:

Display display = new Display()|

Это действительно ускоряет работу. (Ctrl-2 F делает то же самое, но назначает новое поле, а не новую переменную.)

Еще один хороший ярлык - Ctrl-2 R: переименовать в файл. Это намного быстрее, чем рефакторинг переименования (Alt-Shift-R) при переименовании таких вещей, как локальные переменные.

На самом деле я пошел на страницу настроек настройки ключей и назначил все виды дополнительных быстрых исправлений для Ctrl-2-something. Например, теперь я нажимаю Ctrl-2 J, чтобы разделить / объединить объявление переменной, Ctrl-2 C, чтобы извлечь внутренний класс в верхний уровень, Ctrl-2 T, чтобы добавить объявление throw в функцию, и т. Д. Есть множество назначаемых быстрых исправления, выберите свои любимые и назначьте их сочетаниям клавиш Ctrl-2.

Шаблоны

Еще один мой любимый вариант в моем шаблоне «npe», определенный как:

if (${arg:localVar} == null)
    throw new ${exception:link(NullPointerException,IllegalArgumentException)}("${arg:localVar} is null");

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

См. Другие полезные шаблоны на сайте www.tarantsov.com/eclipse/templates/ . Я не буду перечислять их здесь, потому что их много и я часто добавляю новые.

Завершение

Несколько приемов завершения кода:

  • Поддержка случая верблюда упоминается в другом ответе: введите cTM, получите currentTimeMillis
  • конструктор по умолчанию: в объявлении класса без конструктора по умолчанию нажмите Ctrl-Space, первым выбором будет его создание
  • перегрузка: в объявлении класса начните вводить имя метода, который вы можете перегрузить, Ctrl-пробел, выберите один
  • Создание геттера / сеттера: введите «get», Ctrl-Space, выберите геттер для создания; то же самое с «is» и «set»

Назначить новому полю

Вот как я добавляю поля.

  1. Если у вас еще нет конструкторов, добавьте их. (Ctrl-пробел в любом месте объявления класса, выберите первое предложение.)

  2. Добавьте аргумент (| - позиция курсора):

    public class MyClass {
        public MyClass(int something|) {
        }
    }
  3. Нажмите Ctrl-1, выберите «назначить новому полю». Ты получаешь:

    public class MyClass {
        private final Object something;
        public MyClass(Object something) {
            this.something = something;
        }
    }
  4. При необходимости добавьте проверку нулевого указателя (см. Шаблон «npe» выше):

    public class MyClass {
        private final Object something;
        public MyClass(Object something) {
            npe|
            this.something = something;
        }
    }

    Нажмите Ctrl-Пробел, получите:

    public class MyClass {
        private final Object something;
        public MyClass(Object something) {
            if (something == null)
                throw new NullPointerException("something is null");
            this.something = something;
        }
    }

Отличная экономия времени!

Андрей Таранцов
источник
2
CTRL + 2, F и CTRL + 2, L теперь потрясает мой мир. Спасибо
Джошуа Маккиннон
14
если бы только в вашем шаблоне использовались фигурные скобки ...
rsp
3
@rsp Извините, я ненавижу вставлять ненужные фигурные скобки. Кстати, в Eclipse есть функция очистки кода, которая может заставить ваш код использовать фигурные скобки любого стиля (всегда или только при необходимости), и он может применять его при сохранении.
Андрей Таранцов
81

ctrl-shift-r и его приятель, ctrl-shift-t, чтобы открыть ресурс или тип соответственно. Ресурсы включают в себя все файлы в ваших открытых проектах (включая файлы, отличные от java), а типы включают java-типы либо в ваших проектах, либо в библиотеке, включенной в проекты.

пкадинг
источник
6
ctrl + shift + r удобен также для открытия типов, когда вы только что открыли проект, поскольку он не требует индексации.
boutta
Хорошая точка зрения. ctrl-shift-r не будет работать для открытия типов, которые находятся в ссылочных библиотеках jar; он будет работать только для отдельных файлов (ресурсов) в вашем проекте.
pkaeding
Это, безусловно, самая полезная функция в Eclipse, которая не так хорошо реализована (т.е. работает медленно) в Netbeans.
Rahul
60

Crtl+ 1мой любимый. Быстрые исправления красных волнистых линий.

Он также находится в меню «Правка» -> «Быстрое исправление».

Джей Р.
источник
2
Ctrl +. (точка) переводит вас к следующей ошибке (красный / желтый волнистый) .... С этими двумя вы находитесь в режиме исправления ошибок. : D
st0le 01
59

Ctrl+ Shift+ Oдля организации импорта, которая красиво отформатирует их, удалит ненужный импорт и добавит отсутствующий импорт.

Майк Стоун
источник
6
На днях я заметил, что это можно использовать для организации всего проекта или его частей, а не только одного файла, как я ожидал. Очень полезно.
Антти Киссаниеми,
Я попробую это сделать, но меняет ли это import java.util. * В импорт, который вам действительно нужен?
Томас Оуэнс,
Он может изменить импорт. *, Если вы хотите - я считаю, что он настраивается (настройка количества классов для импорта, прежде чем он переключится на. *).
Даррен Гривз
Эта небольшая комбинация клавиш была одной из основных причин, по которой я изначально начал использовать Eclipse. Так полезно!
Рич Адамс,
11
@boncey да, это можно настроить. Обратите внимание, что начиная с Eclipse3.3 вы можете попросить Eclipse автоматически организовать импорт во время сохранения (Java> Editor> Save actions)
Romain Linsolas
48

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

Нажмите Ctrl-J, затем начните печатать. Используйте кнопки вверх / вниз, чтобы найти предыдущие / следующие экземпляры того, что вы набрали.

Ctrl-Shift-J выполняет поиск в обратном направлении.

РодеоКлоун
источник
9
в том же ключе выберите слово и нажмите ctrl-k или ctrl-shift-k, и он будет перебирать выбранные строковые вхождения
Newtopian
@Newtopian - ctrl-k - один из самых полезных ярлыков для быстрого поиска ссылок в файле.
RodeoClown 09
37

Введите «syso» и нажмите Ctrl+, Spaceчтобы развернуть его до System.out.println ().

Трес под рукой.

izb
источник
1
В соответствии с этим: syse будет расширен до System.err.println ();
guerda
Можно настроить любую комбинацию клавиш, проверьте мой ответ ниже
Равиша
31

CTRL+ 3вызывает список любой команды меню с опережающим вводом.

yalestar
источник
+1 Я люблю контроль 3!
курица и бисквит
29
  • CTRL-SHIFT-g: находит случаи использования метода или поля под курсором, что абсолютно необходимо для понимания кода
  • CTRL-F6: перемещаться между списком открытых окон редактора, если вы просто наберете его один раз и отпустите, вы переключитесь обратно в предыдущее окно редактора, последовательное выполнение этого - хороший способ перемещаться вперед и назад
  • CTRL-t: в классе или методе покажет вам иерархию типов, что очень полезно для поиска реализаций метода интерфейса, например
Борис Терзич
источник
1
Я использую 5-кнопочную мышь и сопоставляю F6 с одной из кнопок для быстрой навигации.
s_t_e_v_e
Таким образом, мышки с несколькими кнопками используются недостаточно. Это хорошая идея. Я просто боюсь, что не научусь этой привычке, и если бы я это сделал, у меня были бы проблемы с переключением между машиной (рабочий стол, рабочий ноутбук, домашний компьютер и т. Д.)
Борис Терзич
1
Я знаю, что могу изменить это, но я бы хотел, чтобы CTRL-F6 был чем-то другим по умолчанию. Я не могу ударить его одной рукой.
Альберт
1
F4 также по умолчанию открывает иерархию типов. Красиво и удобно размещено рядом с F3, которая позволяет перейти к определению того, что находится под курсором.
Майк Дэниелс
5
Очень важно переназначить Ctrl-F6 на Ctrl-Tab. Это очень естественно для понимания, так как это все равно что менять вкладки в браузере.
espinchi
28

Щелчок по типу возвращаемого значения в объявлении метода выделяет все точки выхода из метода.

например:

1: public void foo()
2: {
3:   somecode();
4:    if ( blah ) return;
5:
6:    bar();
7: }

нажатие на void выделит возврат в строке 4 и закрытие } в строке 7.

Обновление : это работает даже для блоков try {} catch. Если вы поместите курсор на исключение в блоке catch, и eclipse выделит возможные методы, которые могут вызвать это исключение.

Тревор Харрисон
источник
Теперь он говорит мне :) полезно ... особенно при чтении длинных ужасных методов ...
dstibbe
24

Автозавершение кода поддерживает CamelCase, например, при вводе CWARбудет отображаться результат для ClassWithAReallyLongName. Начните использовать эту функцию, и вы больше никогда не наберете длинное имя класса.

(части скопированы из другого ответа, потому что я думаю, что ответы с одной подсказкой / советом лучше всего подходят для опроса)

Кевин Вонг
источник
23

Alt-Up Arrow перемещает текущий выбор на строку вверх, Alt-Down Arrow перемещает его вниз. Я также все время использую Alt-Shift-Up / Down Arrow. Ctrl-K и Ctrl-Shift-K очень удобны для поиска следующего / предыдущего вхождения текущего выделения (или последнего поиска, если ничего не выделено).

Эриксон
источник
22

Есть возможность автоматически поставить открывающую фигурную скобку и точку с запятой в «правильное» положение. Вам нужно будет включить это - Выберите Окно / Настройки и введите «скобку» в поле поиска - должно быть легко найти (на этом компьютере нет затмения). Эффект:

  • Ввод точки с запятой в любом месте строки поместит ее в этот конец строки (как в word / openoffice: Backspace, если вы хотите, чтобы она находилась в исходном месте)
  • При вводе открывающей фигурной скобки, когда вы просто внутри другой пары фигурных скобок, она будет помещена в конец этой строки - как в этом примере

("|" - курсор):

if(i==0|)

ввод "{" сейчас приведет к

if(i==0) {|
Олаф Кок
источник
20

Hippie expand / Word Complete, afaik, вдохновленный Emacs: автозаполнение любого слова в любом редакторе на основе других слов в этом файле. Автозаполнение внутри строковых литералов в коде Java, в файлах xml, везде.

Alt + /

awi
источник
2
На немецкой клавиатуре это Alt + Shift + 7, потому что / стоит на 7.
guerda
Вы также можете изменить поведение Ctrl-Space, чтобы включить расширение текста в стиле Alt /
Юэн Картрайт,
17

Alt-Shift-R означает переименование , а не рефакторинг. Рефакторинг - это более общий термин (как он определен в книге ).

Тем не менее, это один из моих любимых рефакторингов. Другие включают:

Извлечь локальную переменную особенно полезно, когда я не помню (или не хочу напечатать) тип результата метода. Предполагая, что JdbcTemplate createJdbcTemplate()в вашем классе есть метод , напишите такой код:

void someQuery() {
    createJdbcTemplate()
}

Выберите выражение createJdbcTemplate(), нажмите Alt-Shift-L, введите имя переменной и нажмите Enter.

void someQuery() {
    JdbcTemplate myTemplate = createJdbcTemplate();
}
Антти Киссаниеми
источник
5
обратите внимание, что переименование Alt-Shift-R выполняет «переименование рефакторинга», а не «переименование в файле»
Скотт Стэнчфилд,
1
Чтобы присвоить результат метода переменной, вы также можете использовать быстрое исправление (Ctrl-1), даже не выбирая вызов метода.
Йорн
17

CTRL+ D- удалить текущую строку

марко
источник
Немного раздражает то, что Eclipse остановился на этом ярлыке, но NetBeans остановился на ctrl-e.
Тим Гилберт,
17

Безусловно, Ctrl+, Qчтобы перейти к месту последнего редактирования. Это очень полезно сразу после того, как вас прервали по телефону, начальнику или другим людям.

серого
источник
15

Ctrl+ Shift+ M: изменяет статический метод или ссылку на статический атрибут класса на статический импорт.

Перед

import X;

...
X.callSomething();

После

import static X.callSomething;

...
callSomething();
Абхинав Саркар
источник
Хороший! Я должен попробовать это. Вы знаете, есть ли ярлык и для другого пути?
Йорн
15

Alt+ Shift+ UpСтрелка увеличивает выделение. Alt+ Shift+ Downделает наоборот.

jodonnell
источник
15

Alt+ Upили Alt+ Downдля перемещения строк

Кевин Вонг
источник
Также перемещает несколько строк, если выбрано, и исправляет отступы на лету.
Harold L
14

Лучшего еще никто не назвал. Щелкните имя класса или метода и нажмитеCtrl + T.

Вы получаете быструю иерархию типов. Для имени класса вы видите всю иерархию классов. Для имени метода вы получаете иерархию, показывающую суперклассы и подклассы, с реализациями этого метода, отличными от абстрактных упоминаний, или классов, которые не упоминают метод.

Это очень важно, когда вы находитесь в объявлении абстрактного метода и хотите быстро увидеть, где он реализован.

Джим Гаррисон
источник
Ха, собирался добавить это - так полезно при работе с базой кода, которая использует интерфейсы для всего!
Даррен Гривз
просто в классе нажмите F4, он перечисляет иерархию во вкладке
Равиша
13

F3 был моим любимым, открывает определение выбранного элемента.

Ctrl+ Shift+ Rимеет интересную особенность: при поиске вы можете использовать только прописные буквы верблюда из класса (например, ввод CWAR покажет результат для ClassWithAReallyLongName).

Alt+ Shift+ W> Package Explorer упрощает жизнь при просмотре больших проектов.

timbonicus
источник
1
Этот трюк с верблюжьим случаем также работает при написании кода. Введите CWAR в редакторе, затем нажмите CTRL-пробел, и он расширится до ClassWithAReallyLongName. Я собираюсь добавить это как отдельный совет, если его еще нет.
Даррен Гривз
Уловка Camel Case также работает в диалоговом окне Ctrl + Shift + T, и я считаю его настолько полезным, что я больше не навиагаю на классы, если знаю их имена. Это также одна из тех уловок, которые заставляют вашего партнера воскликнуть: «Ух ты! Как ты это сделал?» когда вы соединяетесь.
banjollity
Буквально минуту назад мне было интересно, есть ли ярлык, который мог бы вызвать проводник пакетов без необходимости нажимать на свернутый значок. Спасибо за это :-)
guyumu
Альтернатива для F3: Control + щелкните класс, функцию или переменную, чтобы перейти к их объявлению. Это также работает для тегов Javadoc @link; интерактивные элементы подчеркиваются при наведении на них курсора.
cthulhu,
10

Уловка без сочетания клавиш - использовать наборы фиксации в представлении Team-> Synchronize для организации изменений перед фиксацией.

Установите набор изменений по умолчанию, и все изменения, которые вы вносите в файлы, будут помещены в этот набор, что позволит легко увидеть, что вы изменили во время работы над определенным дефектом / функцией, а также другие изменения, которые вы сделали во время тестирования и т. Д.

РодеоКлоун
источник
10

CTRL + ПРОБЕЛ, для чего угодно и где угодно.

Сгенерируйте геттеры и сеттеры.

Создание конструкторов с использованием полей

Метод извлечения ...

Рефакторинг-> Переименовать

CTRL + O для быстрого наброска. CTRL + O + CTRL + O для унаследованного контура.

F4 для отображения иерархии типов

Откройте иерархию вызовов, чтобы отобразить, откуда вызывается метод.

CTRL + SHIFT + T, чтобы открыть тип Java

CTRL + SHIFT + R, чтобы открыть любой ресурс.

ALT + влево или вправо для перехода вперед или назад по местам редактирования в ваших документах (простая навигация)

Переопределить / реализовать методы, если вы знаете, что собираетесь использовать множество методов (в противном случае CTRL + SPACE лучше для выбора по одному.

Рефакторинг-> Извлечь интерфейс

Рефакторинг-> Подтянуть

Рефакторинг-> Нажать

CTRL + SHIFT + O для организации импорта (при вводе общего имени класса, такого как Map, нажатие CTRL + SPACE и затем выбор соответствующего класса импортирует его непосредственно для вас).

CTRL + SHIFT + F для форматирования (хотя встроенный форматировщик Eclipse может быть немного мертвым для длинных строк кода)

РЕДАКТИРОВАТЬ: О да, некоторая отладка:

F5: Войдите (покажите мне подробности!)

F6: Перейди (я тебе верю, переходим к следующей части ...)

F7: Выйди вон (я думал, что меня волнует этот метод, но оказалось, что нет, вытащите меня отсюда!)

F8: Возобновить (идти, пока не будет достигнута следующая точка останова)

CTRL + SHIFT + I: проверить выражение. CTRL + SHIFT + I + CTRL + SHIFT + I: создать контрольное выражение для проверяемого выражения.

Условные точки останова: щелкните точку останова правой кнопкой мыши, и вы можете установить возникающее условие, которое вызывает прерывание выполнения программы (здесь доступна контекстная помощь с Ctrl + пробел!)

F11 - последняя запущенная отладка (приложение)

CTRL + F11 - запустить последнее запущенное (приложение)

MetroidFan2002
источник
10

Точка останова при исключении

Eclipse позволяет вам устанавливать точки останова в зависимости от того, где возникает исключение.
Вы получаете доступ к опции через "j!" alt текст http://help.eclipse.org/stable/topic/org.eclipse.jdt.doc.user/images/org.eclipse.jdt.debug.ui/elcl16/exc_catch.png значок в окне отладки.

альтернативный текст http://blogs.bytecode.com.au/glen/2007/04/06/images/2007/AddExceptionWindow.png

В официальной справочной теме « Добавление точки останова на исключение Java » есть дополнительная информация.

  • Параметр «Неперехваченное исключение» предназначен для приостановки выполнения, когда исключение того же типа, что и точка останова, выбрасывается в неперехваченном месте.
  • Параметр Caught Exception должен приостановить выполнение, когда исключение того же типа, что и точка останова, выбрасывается в захваченном месте.
  • не забудьте приостановить точку останова по исключению в подклассе этого исключения :
    чтобы приостановить выполнение при обнаружении подклассов типа исключения.
    Например, если точка останова для исключения RuntimeExceptionнастроена для приостановки в подклассах, она также будет запускаться файломNullPointerException .

альтернативный текст http://help.eclipse.org/stable/topic/org.eclipse.jdt.doc.user/reference/breakpoints/images/ref-breakpoint_suspendsubclass.PNG

VonC
источник
9

Ctrl+ Alt+ Hк методу, чтобы получить для него иерархию вызовов. Быстрый способ узнать, откуда он вызван.

Claes Mogren
источник
9

Ctrl+ Alt+ UPили Ctrl+ Alt+ DOWNдля копирования строк

Кевин Вонг
источник
14
Если только он не будет перехвачен вашим видеодрайвером, и вы не получите перевернутый экран.
Адам Яскевич
ура, черт возьми,
8

Alt+ Shift+ Rдля рефакторинга и переименования.

Райан Гест
источник
1
Alt + Shift + R - это Refactor-> Rename. В Eclipse есть несколько других сокращений рефакторинга.
MetroidFan2002,
7

Вот моя коллекция самых полезных сочетаний клавиш для Eclipse 3:

Eclipse 3 Favorite Keyboard Shortcuts. 
by -=MaGGuS=-

Navigate:

   Ctrl + Shift + L  Shows useful keyboard shortcuts in popup window 
   Ctrl + H  Search.
   Ctrl + K  Goes to next search match in a single file. Shift + Ctrl + K  goes to previous match.
   F3 - Goes to declaration of something. Same as Ctrl + Click.
   Ctrl + Shift + G - Use this on a method name or variable. It will search for references in the code (all the code) to that item.
   Ctrl + O  Shows outline view of the current class or interface.
   Ctrl + T  Shows class hierarchy of the current class or interface. F4  shows the same in separate tab.
   Ctrl + Shift + T - Open Type. Search for any type globally in the workspace.
   Ctrl + Shift + R  Open Resource. Search for any file inside workspace.
   Ctrl + J  Incremental search. Similar to the search in firefox. It shows you results as you type. Shift + Ctrl +J - Reverse incremental search.
   Ctrl + Q  Goes to the last edit location.
   Ctrl + Left|Right  Go Back/Forward in history.
   Ctrl + L  Go to line number.
   Ctrl + E  This will give you a list of all the source code windows that are currently open. You can arrow up or down on the items to go to a tab.
   Ctrl +PgUp|PgDown  Cycles through editor tabs.
   Ctrl + Shift + Up|Down - Bounces you up and down through the methods in the source code.
   Ctrl + F7  Switches between panes (views).
   Ctrl + ,|.  Go to the previous/next error. Great in combination with Ctrl + 1.
   Ctrl + 1 on an error  Brings up suggestions for fixing the error. The suggestions can be clicked.
   Ctrl + F4  Close one source window.

Edit:

   Ctrl + Space  Auto-completion.
   Ctrl + /  Toggle comment selected lines.
   Ctrl + Shift + /|\  Block comment/uncomment selected lines.
   Ctrl + Shift + F  Quickly formats your java code based on your preferences set up under Window –> Preferences.
   Ctrl + I  Correct indentations.
   Alt + Up|Down  move the highlighted code up/down one line. If nothing is selected, selects the current line.
   Ctrl + D  Delete row.
   Alt + Shift + Up|Down|Left|Right  select increasing semantic units.
   Ctrl + Shift + O  Organize Imports.
   Alt + Shift + S  Brings up Source menu.
o   Shift + Alt + S, R  Generate getter/setter.
o   Shift + Alt + S, O  Generate constructor using fields.
o   Shift + Alt + S, C  Generate constructor from superclass.
   Alt + Shift + T  Brings up Refactor menu.
   Alt + Shift + J  Insert javadoc comment.
   F2  Display javadoc popup for current item. Shift + F2  Display javadoc in external browser.

Run/Debug:

   F11 / Ctrl + F11  Execute/debug.
   Ctrl + Shift +B  Toggle breakpoint.
   When paused: F5  Step into, F6  Step over, F7  Step out, F8  Resume.
   Ctrl + F2  Terminate.

EOF
Ma99uS
источник
7

Не так уж и скрыто, но ИМО лучший трюк.

Предполагая настройки по умолчанию (и вы не добавляли новые фрагменты)

Выделите (или выберите) текст (строку или переменную) ... Нажмите Ctrl + Пробел. Нажмите End + Enter. запускается фрагмент "sysout", который обертывает выделение в качестве параметра.

например.

 "hello world!"

becomes
System.out.println("hello world!");

Мне это так нравится, что я реализовал аналогичный фрагмент для Android Toast и Log.i () ОГРОМНАЯ экономия времени во время ручной отладки ....

st0le
источник
Ого, как я не узнал об этом? Спасибо!
MatrixFrog 02
Хм, когда я нажимаю «End», он попадает только в конец выбранной строки, а не в конец списка предложений.
serg 02
Может, вам стоит нажать дополнительную клавишу «вниз», прежде чем вы нажмете «конец» ... :(
st0le