Я работаю преподавателем в онлайн-школе и обучаю студентов программированию. Периодически приходится рассказывать о некоторых функциях 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/
ссылка на оригинал статьи https://habr.com/ru/articles/866324/
Добавить комментарий