Best Plugins For JetBrains IDEs
JetBrains IDE-s based on the IntelliJ platform are probably one of the most common IDEs in existence nowadays. Their popularity is especially visible within the JVM languages community, where IntelliJ IDEA remains the right away IDE pick for most developers. All of this is despite some new competitors showing up and old competitors overcoming their previous shortcomings and joining back the table.
In this text, I would like to describe the plugins for IntelliJ IDEA that may be a great help for you in your daily fight with your tasks, and that will make your work easier. Some plugins will be language agonistic, while others can be language dependent.
Downloadable Plugins
Linter
Static code check is a great tool and helps fight for our code quality. Additionally, it can give us an entry point about the overall system state when we start new work for an already existing system.
Fortunately, there is also a greater number of plugins we can use to make such checks.
SonarLint is probably the chief amongst them and is especially helpful when you are using sonarqube in your CI process – you can integrate your local SonarLint to use the same rules as CI SonarQube.
As for overall UX, using SonarLint from IDE gives quite a good feeling, but sonar is a relatively simple tool from the user perspective, so it should be expected. Some checks on the overall project could be faster, but after a certain number of classes, it is understandable. It can also be a reasonable way to enforce some general practices among the team.
If you want to use some other static check tool, I am aware that:
- PyCharm support pyLint plugin
- WebStorm support eslint
- probably other IDE-s support other more specialized linters, but I have no experience with working with them
Kubernetes
Most of us nowadays are using Kubernetes in one way or another via self-hosted or managed cloud services. The Kubernetes Plugin can help you interact with your k8s deployments as it provides an extensive set of functionality for working with Kubernetes.
Most notable of them:
- Browsing cluster objects,
- Extracting and editing configurations
- Describing deployments and pods
- Viewing and downloading pod logs
- Attaching pod console
- Running shell in a pod
- Forwarding ports to a pod
Additionally, the plugin adds support for working with kubernetes remotely (or locally) from your IDE. De facto adding the UI over the Kubectl to the functionalities of IDE.
If you are bored or tired using your other Kubernetes tools like kube-dashboard or Lens, then give a try to the k8s IDE plugin as it can be a way to go for you. As far as I know, the plugin is supported by all of JetBrains IDEs.
.ignore
Probably 110 % (some with more than one) of us work with some version control systems. Either git, mercurial or, god forbid, svn or anything older. Additionally, we are working with software that sometimes requires a tremendous amount of configuration that we may not want to share with others.
In such circumstances, the need to “hide” some files from others and not send them to remote repositories or not include them in our Docker containers is totally understable.
Of course, most of the tools offer their own type of ignore files - files that allow us to exclude certain other files from being sent to remote places - like .gitignore or .dockerignore but their default support for IDE is neither great nor terrible - it just is.
The .ignore plugin aims to help us work with such files by syntax highlighting or rules inspection. Moreover, the plugin can mark excluded files in the IDE project view based on the configuration from a particular .*ignore file.
Besides support for previously mentioned .gitignore and .dockerignore files, it supports other file types like .npmignore or .helmignore. The full list of supported files is long and available on the plugin home page.
Key Promoter X
Using hotkeys and keyboard shortcuts for doing stuff inside the IDE is a great way to speed up your development process. Additionally, a good set of such keys can greatly improve your general UX of using the tool.
However, remembering all the shortcuts, or even the bigger part - in fact, anything besides the ones that we are using every day - can be at least problematic, if not impossible. As in most modern day IDEs they number in dozens, and our brain built-in RAM cannot contain them all. Especially when we are using at most 5-10 shortcuts in our daily work - I do not have any hard data, it is just an educated guess based on some of my experience.
Here comes the Key Promoter X plugin, all in white. The plugin knows all the hot-keys and keeps reminding us about it each time we use the feature by manually clicking instead of using a particular shortcut. It does it by prompting such a nice pop-up in the bottom right corner of IDE.
Here you can see that I missed the shortcut for opening the terminal window 37 times and that Key Promoter reminds me of the correct one - in da face.
I agree that in the long term, such pop-ups can be distracting and annoying. However, the Key Promoter allows us to disable certain alerts, just as you can see on screen. Thus the number of alerts can be greatly decreased. Moreover, you can just configure the promoter to work only for certain shortcuts from the start.
Personally, I like to have this pop-up anyway. Maybe by accident, I will learn something new and useful. Using a key promoter can save you time reading IDE docs. Additionally, Key Promoter can be a good way to learn IDE hotkeys if you switch between systems - from Linux to Mac or vice versa.
Cloud Tools
Probably a fair pair of us (software engineers) are using some kind of cloud. You name it AWS, GCP, Azure, or some other less commonly known provider.
Fortunately for you and me (I am also using a cloud) JetBrains IDEs also have plugins for that, namely:
AWS Toolkit,
Azure Toolkit for IntelliJ
Google Cloud Code
Alibaba Cloud Toolkit (Alibaba is probably the world's biggest cloud and chief player on Asian markets).
In general, the plugins allow you to interact with your chosen cloud from IDE and manage your cloud services without changing the windows you work on. A deeper description of all of them in detail is worth an article itself, so I have just added links to each plugin homepage on JetBrains marketplace - one probably can not find better intro-level descriptions.
AI Coding Buddy
The importance of prompt engineering and overall machine learning base code helpers cannot be overseen nowadays. As the saying goes – you will not be replaced by AI but you will be replaced by a person using AI.
No matter if you prefer Copilot or Chat GPT, JetBrains IDEs have plugins for all of that. Each tool has its own unique plugin – in the case of Chat GPT it is even a few plugins, so you can choose whichever suits you best.
Of course, some problems may arise in case you are interested in less commonly known coding helpers, but maybe there is also a plugin for them. There are even plugins for quick Stack Overflow search (more than one) if you prefer a more “old-fashioned” approach to prompt-supported coding.
.env files support
A great plugin, especially when you are working a lot with all kinds of environmental variables.
It promises and delivers better support for name completion, go-to usage and definition (same as normal go-to included in base IDE), and of course, syntax highlighting.
Such a set of features can be very helpful while working with docker or docker-compose files which in many cases have at least a couple of environmental variables inside.
Additionally, if you are using PyCharm and .env files, the plugin also promises additional support over the one provided by IDE.
Here is an example of .env files supported in PyCharm.
- Without plugin
- With plugin
For me, the colored one looks better, and for you?
Rainbow Brackets
A very interesting and not so little plugin implementing a very simple yet extremly useful idea. It is just using different colors to mark openings and closings of brackets inside our code.
Additionally, each variable has its unique color, which is constant through all of its usage in a particular scope thus, we can easily catch which variable is used where.
Unfortunately, the plugin is not open source, and only a part of the features is available in the free version. On the other hand, the cost is relatively low - a yearly subscription costs 15 USD, full pricing can be viewed here.
Below is a simple presentation of what Rainbow is doing with your code. For me, it looks way more readable than plain old InteliJ white, and you?
Picture from official plugin page: https://plugins.jetbrains.com/plugin/10080-rainbow-brackets
gRPC
Even if you are not a particular fan of Google and its doings, you must have heard about gPRC. If not, then my last piece of text may be interesting for you.
Over recent years gRPC gained quite an audience. JetBrains also addressed the issue of its support through their IDES. Thus the gRPC plugin was created.
It adds standard IDE support like syntax highlighting and go-to options for .proto files alongside some easily available documentation for gRPC building blocks.
What is more, it allows us to create gRPC calls in IDEs' built-in HTTP client, effectively giving us a gRPC client we can use to call local and remote APIs. They also have decent documentation on how to do that - here is the link.
Randomness
Quite a powerful utility plugin that specializes in generating all kinds of dummy data. The plugin is especially useful when writing tests – personally, I always have a problem with all the naming there, and in most cases, I end up with things like String testName = “test-{n}”
.
As for now, plugin supports five basic types of data:
- Integers, such as 7,826,922, in any base from binary to hexatrigesimal (base 36).
- Decimals, such as 8,816,573.10, using customisable separators.
- Strings, such as "PaQDQqSBEH", with custom symbol lists.
- Words, such as "Bridge", with custom word lists.
- UUIDs, such as 0caa7b28-fe58-4ba6-a25a-9e5beaaf8f4b, with or without dashes.
String Manipulation
The plugin can make all kinds of magic with plain text for you. First of all it gives you the possibilities to easily switch cases of your text from kebab-case / snake_case or PascalCase / camelCase.
Besides that, it allows for things like encoding of text to HTML. Moreover, it can do all kinds of operations on plain text - swap words, reverse letters or multi replace, and many others.
I advise you to visit the plugin home page and check its complete feature list. You may find the one feature that you were missing until this point, and that will change your view.
IdeaVim
The plugin adds an extensive set of VIM features to IDE, from the simple inserts and removes to Vim hot-keys. It also supports vim macros and plugins, effectively creating the fully functional VIM foreground over your IDE.
Personally, I am not a fan, however I can see certain benefits especially if you are a VIM fan and have high proficiency in using it. In such cases the plugin can boost your coding speed. On the other hand, if you are a VIM newcomer, the plugin can also be a decent way of learning how to use VIM – at least quitting the VIM is easier here than in the terminal.
CPU Usage Indicator
A “small” utility plugin which adds information about our current CPU usage in the bottom right corner of the IDE screen. Additionally, adding the information about the system CPU consumed by IDE itself.
It also has some options that may be especially useful for troubleshooting potential IDE memory problems like taking the thread dump from the last IDE freeze.
Just please keep in mind that constantly asking for CPU usage can be an “expensive” operation.
Nyan Progress Bar
Here comes the real champion of all the plugins for JetBrains IDEs, the plugin that will change your life and the way you are using your IDE, the Nyan Progress Bar.
The plugin replaces the classic JetBrains progress bar with super extra Nyan Cat animation.
There is nothing more I can say here but join me in the Nyan Progress Bar club – it is totally worth it.
Themes bundles
The ability to customize the look of our IDE - probably the most viewed single window in our daily life - and express ourselves in some way may be quite an important thing for many people.
Thus JetBrains IDEs also have plugins for that - in fact quite a few of them starting from “simple” colors changes in the form of plugins like Material Theme UI through the additional icons pack in the form of plugins like Atom Material Icons.
Everyone can pick something which suits their needs – just be careful. Choosing and customized your perfect color design can take a very very long time (trust me - been there, done that, wasted a lot of time).
JMH plugin
If you are a software engineer related to the JVM ecosystem, you probably have heard about JMH – the microbenchmark framework for JVM applications.
This plugin adds full support of JMH to IDE. The level of support it provides is in pair with one IDE already has for libraries like JUnit or TestNG.
We can run the singular, run whole test suite from IntelliJ or pass configuration from the standard IDE window.
Scala
I would not be myself (Scala Software Engineer) if I would not mention this plugin. It adds full support for Scala syntax, build tools, and test libraries.
Basically, providing a similar level of support as Java has from IntelliJ. Of course, there are some corner cases – like more complex implicit or Scala 3 support, but nevertheless, the level of support as a whole is pretty good.
The plugin even has its own blog and Twitter profile, so if you want to know what is up in the plugin, both things may be worth following or checking from time to time.
IntelliJ with this plugin is by far my favorite Scala IDE despite Metals rapidly growing in strength and fame.
Built-in Plugins
Docker
The plugin was added to the default IDE plugin bundle in the November 2017 release. It focuses on extending an already existing set of IDE capabilities with Docker integration.
It allows for connecting with local or remote Docker runtime and images. Besides, it adds standard (go-to, syntax highlight) support for docker compose and docker file, making it easier to work with.
Additionally, it allows running and debugging docker images from IDE. Despite not being as advanced as Docker Desktop, it can be a reasonable replacement if, for some reasons, you cannot use it.
Lombok
This plugin is a vital point of interest for Java software engineers as it adds standard IDE support for Lombok annotations. Lombok, on the other hand, tries to address a few mondayne problems the Java language has. If the Lombok way is correct or not is another matter, and it is quite out of the scope of this article.
The plugin is relatively “simple” however, it is an interesting case to observe JetBrains’ reaction to feedback from their community. The plugin started as a community plugin and was then added by JetBrains to the standard IntelliJ plugins bundle based on the feedback from the users community.
Summary
JetBrains IDEs are quite powerful beasts by themselves, but via usage of plugins we can bring their set of features to a whole new level. They are essentially ending up with an all-in-one machine for doing all kinds of things related to our daily work without even switching windows – that is the level of time-managed optimization.
Thank you for your time.
Reviewed by Krzysztof Atłasik