https://www.jetbrains.com/idea/
The best IDE ever for coding in my opinion.
Feature rich and easy to use - the opposite end of vim!
- IntelliJ IDEA vs PyCharm
- Install
- Settings Sync
- Set Web Browser
- Distraction Free Mode
- Shortcuts
- Plugins
- Scripted Plugin Install
- Manual Plugin Installation
- Docker, Kubernetes and Terraform
- Languages
- Core Editing, Git & File Formats
- Usage Stats
- Cloud
- CI/CD
- Optional - Nice to Haves
- Python
- JavaScript
- Java / Groovy / Scala / Kotlin & JVM Tools
- Misc Languages
- Debugging
- AI Plugins
- Pair Programming
- More Plugins
- Troubleshooting
- See Also
If you're only doing Python then you may want to just get PyCharm.
If you're a serious experienced programmer or 'DevOps' you're probably a polyglot programmer who edits other files.
In that case stick to full IntelliJ with plugins (see Plugins section further down).
Plugins supported in PyCharm are usually also compatible with IntelliJ IDEA too as they're based on the same IDE framework by IntelliJ.
brew install intellij-idea-ce
Make sure to sync settings to JetBrains.
Settings
-> Settings Sync
-> Enable Settings Sync
Choose JetBrains (log in with GitHub account or other social login).
Defaults to following the system default browser.
IntelliJ
-> Settings
-> Tools
-> Web Browsers and Preview
Hides all bars, max code space:
View
-> Appearance
-> Enter Distraction Free Mode
Cmd
-Shift
-A
This will allow you to type to search and find any action and hit enter to open it, such as a settings page, but it also shows the actual configured keyboard shortcut for things like commenting out a line.
This is useful because the internet is often wrong on the shortcuts depending on whether your're on Windows / Mac or different versions.
This is the authoritative shortcut of what your local keyboard shortcuts really are.
Alternative Keys when you see Windows vs Mac keyboard shortcuts:
Windows | Mac |
---|---|
Ctrl |
Cmd |
Alt |
Option |
Ctrl-Alt |
Cmd-Option |
Command | Description |
---|---|
Cmd -; |
Project Dialog configure JDK |
Cmd -, |
Settings dialogue |
Ctrl -Shift -T |
detect + put handlers around select code block |
Ctrl -Alt -T |
select, Ctrl-W (to increase selection), Right-click -> Surround With -> if, try/catch (finds + adds all exceptions), synchronized ... |
Ctrl -W |
increase selection |
Ctrl -N |
open class by name |
Ctrl -Shift -N |
open file by name |
Ctrl -Space |
autocomplete |
Alt -F7 |
find all places class/variable/method under cursor is used |
Ctrl -Q |
show doc for class/method under cursor |
Ctrl -B |
jump to declaration |
Ctrl -Alt -B |
jump to Abstract Method's implementation |
Ctrl -F6 |
rename all locations of selected variable/method/class (Refactor -> Rename) |
Ctrl -F12 |
show methods of class to jump to |
Ctrl -Shift -Space |
prompt for available methods/variables or objects of type if type specified on left |
Ctrl -P |
in parens() opens pop-up list of valid parameters |
Ctrl -I |
implements methods for class interface |
Ctrl -O |
overrides method of class |
Alt -Insert / Code -> Generate |
creates setters + getters |
Shift -F1 / View -> External Document |
opens in browser |
Code completion Tab
to replace rest of name rather than Enter.
Shortcuts differ between Windows and Mac, and even between versions.
You can use this command (doc) to install plugins quickly from the command line:
idea installPlugins "$plugin_name_or_id"
You must exit IntelliJ before running this as only one idea
program can be running at a time.
These can be installed all in one shot using the script install_intellij_plugins.sh
in the DevOps-Bash-tools repo:
install_intellij_plugins.sh
You can add / comment / uncomment which plugins to install in the adjacent setup/intellij-plugins.txt
config file in that same repo.
Can download plugin zips + install from disk where direct internet/proxy access is blocked (eg. banks).
Zips must align to IntelliJ version.
- Docker
- Terraform and HCL
- Kubernetes - only available in Ultimate Edition :-(
idea installPlugins \
Docker \
org.intellij.plugins.hcl
#com.intellij.kubernetes # only available in Ultimate Edition :-(
- Shell Script - shell support
- Bash Support
- Perl
- Python - see Python section further down
- Java/Groovy/Scala/Kotlin/Maven/SBT/Gradle - see JVM section further down
- Go Linter
- Ruby - only compatible with paid-for Ultimate edition :-(
- Ruby Scripting (3rd party alternative)
idea installPlugins \
com.jetbrains.sh \
BashSupport \
com.perl5 \
com.ypwang.plugin.go-linter \
org.jetbrains.intellij.scripting-ruby
- .ignore - supports various
.ignore
files for different technologies - Code Glance - adds a minimap of the file
- Grep Console
- Better Highlights
- BrowseWordAtCaret
- Editor Config
- GitLink - shortcut to open files on GitHub and other hosted repo providers
- Git Toolbox - automatic fetches, show status vs upsteam origin
- CSV Editor
- JSON Parser - validate & format JSON strings
- CamelCase
- RegexpTester
- Database Navigator
- Markdown Navigator Enhanced
- Mermaid
- Zero Width Characters locator - find characters that could break your code
- Env files support
- String Manipulation
- Rainbow Brackets
- Rainbow CSV
- Indent Rainbow
- Return Highlighter
idea installPlugins \
mobi.hsz.idea.gitignore \
org.editorconfig.editorconfigjetbrains \
uk.co.ben-gibson.remote.repository.mapper \
zielu.gittoolbox \
net.vektah.codeglance \
GrepConsole \
com.clutcher.comments_highlighter \
BrowseWordAtCaret \
net.seesharpsoft.intellij.plugins.csv \
com.godwin.json.parser \
de.netnexus.camelcaseplugin \
org.intellij.RegexpTester \
DBN \
com.vladsch.idea.multimarkdown \
com.intellij.mermaid \
com.ultrahob.zerolength.plugin \
ru.adelf.idea.dotenv \
"String Manipulation" \
izhangzhihao.rainbow.brackets \
com.andrey4623.rainbowcsv \
indent-rainbow.indent-rainbow \
com.github.lppedd.idea-return-highlighter
- WakaTime - stats on your usage
- Code Time - stats on your usage
- Statistic - shows project stats, files, line count etc.
idea installPlugins \
com.wakatime.intellij.plugin \
com.softwareco.intellij.plugin \
Statistic \
- AWS ToolKit - Amazon CodeWhisperer integration
- Azure Toolkit for IntelliJ
- Google Cloud Code
idea installPlugins \
aws.toolkit \
com.microsoft.tooling.msservices.intellij.azure \
com.google.gct.core
- Jenkins Pipeline Linter
- Jenkins Control
- Groovy - for your Groovy Shared Library functions
- Teamcity - just use Jenkins instead - see the Jenkins-on-Kubernetes page for easy Kubernetes automated deployment
- SonarLint
- Synk Security
idea installPlugins \
com.github.mikesafonov.jenkins-linter-idea-plugin \
'Jenkins Control Plugin' \
org.intellij.groovy \
"Jetbrains TeamCity Plugin" \
io.snyk.snyk-intellij-plugin \
org.sonarlint.idea # use with SonarQube / SonarCloud
- IDEA Features Trainer - teaches you the IDE
- Key Promoter X - teaches you keyboard shortcut when you click with the mouse
- Material Theme UI
- Extra Icons - adds icons for different file types
- Atom Material Icons - nicer file icons
- Yet another emoji support
- Mongo
- Pieces - code snippets - you should be using libraries but unfortunately some languages have boilerplate for which library do not solve the repetition between programs. See also HariSekhon/Templates
idea installPlugins \
training \
"Key Promoter X" \
com.chrisrm.idea.MaterialThemeUI \
lermitage.intellij.extra.icons \
com.mallowigi \
com.github.shiraji.yaemoji
#"Mongo Plugin" # who uses Mongo any more?
- Python (contains better support for Jython than PyCharm - cross-language navigation, completion and refactoring)
- Requirements
- PyLint
- Mypy
- Live Coding in Python
- Python Enhancements
- Python Security
- Python Annotations
idea installPlugins \
PythonCore \
ru.meanmail.plugin.requirements \
com.leinardi.pycharm.pylint \
com.leinardi.pycharm.mypy \
io.github.donkirkby.livepycharm \
com.pythondce \
org.tonybaloney.security.pycharm-security \
ru.meanmail.plugin.pyannotations
For IntelliJ Ultimate swap PythonCore
for Pythonid
.
idea installPlugins \
NodeJS \
com.wix.eslint \
intellij.prettierJS
quokka.js \
- Groovy
- Scala
- Kotlin
- Maven Helper
- SBT
- Gradle
- Gradle/Maven Navigation
- JBang
- Sprint Boot Assistant
- Lombok - automates generating getters/setters etc.
- JRebel - auto-reload code changes
- XRebel - performance profiling
idea installPlugins \
org.intellij.scala \
org.jetbrains.kotlin \
MavenRunHelper \
SBT \
com.intellij.gradle \
tv.twelvetone.gradle.plugin.navigation \
dev.jbang.intellij.JBangPlugin \
dev.flikas.idea.spring.boot.assistant.plugin \
Lombook Plugin \
JRebelPlugin
- Graph Database - for Neo4J Cypher
- Pig - for Apache Pig Latin
idea installPlugins \
com.albertoventurini.jetbrains.graphdbplugin \
org.apache.pig.plugin.idea
- SpotBugs
- LiveEdit - shows changes instantly for JavaScript, HTML, can enable for NodeJS etc.
- Lightrun - for live running code debugging using Lightrun
- Rookout
idea installPlugins \
org.jetbrains.plugins.spotbugs \
com.intellij.plugins.html.instantEditing \
com.lightrun.idea.plugin.saas.LightrunPlugin \
com.rookout.intellij-plugin
- JetBrains AI Assistant
- AWS ToolKit - Amazon CodeWhisperer integration
- TabNine - AI code suggestions
- Codota AI Autocomplete for Java and JavaScript
idea installPlugins com.codota.csp.intellij
- GitHub CoPilot
- AI Coding Assistant
- Codiumate - CodiumAI integration
idea installPlugins \
com.tabnine.TabNine
- Code with Me - pair programming
- Duckly Pair Programming
- Better Highlights
idea install com.clutcher.comments_highlighter
- MultiRun
- Randomness
- CodeMetrics
- MetricsReloaded
- CPU Usage Indicator - use Stats on Mac instead
This is caused by opening markdown files (eg. README.md
) in the same IntelliJ that is already opened in another project.
IntelliJ interprets the relative paths to be from the root of the repo instead of from the path of the opened markdown file.
Solution: open the project directory in a separate IntelliJ window and then open the markdown file in that instance window of IntelliJ.
When configuring External Tools to run scripts (recommended with hotkeys), you may encounter this error running the external tool configuration if using single quotes.
[: -c: line 1: unexpected EOF while looking for matching `''
This is caused by an Args configuration like this (eg. for a Program: bash
):
-c '[ -f .envrc ] && . .envrc; markdown_replace_index.sh $FilePath$'
which works on the command line but not in IntelliJ.
Solution: replace the single quotes with double quotes:
-c "[ -f .envrc ] && . .envrc; markdown_replace_index.sh $FilePath$"
Expression Evaluation
Productivity Guide (tracks how often you use each shortcut)
Ported from various private Knowledge Base pages 2013+