Master of IntelliJ IDEA

от автора

Я работаю преподавателем в онлайн-школе и обучаю студентов программированию. Периодически приходится рассказывать о некоторых функциях 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, об этом будет ниже.

История локальных изменений

Рис. Интерфейс Local History

Рис. Интерфейс Local History

IntelliJ IDEA предоставляет встроенный инструмент для отслеживания изменений в проекте — Local History. Эта функция автоматически сохраняет версии файлов, позволяя возвращаться к предыдущим состояниям кода даже без использования Git. Local History работает в фоновом режиме, записывая каждое изменение в файлы проекта, и предлагает удобный интерфейс для просмотра и восстановления этих изменений.

Основные возможности Local History

  1. Автоматическая фиксация изменений: Local History автоматически создает новые версии файлов при каждом сохранении, компиляции или запуске программы. Это позволяет отслеживать изменения в реальном времени и не беспокоиться о ручной фиксации версий.

  2. Просмотр истории изменений: Разработчик может просматривать историю изменений любого файла в проекте. В специальном окне будут представлены все зафиксированные версии файла с указанием времени и даты изменения.

  3. Сравнение версий: Инструмент позволяет сравнивать текущую версию файла с любой из предыдущих. Это удобно для анализа изменений и выявления различий между двумя версиями кода. Для сравнения версий нужно выбрать две интересующие версии в окне истории и нажать кнопку «Compare with Current».

  4. Восстановление предыдущих состояний: Если необходимо вернуть файл к одному из предыдущих состояний, достаточно выбрать нужную версию в окне истории и нажать кнопку «Revert». Это действие отменит все последующие изменения и восстановит выбранную версию файла.

  5. Отмена изменений: Помимо полного отката к предыдущей версии, Local History позволяет отменить отдельные изменения. Для этого нужно сравнить текущую версию с нужной и вручную выбрать, какие изменения стоит оставить, а какие — удалить.

  6. Настройка частоты фиксации: Пользователь может настроить частоту автоматической фиксации изменений в настройках IntelliJ IDEA. Это позволяет оптимизировать работу инструмента под конкретные нужды проекта.

Примеры использования

  1. Восстановление удаленного фрагмента кода: Допустим, вы удалили важный фрагмент кода и сохранили файл. С помощью Local History можно быстро вернуться к предыдущей версии файла и восстановить утраченное без отката других изменений

  2. Просмотр изменений за определенный период: Если нужно просмотреть, какие изменения были внесены в проект за последние сутки или неделю, это легко можно сделать в интерфейсе Local History и детально изучить каждое изменение.

  3. Работа без Git: Даже если вы не используете систему контроля версий (Git), Local History обеспечит базовую защиту от потери данных и возможность возврата к предыдущим состояниям кода. Такая ситуация может возникнуть при написании пет проектов.

Как открыть:

  1. ПКМ -> Local History -> Show History

  2. 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 на дефолтных настройках горячих клавиш.

Основные примеры использования

  1. Генерация циклов:

    • forifor (int i = 0; i < array.length; i++) {}

    • forfor (Element element : elements) {}

  2. Создание методов:

    • psvmpublic static void main(String[] args) {}

    • soutvSystem.out.println("value=" + value);

  3. Работа с объектами:

    • 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 автоматически добавляет стандартный заголовок с комментариями, информацию о пакете и основной каркас класса. Пользовательские шаблоны включать любой код и комментарии.

Рис. Самый простой вариант шаблона для класса с методом main.

Рис. Самый простой вариант шаблона для класса с методом main.

Что такое Code Templates?

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

Рис. Шаблон JavaDocs

Рис. Шаблон JavaDocs

Настройки

Шаблоны файлов и кода можно настраивать в соответствии с индивидуальными требованиями. Для этого нужно перейти в настройки IDE (File → Settings → Editor → File and Code Templates) и изменить существующие шаблоны или создать новые.

Конфигурация вкладок

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

Рис. Пример расположения вкладок

Рис. Пример расположения вкладок

Плагины

Установка плагинов сейчас усложнилась в силу определенных событий. Сейчас последовательность действий такая:

  1. Нужно узнать подходящую версию плагина для своей версии IntelliJ IDEA (это можно сделать найдя плагин в разделе File -> Settings -> Plugins)

  2. Далее нужно с использованием спец средств для смены локации скачать zip архив нужной версии плагина с сайта JetBrains

  3. А затем нужно установить этот плагин в том же разделе File -> Settings -> Plugins, в шестеренке будет опция «Install plugin from Disk»

Key promoter X

Key Promoter X — это плагин, который помогает пользователям освоить и запомнить горячие клавиши. Главная цель плагина — повысить производительность разработчиков, предлагая подсказки и напоминания о полезных сочетаниях клавиш.

Рис. Пример всплывающего окна

Рис. Пример всплывающего окна

Функционал

  1. Подсказки: Key Promoter X показывает всплывающую подсказку с предложением горячей клавиши всякий раз, когда пользователь пытается выполнить действие с помощью мыши.

  2. Рекомендации: Плагин анализирует действия пользователя и предлагает подходящие горячие клавиши для оптимизации работы.

  3. Обучение: Key Promoter X обучает использованию горячих клавиш, показывая статистику прогресса освоения и запоминание.

Rainbow brackets

Rainbow Brackets — это популярный плагин, который помогает визуально выделять скобки и парные элементы в коде. Основная цель этого плагина заключается в том, чтобы облегчить чтение и написание кода.

SonarLint

SonarLint – это статический анализатор кода. Его основная цель – выявление потенциальных ошибок, проблем безопасности и нарушений стандартов кодирования прямо во время написания кода. Плагин поддерживает различные языки программирования, включая Java, Python, JavaScript и другие.

Основные функции SonarLint:

  • Анализ в реальном времени: Плагин анализирует код сразу после его ввода, предоставляя мгновенную обратную связь о возможных проблемах.

  • Интеграция с SonarQube: При необходимости результаты анализа можно синхронизировать с сервером SonarQube для централизованного управления качеством кода.

  • Настраиваемые правила: Есть возможность настройки кастомных правил проверки, специфичных для компании или проекта.

Ниже представлен пример анализа с указанием ошибок:

Рис. Пример результата анализа плагином SonarLint

Рис. Пример результата анализа плагином SonarLint

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/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *