Продолжая серию статей, в которых я освещаю основные фичи IntelliJ IDEA (ранее я писал об основных возможностях дополнения и рефакторинга кода), я хотел бы поговорить о навигации, которая является еще одной возможностью повышения производительности IDE, которая экономит вам много времени, при условии, конечно, что вы используете ее правильно.
Одна из основных вещей, которую вы как пользователь IntelliJ IDEA должны понимать, чтобы использовать ее во всю силу, — это то, что эта IDE была разработана для того, чтобы сосредоточиться на коде. Большая часть вашего времени проводится в редакторе кода, а навигация — это просто средство, которое помогает вам переходить из одного места в коде в другое, не теряя слишком много времени.
Сегодняшняя статья посвящена фичам, которые позволяют перемещаться между файлами проекта, блоками кода и элементами пользовательского интерфейса, такими как окна инструментов, вкладки редактора и т. д.
Последние файлы
Если вы на мгновение остановитесь и задумаетесь о своих шаблонах навигации, вы заметите, что большую часть времени вы работаете с конечным набором файлов. Это ясно объясняет, почему команда Recent files (Последние файлы) является такой широко используемой функцией среди пользователей IntelliJ IDEA. Как только вы освоитесь с ней, вы начнете использовать ее для большинства ваших навигационных операций. Чтобы вызвать эту команду, просто нажмите Ctrl + E (Cmd + E для OS X).
Обратите внимание, что последний файл, к которому был осуществлен доступ, выбран по умолчанию, поэтому вы можете перейти к нему всего в один клик. Чтобы сузить список отображаемых файлов, вы можете использовать так называемый Speed search (Быстрый поиск). Просто начните вводить часть имени файла, и IDE подсветит то, что вы ищете.
Всплывающее окно структуры
Другой шаблон, с которым вы сталкиваетесь каждый день, — это навигация по текущему открытому файлу. Каждый файл имеет свою структуру: класс Java состоит из его членов, таких как поля, методы и т. д.; Файлы XML и HTML состоят из дерева тегов. Чтобы быстро перейти к любому месту в этой структуре, просто нажмите Ctrl + F12 (Cmd + F12 для OS X) и выберите нужный элемент (опять же, вы можете сузить список с помощью быстрого поиска).
Иногда структура может зависеть от того, каким образом вы на нее смотрите. Например, структура класса Java может включать в себя структуру суперклассов или интерфейсов. По умолчанию IntelliJ IDEA скрывает члены суперклассов и интерфейсов. Однако, если вы нажмете этот же хоткей еще раз, вы их увидите.
При следующем использовании этой команды IDE запомнит ваши предпочтения.
Переход к панели навигации
Очень полезно принять тот факт, что большую часть вашего времени редактор (и сам код) — это единственное, что видно на вашем экране. Некоторые люди могут утверждать, что им также нужно видеть дерево проекта, понимать контекст, в котором они находятся, или иметь возможность быстро изменить его. Собственно, поэтому в IntelliJ IDEA так легко переключаться между деревом проекта и редактором. Однако дерево проекта, на самом деле, не самый лучший вариант. Опытные пользователи IntellIJ IDEA знают вариант гораздо лучше: панель навигации. Новые пользователи обычно думают, что это мелкая фича, но более опытные разработчики знают, как с ее помощью делать практически все, что вы захотите. Чтобы активировать панель навигации, вызовите команду Jump to navigation bar (Перейти к панели навигации) с помощью Alt + Home (Alt + для OS X). Используя эту команду, вы можете перемещаться по всей структуре проекта; создавать и изменять файлы, просматривать их содержимое и многое другое.
Стоит отметить, что переход к панели навигации можно использовать, даже если сама панель навигации скрыта.
Переход к классу
А как насчет такой базовой операции, как Go to a class (Переход к классу)? Каждый раз, нажимая Ctrl + N (Cmd + N для OS X) в IntelliJ IDEA, вы можете даже не подозревать, насколько эта команда мощная — она намного умнее, чем кажется. В дополнение к простым символам подстановки, верблюжьей нотации и префиксам пакетов, поддерживаемым в любой IDE, команда Go to a class в IntelliJ IDEA обеспечивает сопоставление имени в середине, постфиксный номер строки, быстрое документирование и всплывающие определения:
По умолчанию команда ищет лучшие совпадения в вашем проекте; если совпадений не найдено, она просматривает библиотеки проектов. Чтобы переключить область, используйте этот же хоткей.
Преимущество команд в IntelliJ IDEA заключается в том, что их чрезвычайно легко использовать без мыши: после показа всплывающего окна вы можете вводить и изменять запрос, перемещаться по результатам клавишами «Вверх» и «Вниз». И это все. Если вы когда-либо пробовали использовать соответствующую команду в других IDE, вы понимаете, о чем я.
Переход в файл или папку
Команда Go to a file (Переход в файл), назначенная на Ctrl + Shift + N (Cmd + Shift + N для OS X), сохраняет время, когда вам нужно открыть определенный файл в вашем проекте. В дополнение к стандартным функциям, таким как символы подстановки, верблюжья нотация и префикс папки, например, он позволяет найти папку.
Переход к символу
И, наконец, последняя, но не менее важная команда в семействе Go to… — это Go to a symbol (Переход к символу), назначенная на Ctrl + Shift + Alt + N (Cmd + Shift + Alt + N для OS X), которая, как следует из названия, позволяет вам перейти к любому символу без полнотекстового поиска. Поскольку среда IDE постоянно обновляет индекс всех символов в вашем проекте (и библиотеках), вы можете просто ввести выражение и найти соответствующий метод или поле за несколько секунд, даже если ваш проект очень большой.
Выбрать в
Теперь представьте, что вам нужно выбрать текущий выбранный файл в конкретном окне инструментов, например, в представлении Project или Changes, или даже в Explorer/Finder. Здесь вам пригодится команда Select in (Выбрать в …) с помощью Alt + F1:
Переключение на окно инструментов
Большинство окон инструментов в IntelliJ IDEA имеют удобные сочетания клавиш. При нажатии соответствующего хоткея окно инструментов становится видимым и получает фокус. После повторного нажатия этого же хоткея, когда фокус находится в окне инструментов, оно скрывается, и ваш фокус возвращается к редактору. Это очень удобно и позволяет полностью избавиться от мыши: когда вам нужно окно инструментов или вы хотите вернуться в редактор, просто нажмите хоткей.
Убедитесь, что вы помните по крайней мере эти хоткеи:
- Окно инструментов Project: Alt + 1 (Cmd + 1 для OS X)
- Окно инструментов Changes: Alt + 9 (Cmd + 9 для OS X)
- Окно инструментов Terminal: Alt + F12
Переключение на редактор
Одна из самых хитрых функций, о которых не все знают, — переключение фокуса на редактор (из любого другого места) нажатием клавиши Escape. Окно инструментов, из которого вы переключаетесь, в этом случае сохраняет свое состояние видимости. Переключение в редактор путем скрытия всех окон инструментов доступно с помощью другой комбинации клавиш: Ctrl + Alt + F12 (Cmd + Alt + F12 для OS X).
Конец первой части.
Комментарии (14)
Beholder
18.09.2019 23:24Немного устаревшие картинки, так как Go to class, Go to file и Go to symbol в последней версии совмещены в один диалог.
Recent locations (Ctrl+Shift+E) тоже модернизирован.
pmcode
19.09.2019 06:27Шел 2019 год, у продуктов JetBrains до сих пор не было поддержки аккордов. Я надеюсь для изобретателей таких комбинаций
Ctrl + Shift + Alt + N
в аду есть отдельный котел.eumorozov
19.09.2019 08:14По-моему, поддерживаются аккорды в продуктах JetBrains едва ли не с первых версий.
Lamaster
19.09.2019 08:31Аккорды — вы имеете в виду двойные комбинации а-ля Visual Studio (Ctrl+.; M) (Ctrl+R; R)?
По мне дак намного удобней одинарный шорткат, чем вот так плясать по клавиатуре. Ну да, Ctrl+Alt+Shift комбинации немного фрустрируют, но и нужны они в сильно специфичных случаях.
SevenLines
19.09.2019 13:54Класс, Ctrl+Shift+E оказался для меня открытием. А так вместо всяких Ctrl+N, постоянно юзаю двойное нажатие на Shift.
Xobotun
19.09.2019 14:51Из тех, что я часто использую, но здесь не нашёл:
• `Alt+J` выделяет мультикурсором следующее вхождение символа-на-котором-стоит-курсор/выделения в файле.
• `Shift+Shift`, как писал Beholder, для перехода к файлу/классу/действию по имени.
• `Ctrl+Shift+F` для поиска по всем файлам.
• `Ctrl+Shift+V` для вставки чего-то другого из истории буфера обмены.
• `Alt+F1 > 1` для поиска текущего открытого файла в дереве файлов.
Пользуясь случаем, может, кто знает, как найти использования конструкторов, сгенерированных ломбоком, кроме как через `Alt+F7` в структуре класса? А то `Ctrl+LMB` по аннотации открывает класс аннотации с документацией, но не список мест, где он используется.
Throwable
19.09.2019 17:54У несчастью в линуксе многие комбинации ложатся на комбинации оконного менеджера, особенно, что касается Alt/Ctrl-Fn. В итоге приходится лезть в дебри настроек и менять Alt/Ctrl например на Win.
eumorozov
19.09.2019 20:44Я для себя решил эту проблему переходом на dwm. :) Там очень мало сочетаний клавиш, потому он ни с чем не конфликтует (в качестве модификатора использую win в dwm, поэтому даже теоретически ни с чем не совпадет).
Но по умолчанию PyCharm под dwm падает. Каждый раз приходится гуглить и вспоминать, как это правится. То ли патченьем dwm, то ли каким-то флагом для запуска pycharm. Раз в несколько лет приходится об этом вспоминать (смена ноутбука).
ris58h
19.09.2019 21:09Давно пора (производителям ОС) шорткаты ОС навесить на win/super/meta, а ctrl и alt оставить приложениям.
PqDn
Последние файлы — удобней же ctrl+tab
extempl
Это не последние файлы.
Это открытые файлы (в табах). Представьте, что лимит табов = 1. Тогда на каждое окно редактора будет ровно один файл. Новый открытый файл будет заменять собой старый. в ctrl+tab при этом будет только этот файл. В ctrl+e будет целый список отсортированный по времени доступа. Эта статья немного устарела, сейчас если два раза нажать ctrl+e то список будет отфильтрован только теми недавними файлами, в которых были редактирования (это было ранее доступно по отдельному хоткею
ctrl+shift+e
— на него сейчас забиндили новую фичуrecent locations
— они могут быть и в одном файле).Для справки — limit = 1 полезно при работе в split mode. Тогда на каждую split область будет приходиться один активный файл, фактически без табов. И тогда, как раз таки ctrl+tab поможет при переключении между открытыми файлами в то время, как в ctrl+e эти файлы будут отсутствовать (так как они все "активны" хоть в фокусе только один).