Unleashing the Full Potential of Jetbrains IDE: Features You Need to Know - Part 1
Tags: tutorial, programming, productivity
Published: 2023-04-21 07:04:02

###_"A tool becomes a valuable asset when it is used with knowledge, skill, and experience."_
<br>
As a developer, I have explored several options for development tools, particularly IDEs (Integrated Development Environments). After trying out various options that cater to my needs and tech stack, I have developed a fondness for using the IDE software products developed by JetBrains. What I appreciate about their IDE products extends beyond just the user interface. Their IDEs' IntelliSense feature has also proven to be an invaluable tool, assisting me with code navigation and tracing the implementation flow. However, in this post, I won't be discussing the most commonly used features of the JetBrains IDE. Instead, I'll be sharing some lesser-known yet practical features that I have personally implemented in my day-to-day work as a software developer. Through this post, I aim to demonstrate how these features have significantly assisted me in my development process. I have purposely labeled this post as 'Part 1' because I am aware of several other useful features of the IDEs that I have yet to discuss. Therefore, this post is just the beginning of a series on this topic.
<br>
## Editor Management and Navigation
I will be using IntelliJ IDE for my examples. However, there is no need to worry as the shortcut keys are consistent across all JetBrains IDE products, including PyCharm, CLion, WebStorm and others. Therefore, the same shortcut keys can be used seamlessly throughout these IDEs.
<br>
### Code Editor Tabs and Navigation
(1) ALT+(left and right arrow keys) is an excellent shortcut that enables you to navigate through the tabs that you have opened in the IDE. However, a limitation of this is that it goes through the tabs in order, which can be time-consuming, especially if you have numerous tabs open, and the desired tab is located far away.

{% youtube https://www.youtube.com/embed/-P-nW8q3AT0 %}
<br>
(2) Another useful shortcut is CTRL+SHIFT+E, which enables you to jump to recent locations within the tabs you have opened. It takes you directly to the location you left and even allows you to scroll through the locations and select where you want to go. This shortcut is more advantageous than (1) as it enables you to choose the precise file you want to navigate to. 

{% youtube https://youtu.be/amc1yDfqY0E %}
<br>

### File Search
Instead of manually finding the file that you want, use the search feature. I know that code repositories have certain packaging format that is implemented. But using the search feature can save you time and mental strain. 

(3) Double-clicking the shift key opens a small dialog modal in the IDE, which enables you to search everything within the IDE. This is a powerful feature as it allows you to search for file names, settings, and IDE features all from a single search bar. In essence, it is a god-like search feature within the IDE.

{% youtube https://youtu.be/tvBgLcvf7IE %}
<br>

(4) When it comes to finding a specific word within a file, you can utilize the classic CTRL+F shortcut. This opens a small tab that enables you to search for words throughout the file. Additionally, the IDE offers the option to filter search results by words or matching cases, which is helpful when navigating through a file with numerous lines of code.

(5) If you find yourself struggling to locate the starting point for implementation, try utilizing the CTRL+SHIFT+F shortcut. This opens a dialog modal that enables you to search for a word occurrence in all files. You can also control the search scope by directory, module, or the entire project. Personally, I use this feature to find bean occurrences and declarations, or any other code that I can use as a reference for implementation.

{% youtube https://youtu.be/ygYoq9WDtvk %}
<br>
### Shortcut to Access Features
(6) Holding down CTRL+TAB opens up the "Switcher" dialog, which enables you to switch tabs and navigate through feature sections in the IDE using arrow keys. This is another handy feature for quickly switching between feature sections and open file tabs within your IDE.

## GIT Support Features
(7) When participating in code reviews and viewing pull requests, some typically use the GitHub web interface. However, JetBrains IDE offers a support feature to view pull requests from GitHub within the IDE software. This enables users to easily review and comment on pull requests without leaving the IDE. What I particularly appreciate about this feature is that it allows for a seamless workflow within the IDE, eliminating the need to use a mouse and navigate the GitHub web interface. You can access this feature by either using the "god search" feature (3) or by hold-pressing CTRL+TAB (6) to open the "View Pull Request" feature

{% youtube https://youtu.be/4gpnak8cn_Y %}
<br>
(8) The IDE also has a built-in feature for managing Git changes. While developers often rely on the terminal or GIT GUI for Git-related tasks, the IDE's Git features provide greater control over which changes to include in commits. To access the Git commit feature in the IDE, simply click ALT+0. This will open a section of the IDE where you can review changes to your code base.

{% youtube https://youtu.be/7Gn3DRO1OHc %}
<br>
(9) Often, we need to review the changes and files we've committed to our branch. While GitHub web allows us to view these changes via its interface, JetBrains IDEs offer a seamless workflow that keeps us within the IDE. By using the ALT+9 shortcut key, you can open the IDE's Git section feature to view commits in a linear graph. This integrated feature allows you to filter commits by branch or even by author, which is especially helpful when multiple developers have contributed to a branch. 

{% youtube https://youtu.be/208nSxdJ_iM %}
<br>

(10) JetBrains IDE's integrated Git support also includes features for resolving merge conflicts. When merging or updating branches with changes from another branch, conflicts may arise. The IDE offers a practical solution by presenting a UI dialog with three editor tabs: one for each of the conflicting branches, and a center tab for the output code or common code. You can easily make changes in the center editor and choose which changes to accept from each of the two branches. 

{% youtube https://youtu.be/kcuQ8UD0F94 %}
<br>
(11) JetBrains IDE also offers a feature for comparing two Git branches and displaying their differences. This enables developers to easily identify file changes between the two branches and assess the differences. This feature can be especially useful for double-checking changes to ensure that the files changed are precisely what we want.

{% youtube https://youtu.be/UsFOb6k9x-g %}

## Conclusion
IDEs are powerful tools that significantly enhance the efficiency of developers and engineers. With the modern IDE's advancements and features, previously tedious processes can be simplified to improve the overall development experience. However, failing to leverage these capabilities to their fullest potential would be a waste. As such, it's essential to familiarize ourselves with the full capabilities of our tools to utilize them effectively for a more efficient development process.