JetBrains IDEs

All JetBrains IDEs share the same interface, and many common features such as:

  • πŸš€ Code improvement tips
  • 🧼 Bugs, code smells, and typos detection
  • ✨ GIT integration
  • 🌍 Use of remote tools or environment
  • πŸ—ΊοΈ UML generation for supported languages

And in each IDE, some languages, frameworks, and build tools have additional features and support.

πŸ’΅ Aside from IntelliJ IDEA and PyCharm, all IDEs are paid.

πŸ“± Android Studio, by Google, is based on IntelliJ IDEA community.

πŸŽ“ Their IDEs are free for students.

πŸ”₯ You can manage all of their IDEs using the toolbox.

🌍 You can invite others to code with you. Use CTRL+SHIFT+Y to generate a link. They will have to download a special version of the IDE. You can share your terminal with + > shared.

Running some code

There is a green play icon next to the code that you can run:


This will create a Run configuration, which is a wrapper to all information related to the execution of your program. You could add compiler options, program arguments...

You can create, edit, or select a configuration here:


Basic file edition

When coding, the IDE will highlight or underline problems.


  • πŸŸ₯: this code won't compile
  • 🟨: possible problem/warning
  • 🟩: there may be a typo
  • 🌫️: unused value or variable

In practice, there are more variations according to the specific problem.

Quick fixes

By hovering over a problem, you'll have an explanation, along with suggested fixes. There is the ALT+ENTER shortcut for all quick fixes.

Quick fixes


When writing something, use TAB to select a choice from the suggested list. Use arrows to move up/down.

Use CTRL+ENTER to manually trigger auto-completion.


πŸ”₯ There is a search menu to look for files (CTRL+SHIFT+N), settings (CTRL+SHIFT+A). Open it with Double Shift.

  • To enable zoom on scroll, search mouse wheel.
  • To add a * to modified files, search mark modified.
  • To set the proofreading language, search natural language.
  • To enable soft wraps, search soft wrap.

Editing shortcuts

  • CTRL+C, CTRL+V, CTRL+X, CTRL+A, CTRL+F: common ones
  • CTRL+D: duplicate line or selection
  • SHIFT+ARROWS: select a lot of lines
  • CTRL+Z: undo
  • CTRL+SHIFT+Z: redo πŸ™„
  • CTRL+SHIFT+F: look for a word in a scope (project, folder...)

Use CTRL+SHIFT+U to toggle uppercase/lowercase.



  • CTRL+Q: show the documentation of the selected element
  • CTRL+/: comment selected lines (inline comment, such as //)
  • CTRL+SHIFT+/: comment selected lines (block comment, such as /*)


  • ALT+INSERT: generate getters, setters, methods...
  • CTRL+ALT+T: wrap selection inside a if/for/...
  • CTRL+ALT+MAJ+U (paid): generate UML of selected files


  • SHIFT+MouseLeft: on a function call/..., navigate to the source
  • ALT+F7: on a function/variable, list users
  • CTRL+SHIFT+E: show the last opened/edited files

πŸ‘‰ Using todo or fixme in a comment, mark it as a TO-DO.



The interface has often changed over the years, especially as they are moving to a more compact interface.

πŸ‘‰ Use CTRL+E to see available menus.

πŸ”₯ There is a GIT menu and a TODO menu which are helpful.


The context menu is the left-click menu. These are worth a mention:

  • Analyze πŸ”Ž: list all code smells, typos...
  • Refactor 🎯: rename an element (smart renaming)
  • Reformat 🧼: code cleanup
  • Local History πŸ–ΌοΈ: all changes to a file


There are two tabs: the "commit" tab (ALT+0), to commit and push, and the "git" tab (ALT+9), to see commits, checkout branch...

Refactor 🧼

You can refactor (rename) variables, functions, files. Once you do try, you'll see a list of all detected locations that use the element.

✨ Before confirming the refactoring, you can exclude or remove unwanted changes.

Snippets πŸš€

Navigate to Settings > Editor > Live template. Create a new live template. Select the scope where it can be used.

You can create variables using $variable_name$.

πŸ‘» To-do πŸ‘»

Stuff that I found, but never read/used yet.

  • ```xxx!
  • scratch files
  • Project view
  • CTRL-P
  • Database (select a schema, SSH tunnel, query console)