IntelliJ IDEA
Comprehensive IntelliJ IDEA shortcuts and workflows for Java, Kotlin, and multi-language development.
General Shortcuts
Windows/Linux |
macOS |
Description |
Ctrl+Shift+A |
Cmd+Shift+A |
Find Action |
Double Shift |
Double Shift |
Search Everywhere |
Ctrl+N |
Cmd+O |
Go to Class |
Ctrl+Shift+N |
Cmd+Shift+O |
Go to File |
Ctrl+Alt+Shift+N |
Cmd+Option+O |
Go to Symbol |
Ctrl+E |
Cmd+E |
Recent Files |
Ctrl+Shift+E |
Cmd+Shift+E |
Recent Locations |
Alt+F1 |
Option+F1 |
Select In |
Ctrl+G |
Cmd+L |
Go to Line |
Ctrl+Tab |
Ctrl+Tab |
Switcher |
Navigation
Windows/Linux |
macOS |
Description |
Ctrl+B |
Cmd+B |
Go to Declaration |
Ctrl+Alt+B |
Cmd+Option+B |
Go to Implementation |
Ctrl+Shift+B |
Cmd+Shift+B |
Go to Type Declaration |
Ctrl+U |
Cmd+U |
Go to Super Method |
Alt+F7 |
Option+F7 |
Find Usages |
Ctrl+F7 |
Cmd+F7 |
Find Usages in File |
Ctrl+Shift+F7 |
Cmd+Shift+F7 |
Highlight Usages |
Ctrl+Alt+F7 |
Cmd+Option+F7 |
Show Usages |
Ctrl+H |
Cmd+H |
Type Hierarchy |
Ctrl+Shift+H |
Cmd+Shift+H |
Method Hierarchy |
Ctrl+Alt+H |
Ctrl+Option+H |
Call Hierarchy |
Editing
Windows/Linux |
macOS |
Description |
Ctrl+Space |
Ctrl+Space |
Basic Code Completion |
Ctrl+Shift+Space |
Ctrl+Shift+Space |
Smart Code Completion |
Ctrl+Alt+Space |
Ctrl+Option+Space |
Class Name Completion |
Ctrl+Shift+Enter |
Cmd+Shift+Enter |
Complete Current Statement |
Ctrl+P |
Cmd+P |
Parameter Info |
Ctrl+Q |
Ctrl+J |
Quick Documentation |
Shift+F1 |
Shift+F1 |
External Documentation |
Ctrl+F1 |
Cmd+F1 |
Show Error Description |
Alt+Insert |
Cmd+N |
Generate |
Ctrl+O |
Ctrl+O |
Override Methods |
Ctrl+I |
Ctrl+I |
Implement Methods |
Windows/Linux |
macOS |
Description |
Ctrl+Alt+L |
Cmd+Option+L |
Reformat Code |
Ctrl+Alt+O |
Ctrl+Option+O |
Optimize Imports |
Ctrl+Alt+I |
Ctrl+Option+I |
Auto-Indent Lines |
Tab |
Tab |
Indent Selection |
Shift+Tab |
Shift+Tab |
Unindent Selection |
Ctrl+X |
Cmd+X |
Cut Current Line |
Ctrl+C |
Cmd+C |
Copy Current Line |
Ctrl+D |
Cmd+D |
Duplicate Line |
Ctrl+Y |
Cmd+Backspace |
Delete Line |
Ctrl+Shift+J |
Ctrl+Shift+J |
Join Lines |
Refactoring
Windows/Linux |
macOS |
Description |
F6 |
F6 |
Move |
Shift+F6 |
Shift+F6 |
Rename |
Ctrl+F6 |
Cmd+F6 |
Change Signature |
Ctrl+Alt+N |
Cmd+Option+N |
Inline |
Ctrl+Alt+M |
Cmd+Option+M |
Extract Method |
Ctrl+Alt+V |
Cmd+Option+V |
Extract Variable |
Ctrl+Alt+F |
Cmd+Option+F |
Extract Field |
Ctrl+Alt+C |
Cmd+Option+C |
Extract Constant |
Ctrl+Alt+P |
Cmd+Option+P |
Extract Parameter |
Ctrl+Shift+F6 |
Cmd+Shift+F6 |
Type Migration |
Search and Replace
Windows/Linux |
macOS |
Description |
Ctrl+F |
Cmd+F |
Find |
F3 |
Cmd+G |
Find Next |
Shift+F3 |
Cmd+Shift+G |
Find Previous |
Ctrl+R |
Cmd+R |
Replace |
Ctrl+Shift+F |
Cmd+Shift+F |
Find in Path |
Ctrl+Shift+R |
Cmd+Shift+R |
Replace in Path |
Ctrl+F3 |
Cmd+F3 |
Find Word at Caret |
F4 |
F4 |
Find Next Occurrence |
Shift+F4 |
Shift+F4 |
Find Previous Occurrence |
Running and Debugging
Windows/Linux |
macOS |
Description |
Shift+F10 |
Ctrl+R |
Run |
Shift+F9 |
Ctrl+D |
Debug |
Ctrl+Shift+F10 |
Ctrl+Shift+R |
Run Context Configuration |
Ctrl+Shift+F9 |
Ctrl+Shift+D |
Debug Context Configuration |
F8 |
F8 |
Step Over |
F7 |
F7 |
Step Into |
Shift+F7 |
Shift+F7 |
Smart Step Into |
Shift+F8 |
Shift+F8 |
Step Out |
Alt+F9 |
Option+F9 |
Run to Cursor |
Alt+F8 |
Option+F8 |
Evaluate Expression |
F9 |
Cmd+Option+R |
Resume Program |
Ctrl+F8 |
Cmd+F8 |
Toggle Breakpoint |
Version Control
Windows/Linux |
macOS |
Description |
Ctrl+K |
Cmd+K |
Commit |
Ctrl+Shift+K |
Cmd+Shift+K |
Push |
Ctrl+T |
Cmd+T |
Update Project |
Alt+Shift+C |
Option+Shift+C |
View Recent Changes |
Alt+9 |
Cmd+9 |
Version Control Tool Window |
Ctrl+Alt+Z |
Cmd+Option+Z |
Rollback |
Ctrl+Alt+A |
Cmd+Option+A |
Add to VCS |
Live Templates
Common Java Templates
Template |
Expansion |
psvm |
public static void main(String[] args) |
sout |
System.out.println() |
souf |
System.out.printf() |
soutm |
System.out.println("methodName") |
soutp |
System.out.println("parameterName = " + parameterName) |
soutv |
System.out.println("variableName = " + variableName) |
fori |
for (int i = 0; i < ; i++) |
iter |
for (Type item : collection) |
itar |
for (int i = 0; i < array.length; i++) |
ritar |
for (int i = array.length - 1; i >= 0; i--) |
Common Kotlin Templates
Template |
Expansion |
fun |
fun functionName() \\{\\} |
main |
fun main(args: Array<String>) \\{\\} |
println |
println() |
fori |
for (i in 0 until ) |
fore |
for (item in collection) |
ifn |
if (value != null) |
inn |
if (value == null) |
Productivity Features
Code Generation
// Generate constructor
Alt+Insert → Constructor
// Generate getters/setters
Alt+Insert → Getter and Setter
// Generate toString()
Alt+Insert → toString()
// Generate equals() and hashCode()
Alt+Insert → equals() and hashCode()
// Generate test methods
Alt+Insert → Test
Postfix Completion
// Examples of postfix completion
list.for → for (String item : list)
condition.if → if (condition)
obj.null → if (obj == null)
obj.nn → if (obj != null)
obj.var → Type obj =
obj.return → return obj;
Intentions and Quick Fixes
// Common intentions (Alt+Enter)
- Convert to lambda
- Add type annotation
- Create method from usage
- Implement interface
- Add import statement
- Surround with try-catch
Project Management
File and Project Operations
Windows/Linux |
macOS |
Description |
Ctrl+Alt+Shift+S |
Cmd+; |
Project Structure |
Ctrl+Alt+S |
Cmd+, |
Settings |
Ctrl+Shift+A |
Cmd+Shift+A |
Find Action |
Ctrl+Shift+F12 |
Cmd+Shift+F12 |
Toggle Maximized Editor |
Alt+1 |
Cmd+1 |
Project Tool Window |
Alt+7 |
Cmd+7 |
Structure Tool Window |
Alt+9 |
Cmd+9 |
Version Control Tool Window |
Alt+F12 |
Option+F12 |
Terminal |
Build and Run
# Maven projects
mvn clean compile
mvn test
mvn package
mvn install
# Gradle projects
./gradlew build
./gradlew test
./gradlew run
./gradlew clean
# SBT projects (Scala)
sbt compile
sbt test
sbt run
Best Practices
Code Quality
- Use code inspections and analysis tools
- Follow coding standards and conventions
- Write comprehensive unit tests
- Use meaningful variable and method names
- Keep methods small and focused
- Use appropriate data structures
- Avoid premature optimization
- Profile code to identify bottlenecks
- Use lazy initialization when appropriate
- Minimize object creation in loops
Debugging Strategies
- Use conditional breakpoints
- Evaluate expressions during debugging
- Use logging for production debugging
- Step through code systematically
- Examine variable states and call stacks
Plugin Recommendations
- SonarLint: Code quality analysis
- CheckStyle: Code style checking
- FindBugs: Bug pattern detection
- Lombok: Reduce boilerplate code
- Database Tools: Database integration
- Docker: Container support
- Kubernetes: Orchestration support