Я работаю преподавателем в онлайн-школе и обучаю студентов программированию. Периодически приходится рассказывать о некоторых функциях IntelliJ IDEA. На хабре не нашлось подходящей статьи с краткой выжимкой наиболее используемых функций. Кроме того, возникало несколько ситуаций, когда требовалось оптимизировать рутинные задачи на работе. Так и родилась идея этой статьи. Думаю, что даже разработчик с опытом в пару лет смогут найти для себя что-то новое и полезное.
Горячие клавиши
Начать хочу с базовой вещи - это горячие клавиши. Это не только увеличение скорости написания кода, но и сохранение концентрации. По себе замечал, что пока найдешь нужный файл, то контекст прошлого файла из головы уже улетучился. Поэтому с горячими клавишами работа становится более легкой. Ниже привожу список хоткеев, которые сам регулярно использую.
Навигация
Последние файлы = Ctrl + Е
Перейти обратно = Ctrl + Alt + Left
Последние места редактирования = Ctrl + Shift + E
Структура файла = Ctrl + F12
Дерево навигации = Alt + home
Перейти к последнему редактированному участку кода = Ctrl + Shift + Backspace
Горизонтальная прокрутка = Shift + колесо мыши
Переключаться между вкладками = Alt + (Влево/Вправо)
Переход к следующей подчеркнутой ошибке в коде = F2
Рефакторинг кода
Подсказки конструктора или метода = Ctrl + Р
Обернуть код какой-то конструкцией = Ctrl + Alt + T
Изменение имени переменной = Shift + F6
Автогенерация кода = Alt + Insert
Удалить текущую строку = Ctrl + Y
Двигать функцию вверх / вниз = Ctrl + Shift + (Вверх/Вниз)
Двигать строку вверх / вниз = Alt + Shift + (Вверх/Вниз)
Заменить параметр енама = Ctrl + Space -> Tab
Подвинуть строку по табам влево = Shift + Tab
Визуал
Поправить стиль кода = Ctrl + Alt + L
Выделить окружение строки - Ctrl + W
Закомментировать по одной строке = Ctrl + Slash
Закомментировать блок кода = Ctrl + Shift + Slash
Схлопнуть функцию = Ctrl + Minus
Развернуть функцию = Ctrl + Plus
Тренировки
Я и сам много раз гуглил что-то вроде "топ горячих клавиш для IntelliJ IDEA", находил большой список и закрывал этот сайт. Новые навыки закрепляются только после тренировок, для этого в IntelliJ IDEA есть встроенный тренажер. Открыть его можно в разделе (Help -> Learn Ide Features).
Кроме этого, для запоминания прекрасно поможет плагин Key promoter
, об этом будет ниже.
История локальных изменений

IntelliJ IDEA предоставляет встроенный инструмент для отслеживания изменений в проекте — Local History. Эта функция автоматически сохраняет версии файлов, позволяя возвращаться к предыдущим состояниям кода даже без использования Git. Local History работает в фоновом режиме, записывая каждое изменение в файлы проекта, и предлагает удобный интерфейс для просмотра и восстановления этих изменений.
Основные возможности Local History
Автоматическая фиксация изменений: Local History автоматически создает новые версии файлов при каждом сохранении, компиляции или запуске программы. Это позволяет отслеживать изменения в реальном времени и не беспокоиться о ручной фиксации версий.
Просмотр истории изменений: Разработчик может просматривать историю изменений любого файла в проекте. В специальном окне будут представлены все зафиксированные версии файла с указанием времени и даты изменения.
Сравнение версий: Инструмент позволяет сравнивать текущую версию файла с любой из предыдущих. Это удобно для анализа изменений и выявления различий между двумя версиями кода. Для сравнения версий нужно выбрать две интересующие версии в окне истории и нажать кнопку "Compare with Current".
Восстановление предыдущих состояний: Если необходимо вернуть файл к одному из предыдущих состояний, достаточно выбрать нужную версию в окне истории и нажать кнопку "Revert". Это действие отменит все последующие изменения и восстановит выбранную версию файла.
Отмена изменений: Помимо полного отката к предыдущей версии, Local History позволяет отменить отдельные изменения. Для этого нужно сравнить текущую версию с нужной и вручную выбрать, какие изменения стоит оставить, а какие — удалить.
Настройка частоты фиксации: Пользователь может настроить частоту автоматической фиксации изменений в настройках IntelliJ IDEA. Это позволяет оптимизировать работу инструмента под конкретные нужды проекта.
Примеры использования
Восстановление удаленного фрагмента кода: Допустим, вы удалили важный фрагмент кода и сохранили файл. С помощью Local History можно быстро вернуться к предыдущей версии файла и восстановить утраченное без отката других изменений
Просмотр изменений за определенный период: Если нужно просмотреть, какие изменения были внесены в проект за последние сутки или неделю, это легко можно сделать в интерфейсе Local History и детально изучить каждое изменение.
Работа без Git: Даже если вы не используете систему контроля версий (Git), Local History обеспечит базовую защиту от потери данных и возможность возврата к предыдущим состояниям кода. Такая ситуация может возникнуть при написании пет проектов.
Как открыть:
ПКМ -> Local History -> Show History
File -> Local history -> Show History
Постфиксное дополнение (Postfix Completion)
Постфиксное дополнение (Postfix Completion) — это удобная функция в IntelliJ IDEA, позволяющая быстро генерировать кодовые шаблоны на основе сокращений. Кроме того, эта функция позволяет автоматически включать наши переменные в эти шаблоны.
Принцип работы
Постфиксное дополнение основано на наборе заранее настроенных правил, которые составляют пару из сочетания букв и символов и соответствующего этому сочетанию шаблона кода. Думаю, все знают про то, что sout
заменяется на System.out.println()
.
Однако в этом шаблоне не используется никакая переменная. Рассмотрим следующий пример кода:
int [] numbers = {1,2,3,4,5};
numbers.for
У нас есть массив numbers
, при вводе numbers.for
IntelliJ IDEA автоматически создает шаблон цикла с использованием массива:
int [] numbers = {1,2,3,4,5};
for (int number : numbers) {
}
Можно просмотреть все варианты ввода, нажав Ctrl + J на дефолтных настройках горячих клавиш.
Основные примеры использования
Генерация циклов:
fori
→for (int i = 0; i < array.length; i++) {}
for
→for (Element element : elements) {}
Создание методов:
psvm
→public static void main(String[] args) {}
soutv
→System.out.println("value=" + value);
Работа с объектами:
new
→ Конструктор объекта с заполненными параметрами.cast
→ Приведение типа.
Настройки
Пользователи могут настраивать постфиксы в соответствии со своими потребностями: редактировать стандартные и добавлять свои. Для этого нужно перейти в настройки IntelliJ IDEA (File → Settings → Editor → General → Postfix Completion) и добавить или изменить существующие правила.
Пресеты (File and Code Templates)
Шаблоны файлов и кода (File and Code Templates) в IntelliJ IDEA — это инструмент, который помогает ускорить процесс создания новых файлов и структур кода, соответствующих принятым стандартам и соглашениям, избегая необходимости повторного ввода одинаковых фрагментов.
Мне очень помогла эта функция, когда нужно было написать одинаковые классы для новых эндпоинтов в рабочем проекте: сущность, репозиторий, сервис, контроллер, маппер и тесты.
Что такое File Templates?
Шаблоны файлов (File Templates) — это предустановленные структуры для новых файлов, которые создаются в проекте. Например, при создании нового класса Java, IntelliJ IDEA автоматически добавляет стандартный заголовок с комментариями, информацию о пакете и основной каркас класса. Пользовательские шаблоны включать любой код и комментарии.

Что такое Code Templates?
Шаблоны кода (Code Templates) предназначены для быстрой генерации стандартных блоков кода, например, при вводе /**
над методом создастся JavaDocs для этого метода с учетом входных параметров метода, выходного параметра и ошибок в секции throws.

Настройки
Шаблоны файлов и кода можно настраивать в соответствии с индивидуальными требованиями. Для этого нужно перейти в настройки IDE (File → Settings → Editor → File and Code Templates) и изменить существующие шаблоны или создать новые.
Конфигурация вкладок
По умолчанию вкладки располагаются сверху, над редактором кода. Это неудобно при дебаге: постоянно открываются новые вкладки, а старые при лимите закрываются. Конфигурацию вкладов можно настроить: переместить вкладки из строки над редактором в колонку справа, а еще увеличить лимит вкладок для закрытия предыдущих. Для этого нужно перейти в раздел настроек (File -> Settings -> Editor -> Editor Tabs)

Плагины
Установка плагинов сейчас усложнилась в силу определенных событий. Сейчас последовательность действий такая:
Нужно узнать подходящую версию плагина для своей версии IntelliJ IDEA (это можно сделать найдя плагин в разделе File -> Settings -> Plugins)
Далее нужно с использованием спец средств для смены локации скачать zip архив нужной версии плагина с сайта JetBrains
А затем нужно установить этот плагин в том же разделе File -> Settings -> Plugins, в шестеренке будет опция "Install plugin from Disk"
Key promoter X
Key Promoter X — это плагин, который помогает пользователям освоить и запомнить горячие клавиши. Главная цель плагина — повысить производительность разработчиков, предлагая подсказки и напоминания о полезных сочетаниях клавиш.

Функционал
Подсказки: Key Promoter X показывает всплывающую подсказку с предложением горячей клавиши всякий раз, когда пользователь пытается выполнить действие с помощью мыши.
Рекомендации: Плагин анализирует действия пользователя и предлагает подходящие горячие клавиши для оптимизации работы.
Обучение: Key Promoter X обучает использованию горячих клавиш, показывая статистику прогресса освоения и запоминание.
Rainbow brackets
Rainbow Brackets — это популярный плагин, который помогает визуально выделять скобки и парные элементы в коде. Основная цель этого плагина заключается в том, чтобы облегчить чтение и написание кода.
SonarLint
SonarLint – это статический анализатор кода. Его основная цель – выявление потенциальных ошибок, проблем безопасности и нарушений стандартов кодирования прямо во время написания кода. Плагин поддерживает различные языки программирования, включая Java, Python, JavaScript и другие.
Основные функции SonarLint:
Анализ в реальном времени: Плагин анализирует код сразу после его ввода, предоставляя мгновенную обратную связь о возможных проблемах.
Интеграция с SonarQube: При необходимости результаты анализа можно синхронизировать с сервером SonarQube для централизованного управления качеством кода.
Настраиваемые правила: Есть возможность настройки кастомных правил проверки, специфичных для компании или проекта.
Ниже представлен пример анализа с указанием ошибок:

Gigacode
Gigacode - это AI-плагин, который помогает генерировать, редактировать и объяснять код. Кроме этого, можно в специальном чате задавать вопросы. Ниже приведу некоторые примеры использования плагина.
1) Inline подсказки
Inline подсказки - это варианты окончания строки, в процессе набора кода. В некоторых случаях плагин предлагает не одну строчку, а сразу несколько. По моим ощущениям, часто подсказывает верные варианты, и это заметно ускоряет написание кода.
2) Генерация кода по комментарию
Эта функция активируется, когда мы пишем в комментарии то, что хотим сделать, а плагин генерирует код, необходимый для реализации этих действий. Для этой функции нужна определенная тренировка, чтобы научиться грамотно писать запрос. Рассмотрим несколько примеров:
Пример 1:
Шаг 1: написать метод:
public static void printEven(List numbers) {
}
Шаг 2: Написать комментарий для метода:
/*
* Задание 2:
* Написать код, который будет выводить только четные числа из списка
*/
public static void printEven(List numbers) {
}
Шаг 3: Нажать enter внутри метода, гигакод сгенерирует реализацию:
/*
* Задание 2:
* Написать код, который будет выводить только четные числа из списка
*
*/
public static void printEven(List numbers) {
numbers.stream()
.filter(number -> number % 2 == 0)
.forEach(System.out::println);
}
Пример 2:
var strList = List.of("CString1", "bString2", "CString3", "CString4", "bString5");
/**
* 1. Перевести в верхний регистр
* 2. Получить мапу: ключ - первая буква строки, значение - строки
*
*/
// Этот код сгенерирован гигакодом:
Map> collect = strList.stream()
.map(String::toUpperCase)
.collect(Collectors.groupingBy(s -> s.charAt(0)));
3) Рефакторинг кода
В меню справа после установки плагина появляется специальная иконка, которая открывает окно с чатом:

В этом чате можно задавать вопросы и использовать несколько предустановленных команд. Для демонстрации используем следующий кусок кода:
String[] text = new String[] {"I ", "Love ", "Java"};
int i = 1;
while (i < text.length) {
System.out.print(i);
}
Выделяем его в редакторе и пишем в чате:
Отрефактори код, чтобы он выводил в консоль все элементы массива text
Нейронка выдает следующий результат:
public class Main {
public static void main(String[] args) {
String[] text = {"I ", "Love ", "Java"}; // Создаем массив строк
for (String word : text) { // Итерируемся по массиву с помощью цикла for-each
System.out.print(word); // Выводим элементы массива на экран
}
}
}
4. Объяснение кода
В чате можно выбрать несколько предустановленных команд, /explain
- одна из них. С помощью этой команды можно получить объяснение кода для выделенного текста или всего файла
Ниже представлен пример объяснения от плагина:

Кроме этого в чате можно задавать любые вопросы. Недавно мне потребовалось составить регулярку и плагин с этим справился. Никогда регулярки не любил)
Структурный поиск
Во время изучения статей на хабре о возможностях Inteleji Idea нашел интересную статью про структурный поиск. Эта функция позволяет искать не вхождение какой-то строки, а наличие целого фрагмента кода с заданными параметрами. Ниже прикладываю ссылку на статью.
PS
Если использовать большинство возможностей и функций, описанных в статье, то легкость и скорость написания кода значительно увеличатся. Если у вас есть свои секретные фишки, то делитесь ими в комментариях. Буду благодарен за конструктивную критику и обратную связь.
Ссылки
Ссылка на маркетплейс с плагинами от JetBrains:
https://plugins.jetbrains.com/
Статья про Gigacode на хабре:
https://habr.com/ru/companies/usetech/articles/825470/
Статья про структурный поиск:
https://habr.com/ru/companies/krista/articles/510478/
Дополнительную информацию про localHistory в официальной документации:
https://www.jetbrains.com/help/idea/local-history.html
Ссылка для скачивания плагина Gigacode:
https://gigacode.ru/