Как поменять терминал в intellij idea windows

Обновлено: 05.07.2024

WSL (WSL 2) - Windows Subsystem for Linux - is a compatibility layer for running Linux binary executables natively on Windows 10. Currently, it supports several Linux distributions, such as Ubuntu, OpenSUSE, and SLES.

IntelliJ IDEA lets you create and open projects in the WSL file system, run, and debug applications in the WSL environment. You can also use local Windows-based projects and run the applications remotely in WSL with the run targets feature.

Configure WSL

Download and install a WSL distribution (for instance, Ubuntu) from Microsoft Store.

For this step, be sure to use Windows 10 with the latest “Fall Creators Update” (minimum version 1709, build 16299.15). See the official guide Install the Windows Subsystem for Linux for instructions.

To work with WSL 2 , your Windows version should be 10 build 18917 or later. Follow these instructions to switch the distributive.

Note that IntelliJ IDEA does not support legacy WSL , which you may have installed before upgrading your system to the build 16299.15 or later of Windows 10. In this case, you need to update your WSL distribution.

Upon the first launch of Ubuntu, the system may prompt you to enable the Windows optional feature. In this case, you need to do the following:

Open Windows PowerShell as Administrator and run

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Restart your computer.

You can create a project and store it in the WSL environment, open one from the WSL file system, and develop your projects further in WSL.

Before you create or open a Java project, make sure you add the needed JDK version in WSL.

If you use Maven as your build tool, add a Maven distribution to the WSL environment as well. You also need to add a path variable export M2_HOME=/path/to/maven to the .profile file.

Create a new project in the WSL file system

Install the needed JDK to the WSL environment using your favorite SDK manager.

On the welcome screen, click New Project .

On the page that opens, select a type of the project you want to create and from the options on the right, select a project SDK (the JDK configured in WSL). Click Next .

New Project: project name and location

On the next page, specify the name of your project and project location. The project location for WSL will show the absolute path starting with \\wsl$ to the WSL file system.

You can type the path to the project location manually or click and choose the folder in the dialog, that opens.

IntelliJ IDEA creates a project located in WSL and you can develop and build your project inside the WSL environment without leaving the IDE.

Open a project stored in the WSL file system

In IntelliJ IDEA, you can directly open a project stored in the WSL file system and work with it like with any other project.

Click Open on the Welcome screen or select File | Open from the main menu.

In the dialog that opens, select the folder in the WSL file system that contains the project to open, or type the path to the \\wsl$ project location manually.

IntelliJ IDEA supports Git from the Windows Subsystem for Linux 2 (WSL2), which is available in Windows 10 version 2004.

If Git is not installed on Windows, IntelliJ IDEA searches for Git in WSL and uses it from there. Also, IntelliJ IDEA automatically switches to Git from WSL for projects that are opened when you use the \\wsl$ path.

For details on working with Git in IntelliJ IDEA, see Git.

When you run code in your project, it is run in WSL. If you open the run configuration, note that IntelliJ IDEA refers to WSL as local machine.

Run configuration

The results of the code execution are displayed in the Run tool window.

Run tool window: wsl results

Configure Terminal in WSL

To run Terminal in WSL configuration, open project Settings/Preference ( Ctrl+Alt+S ) and go to Tools | Terminal .

Type wsl.exe in the Shell path field and click Ok .

Switch to the Terminal tool window and type any command to inspect the output.

To activate a virtual environment in the WSL terminal, run the following commands: source .venv/bin/activate .

Use WSL to run a project in the Windows file system

You can create or open your project locally on Windows OS with local JDK and then run your compiled code in WSL using run targets. This might be helpful for the cross-platform development.

The run target feature is supported in the IntelliJ IDEA Ultimate edition only.

Create a run configuration for WSL

From the main menu, select Run | Edit Configurations . Alternatively, press Alt+Shift+F10 , then 0 .

In the Run/Debug Configuration dialog, click on the toolbar or press Alt+Insert . The list shows the run/debug configuration templates.

Select one of the supported run/debug configuration types.

From the Run on menu, under the New targets section, select WSL to add a WSL target.

When you add the WSL target, IntelliJ IDEA performs an introspection and automatically adds a path to a remote JDK in WSL, and the JDK version in the New Target: WSL dialog.

If you need to add additional information to the existing WSL target, click Manage targets and in the Run Targets dialog, add the needed information. For example, you can select Maven or Gradle as a runtime. Click OK to save the changes.

From the main menu, click Run and select the necessary run configuration or press ( Shift+F10 ) to run your code and check the output in the Run tool window.

Firewall configuration

You need to perform the following steps to ensure that the building of a project works properly.

Configure firewall settings

Run the Windows PowerShell as administrator.

Execute the following command to allow connections using WSL:

New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow

Then execute the command to renew the firewall rules:

Get-NetFirewallRule | where DisplayName -ILike "idea*.exe" | Remove-NetFirewallRule

If you are using another IDE, replace idea*.exe with its name.

Now start the debugger session. When the Windows Firewall popup appears, select the Public networks checkbox.

Opening the IntelliJ IDEA Terminal Window

In this example we have a simple Spring Boot application that needs a running MongoDB database. We can open the terminal window with ⌥F12 on macOS, or Alt+F12 on Windows and Linux. The terminal supports all the same commands that the operating system supports.

If we want to start the MongoDB database instance with a specific path for storing the data, we can type:

MongoDB in the Terminal

Multiple Terminal Sessions

We can open a second terminal tab with ⌘T on macOS, or Ctrl+Shift+T on Windows and Linux, to run the MongoDB shell as a new command:

MongoDB Shell

Running commands in different tabs is helpful, but sometimes two different processes are closely related and we want to see them together. For this, we can split our terminal window so that we can run two in the same window. For example, you can open up the mongo shell in this split window and can see if the commands have any impact on the running server.

Split the terminal window

Naming Terminal Tabs

Rename terminal tab

We can move between the different tabs with ⌘⇧[ or ⌘⇧] on macOS or Alt+← or Alt+→ on Windows and Linux. We can switch between the splits with ⌥⇥ on macOS, or Ctrl+Tab on Windows and Linux. We can close splits or tabs with ⌘W on macOS, or Ctrl+F4 for Windows and Linux.

When we restart IntelliJ IDEA, our terminal session names and other settings will persist.

Pasting Code from the Editor into the Terminal

Pasting code


View steps in video

Terminal Locations from the Command Window

The integration provided by the IDE also extends to being able to open a location from inside the project window in the terminal window from the context menu. Right click on an item in the Project Window, for example, and select "Open in Terminal". This means that we can have a terminal window in the correct location immediately without having to navigate using the command line.

MongoDB Shell

URLs and Stack Traces in the Terminal Window

URLs in the terminal window are clickable, so we can click on any link shown in the terminal window to open them in the browser. File names in the terminal can also link back to the file in the project. In stack traces, you can click on the file name and IntelliJ IDEA will open the file and put the caret on the line that caused the problem. This takes some of the pain out of debugging problems.

URLs in the terminal

Run IDE Features from the Terminal

URLs in the terminal

IntelliJ IDEA detects a number of different commands that could be run in the IDE instead of from the command line. For example, the git command:

will execute normally if we press Enter. If we press ⌘⏎ on macOS, or Ctrl+Enter on Windows and Linux, it opens the Git log window in IntelliJ IDEA.

Summary

Я люблю две вещи: Intellij IDEA и чистый код (Clean Code).
IDEA создана для чистого кода. Многие настройки по умолчанию уже стимулируют вас писать как надо.



Но она всё ещё не идеальна.
Когда я устанавливаю новую копию IDEA, я пробегаю по настройкам и выставляю свои любимые галочки.
Хочу ими с вами поделиться в надежде, что когда-нибудь и они станут стандартом.

  • Минимум комментариев. Код должен быть читаем сам по себе.
  • Небольшие функции. Длинные функции должны быть разбиты на несколько маленьких с говорящими именами.
  • Частые коммиты. Каждый коммит должен быть атомарным и делать одно изменение, а не кучу разных.
  • Тесты. Не просто наличие тестов, а предельное внимание к ним.

Давайте посмотрим, что нужно настроить в IDEA, чтобы она способствовала написанию чистого кода.

Стандартные заголовки


Первым делом я всегда удаляю самый большой буллщит в Intellij IDEA — стандартный заголовок файлов:

Вся информация об авторах и датах должна храниться в специально отведённом для этого месте — системе контроля версий. Я не хочу захламлять этим код!


Аналогичным образом удаляю стандартные заголовки для некоторых языков:

Неисключительные исключения

Примерно в том же меню я удаляю надоедливые «throws Exception» в шаблонах для JUnit:



Они не нужны в большинстве случаев и только загрязняют код.

Чем меньше кода, не несущего полезной логики — тем лучше!

А там, где они понадобятся, IDEA добавит их на раз.

За чистотой тестов надо следить ещё внимательнее, чем за чистотой кода!

Автоматический импорт

Дальше я ставлю галочку «auto import». Когда я пишу в коде новое имя класса, пусть IDEA сама его моментально импортирует. Почему я должен беспокоится о том, что компьютер может сделать за меня? Лучше я не буду отвлекаться от действительно важных мыслей.


Это аццки удобная фича, попробуйте!

Работа с вкладками


Возможно, это уже дело вкуса и зависит от проекта, но для меня ограничение в 5 табов — просто неприемлемо. 20 как минимум! И когда я закрываю вкладку C, я интуитивно ожидаю, что я окажусь в предпоследнем месте B (откуда я пошёл в C). А когда я закрою и B, мне кажется логичным вернуться в A. Поэтому ставлю галочку «Activate most recently used tab». Варианты «пойти налево» и «пойти направо» — просто нонсенс.
Дорогой Дед Мороз, пожалуйста, убери их вообще из настроек IDEA, а я обещаю вести себя хорошо!


Show usages

Далее я обязательно назначаю комбинацию клавиш Ctrl+F7 на действие «Show usages». Это очень удобное действие, я его использую, наверное, чаще всех остальных! По умолчанию у него какая-то другая комбинация клавиш, не такая удобная. А Ctrl+F7 по умолчанию делает что-то другое, не такое полезное.


А действие «Show Usages» показывает все места, где используется данная переменная/метод, прямо тут же, в маленьком всплывающем окошке. Это чертовски удобно, не нужно переключать внимание и переносить взгляд в другое место! По нему можно удобно бегать вверх-вниз стрелками и закрывать простым ESC. Навигация на кончиках пальцев!


Вот как выглядит Show Usages в действии:

ВерблюжьиГорбы

  • IDEA выделяла всё слово целиков, когда я дважды кликаю на него мышкой, и
  • IDEA бегала между большими буквами, когда я хожу по слову влево-вправо стрелками с нажатым Ctrl.

То есть если курсор стоит в начале слова AbstractStudentFactory, и я нажимаю Ctrl+вправо, я хочу, чтобы курсор скакнул к началу подслова «Student», а не сразу в конец. В IDEA по умолчанию ровно наоборот.


Первый пункт регулируется в Settings -> Editor (самая первая галочка):


А второй там же, в подменю «Smart keys»:

Автосохранение файлов

Многие знают (или догадываются), что IDEA автоматически сохраняет файлы, когда ты переключаешься в другую программу. Или когда запускаешь тесты. Это здорово. Не нужно постоянно нажимать Ctrl+S.

Вы не поверите: я до сих пор не могу избавиться от привычки постоянно жать Ctrl+S, хотя пересел с Eclipse на IDEA уже три года назад! Вот какая вредная привычка.


Но ещё было бы полезно, если б IDEA сохраняла файлы и просто так, когда я иду за чаем. Поэтому ставлю галочку «Save files automatically»:


И благодаря этому могу смело поставить ещё одну галочку, чтобы IDEA не спрашивала меня «Are you sure you want to exit IDEA»?

Меня не надо об этом переспрашивать. Я не боюсь закрыть IDEA в любой момент, потому что всегда могу открыть её снова, и там будут все мои файлы в целости и сохранности.

Inspections


Автоматические проверки кода — в наше время обязательное умение для IDE. В IDEA их много, полезных и не очень, не буду тут все рассматривать. Но одну я ставлю обязательно, причём строго с приоритетом «Error»: это «Missing @ Override annotation».

Строго говоря, это не имеет отношения к чистому коду. Просто я однажды провёл несколько вечеров в поиске зловредной неповторяемой баги, которая случалась потому, что кто-то случайно написал в подклассе метод с таким же именем, как в суперклассе (а именно, метод setUp в тесте). С тех пор я ревностно ставлю проверку на отсутствующую аннотацию @ Override.

Частые коммиты

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


Когда я следую этим правилам и коммичу 3 файла из 8 (остальные 5 я собираюсь тут же послать следующим коммитом), IDEA предлагает перенести остальные 5 файлов в другой «changeset». Возможно, это когда-то могло показаться удачной идеей, но в большинстве случаев я всё-таки собираюсь вскоре закоммитить и остальные 5 файлов тоже. Поэтому отключаем эту галочку:


Далее, когда я сделал несколько маленьких коммитов и хочу это дело запушить (git push), я сталкиваюсь с проблемой, что в IDEA нет комбинации клавиш для Push, а искать эту команду в меню реально неудобно. Делаем свой шорткат Ctrl+Shift+K:

Это удобно запомнить: Ctrl+K — коммит, Ctrl+Shift+K — пуш.

Дорогой Санта, добавь Ctrl+Shift+K в IDEA по умолчанию?

Учите, учите и ещё раз учите шорткаты!

IDEA хороша тем, что все необходимые плагины в ней уже есть из коробки. Для большинства ежедневных потребностей не нужно что-то искать и устанавливать дополнительно.


Но один плагин я ставлю обязательно. Это Key Promoter plugin — надоедливый подсказчик, заставляющий меня учить шорткаты. Каждый раз, когда я выбираю какое-то действие мышкой, он тут же говорит мне: «А ты таки мог это сделать такой-то комбинацией клавиш!» Он такой надоедливый, что ты волей-неволей начинаешь использовать эти шорткаты, лишь бы не видеть его лишний раз.

Обратная связь

И наконец, последняя галочка. Я хочу, чтобы IDEA анализировала мою работу с ней и ежедневно посылала собранную информацию в JetBrains. Это мой вклад в развитие отличного продукта Intellij IDEA.


Дорогие ребята из JetBrains, если это вам поможет сделать IDEA ещё лучше — следите за мной, анализируйте меня, берите всё что потребуется!

Подружим Git с Intellij IDEA - 1

По сложившейся традиции, приветствую вас, будущие Senior Software Engineers. Сегодня поговорим о логическом продолжении моей статьи про Гит. Также я советую прочесть материал о стратегиях ветвления, который я опубликовал ранее. В статье про Гит я описал, как работать с ним в командной строке, а сегодня покажу, как сделать все это в Intellij IDEA. В начале своего пути как разработчика я пользовался именно командной строкой и думал, что мне незачем использовать UI для этого дела. Ведь все понятно и так… Но это было ровно до того момента, пока я не начал использовать Гит в Intellij IDEA… Хочу сказать сразу, что я буду описывать личный опыт работы. Есть несколько вариантов решения одних и тех же задач через Intellij IDEA, и если вы знаете, как сделать лучше то, что я опишу в статье — пишите в комментарии, обсудим.

Необходимые вводные:

  1. Прочесть, повторить и понять статью про гит. Это поможет быть уверенным, что все уже настроено и готово к работе
  2. Установить Intellij IDEA.
  3. Выделить часик личного времени для полного усвоения.

Клонируем проект локально

  1. Если есть уже гитхаб аккаунт и хочется что-то потом запушить, лучше сделать форк проекта к себе и клонировать свою копию. Как сделать форк — я описывал в этой статье в главе пример the forking workflow.
  2. Клонировать с моего репозитория и проделать все локально без возможности все это дело запушить на сервер. Ведь это же будет мой репозиторий))

Копируем адрес проекта:

Открываем Intellij IDEA и выбираем Get from Version Control:

Копируем вставляем адрес на проект:

Вам предложат создать Intellij IDEA проект. Принимаем предложение:

Так как нет системы сборки, и это не входит в задачу статьи, выбираем Create project from existing sources:

Первый взгляд на Intellij IDEA как на гит UI

Присмотритесь еще раз внимательно на клонированный проект: уже там можно получить много информации о системе контроля версий. Первое — это Version Control панель в нижнем левом углу. В ней можно найти все локальные изменения и получить список коммитов (аналог git log). Перейдем в лекцию Log. Присутствует некая визуальная составляющая, которая помогает понять, как именно шел процесс разработки. Например, видно, что создавалась новая ветка с коммитом added header to txt, который после влился в мастер-ветку. Если нажать на коммит, в правом углу можно увидеть всю информацию о коммите: всех изменениях и его метаданных. Более того, можно посмотреть, какие были сделаны изменения. Тем более что там же был разрезолвлен конфликт. Это IDEA тоже отлично показывает. Если нажать два раза на файл, который был изменен за этот коммит, увидим, как резолвили кофликт: Заметно, что справа и слева были два варианта одного файла, который нужно было смержить в один. А посредине — результат, который в итоге получился. Когда в проекте множество веток, коммитов и пользователей, которые работают в проекте, необходимо поискать отдельно по ветке (branch), пользователю (user) и дате (date): И последнее, что я хочу объяснить перед началом работы — это то, как же понять, в какой ветке мы находимся. Даю минуту на поиск… нашли? Сдаетесь? :D В правом нижнем углу есть кнопка Git: master, где после Git: показано, на какой ветке находится сейчас проект. Если нажать на кнопку, можно проделать множество полезных вещей: перейти на другую ветку, создать новую, переименовать существующую, и так далее.

Работа с репозиторием

Полезные горячие клавиши

  1. ctrl + t — получить последние изменения с удаленного репозитория (git pull).
  2. ctrl + k — сделать коммит/посмотреть все изменения, которые есть на данный момент. Сюда входят и untracked, и modified файлы (смотри мою статью про гит, там это описано) (git commit).
  3. ctrl + shift + k — это команда для создания пуша изменений на удаленный репозиторий. Все коммиты, которые были созданы локально и еще не находятся на удаленном, будут предложены для пуша (git push).
  4. alt + ctrl + z — откатить в конкретном файле изменения до состояния последнего созданного коммита в локальном репозитории. Если в левом верхнем углу выделить весь проект, то можно будет откатить изменения всех файлов.

Что мы хотим?

Получить все изменения на текущий момент в основной ветке (master, например).

На базе этой основной создать отдельную для своей работы.

Реализовать новую функциональность.

Перейти на основную ветку и проверить, не было ли новых изменений за время, пока работали. Если не было, то все хорошо, а если было, то делаем следующее: переходим на работающую ветку и делаем ребейз изменений из основной ветки в нашу. Если все прошло успешно, то отлично. Но вполне могут быть и конфликты. И их как раз можно будет заранее решить, не тратя время на удаленном репозитории.

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

Получить изменения с удаленного сервера?

Подружим Git с Intellij IDEA - 13

Я добавил описание в README новым коммитом и хочу эти изменения получить. Предлагается выбор между мерджем и ребейзом в случае, если были сделаны изменения и в локальном репозитории и на удаленном. Выбираем мерж. Вводим ctrl + t: В результате, видно как изменился README, т.е. изменения из удаленного репозитория подтянулись, и в правом нижнем углу можно посмотреть все детали тех изменений, которые пришли с сервера.

Создать новую ветку на основе master

Переходим в правый нижний угол и нажимаем на Git: master, выбираем + New Branch.

Оставляем галочку Checkout branch и пишем имя новой ветки. Для меня это будет readme-improver.

Подружим Git с Intellij IDEA - 16

После этого Git: master сменится на Git: readme-improver.

Имитируем параллельную работу

Чтобы конфликты появились, их кто-то должен создать :D Я через браузер отредактирую README новым коммитом и таким образом сымитирую параллельную работу. Мол кто-то во время моей работы сделал изменения в том же файле, что и я, что приведет к конфликту. Я удалю слово “полностью” из 10 строки.

Реализовать свою функциональность

Задача стоит в том, чтобы поменять README и добавить описание к новой статье, то есть то, что работа в гите идет через Intellij IDEA. Добавляем это: Изменения выполнены, теперь можно создать коммит. Нажимаем горячую клавишу ctrl + k, получим: Прежде чем создать коммит, нужно внимательно посмотреть на то, что предлагается в этом окне. Я специально добавил стрелочек, куда посмотреть. Там много интересных вещей. В секции Commit Message пишем текст коммита, и чтобы он создался, нужно нажать кнопку Commit. Я так и не нашел, как бы так сделать это горячей клавишей, так что если кто-то найдет — пишите, я буду очень рад. Пишем, что README изменился и создаем коммит. В результате в левом нижнем углу всплывает оповещение, в котором будет имя коммита:

Проверить, не изменилась ли основная ветка

  1. accept yours — принять только изменения из readme-improver.
  2. accept theirs — принять только изменения из master.
  3. merge — самому выбрать, что нужно оставить, а что убрать.
  1. Это изменения из readme-improver.
  2. Результат. Пока что там так, как было до изменений.
  3. Изменения из master ветки.

Запушить изменения на удаленный сервер

Следующий шаг — запушить изменения на удаленный сервер и создавать пул-реквест. Для этого просто нажимаем ctrl + shift + k, после чего получим: Слева будет список коммитов, которые не запушены на удаленный репозиторий, а справа будут все файлы, которые изменены. И все: нажимаем Push, и будет вам счастье :) При успешном пуше будет вот такое уведомление в нижнем правом углу:

Бонусная часть

Не хотел изначально добавлять создание пул-реквеста в статью, но получается не очень законченной из-за этого. Поэтому переходим на гитхаб репозиторий (если он ваш, конечно))) ) и видим, что гитхаб уже знает, что нам предложить: Нажимаем на Compare & pull request, после чего нажимаем Create pull request. Из-за того, что мы заблаговременно порешали конфликты, теперь при создании пул-реквеста, его сразу можно мержить: Вот и все, что я хотел вам рассказать в этот раз. Разумеется, я только открыл вам дверь и показал малую часть. Остальное уже по мере необходимости сами найдете. Традиционно приглашаю подписаться на мой GitHub аккаунт, где я выставляю проекты-наработки на разные технологии, которые использую на работе. У меня недавно было личное достижение — мой проект был оценен уже более чем сотней разработчиков. Это невероятное чувство радости, что то, что ты сделал, кто-то использует. И использует для пользы.

Читайте также: