SlideShare a Scribd company logo
Intellij IDEA
Intro, Tips and Tricks
vitojeng
vito@is-land.com.tw
2017.11.21
Intro
● IntelliJ IDEA is a Java integrated development environment (IDE) for developing
computer software. (wikipedia)
● Two editions
○ Ultimate Edition
○ Community Edition - opensourced in github
○ Comparison matrix
● We use community edition in this talk.
Languages support
Rust(WIP)
User Interface
● Default IDE Layout
○ Menu & Toolbar
○ Navigation bar
○ Status bar
○ Editor
○ Tool Windows
● Keymap
● Help
Help
● Project(What is project?)
○ Configuration format
■ Directory-based(.idea/, *.xml)
■ File-based(.ipr, *.iws)
● Module(What is a module?)
○ .iml
● Version control(if you want)
○ .xml , .ipr, .iml
○ Exclude:
■ workspace.xml
■ *.iws
Project & Module concept
Intellij
Window 1
Window 2
Project A
Project B
Module A1
Module A2
Module B1
Module B2
Choose a Suitable Keymap is Important
Mac OS X 10.5+ : If you are using IntelliJ
IDEA only on Mac OS, we recommend
choosing the schema named “Mac OS X
10.5+”.
Mac OS X : The default “Mac OS X” schema
is recommended if you use IntelliJ IDEA on
other platforms too as the bindings are more
alike to the default Windows/Linux schema.
I use Mac OS X keymap in multi-platforms.
Scala Guidelines
● https://www.jetbrains.com/help/idea/
scala.html
● Search help
New Project in Intellij IDEA(without SBT)
● Just Play Scala !
● New Project Wizard
○ File | New | Project...
■ Java - Add Scala Libraries
■ Scala - IDEA-based Scala project
New / Import Project in Intellij IDEA(with SBT)
● Many Scala project use SBT.
● New Project Wizard
○ File | New | Project...
■ SBT-based Scala project
● Import Project Wizard
○ File | New | Project from Existing Sources...
■ choose a folder(existing SBT project)
● Import project from external model (SBT/Gradle/Maven)
Working with SBT
● Tool Windows
○ Project
○ SBT
○ SBT Shell
● Attach debugger to SBT
Shell
Working with Scala Worksheet
● REPL mode in Intellij IDEA
● How about Ammonite support ?
○ Look like there will be something in 2017.3(public preview)
○ Stay tuned ! (github, youtrack)
Desugar Scala
● Code | Desugar Scala code ...
● Show Diff
Work with Git / Github
● Import Git / Github project
○ Command line
■ $ git clone
■ File | New | Project from Existing Sources...
■ Import SBT project
○ User interface
■ File | New | Project from Version Control | Github
■ SBT project detected: Import SBT project
Work with Git / Github
● Mutiple Version Control in the same Project
○ Mutiple git repo
○ Mix with different version control
Work with Git / Github
● Switch Branch
● Local Changes
● Log
● Show History
● Show Diff
● Keyboard Shortcuts You Cannot Miss
● Example
● Help | Keymap Reference
Keymap & Keyboard Shortcuts
Menu - Edit | Find / Replace
● Find... / Replace...
● Find in Path... / Replace in Path...
● Find Usages
● Search Structurally...
Menu - View
● Quick Definition
● Quick Documentation
● Recent Files
● Compare With...
Menu - Navigate
● Class...
● File...
● Symbol...
● Select In...
● File Structure
Menu - Code
● Generate...
● Surround With...
● Unwrap/Remove...
● Desugar Scala code...
Menu - Refactor
Menu - Build / Run / Tools
Look into Large Project
● Add Scope
○ Preferences | Appearance & Behavior | Scopes
● Edit | Find | Find in Path...
○ Use Scope
○ Filter
● Edit | Find | Search Structurally...
● Navigate | Type Hierarchy
● Navigate | Method Hierarchy
● Navigate | Call Hierarchy
Look into Large Project
● Menu: Analyze
○ Analyze Dependencies ...
○ Analyze Backward Dependencies ...
○
Markdown support
Performance
● Intellij IDEA's cache is sometimes not quite right enough to cause performance
issue.
○ Rebuild cache
■ File | Invalidate Caches / Restart
● Too many Scala classes may cause very slow editor response
○ Turn off some inspections of Scala
■ Preferences | Editor | Inspections | Scala Category
Join ScalaTaiwan Gitter Room!
https://gitter.im/ScalaTaiwan/ScalaTaiwan
Thank you !

More Related Content

Similar to Intellij IDEA Intro, Tips and Tricks

Friction Logging and Internal Advocacy, DevRel/Asia 2020
Friction Logging and Internal Advocacy, DevRel/Asia 2020Friction Logging and Internal Advocacy, DevRel/Asia 2020
Friction Logging and Internal Advocacy, DevRel/Asia 2020
Emma Haruka Iwao
 
Mono Repo
Mono RepoMono Repo
Mono Repo
Zacky Pickholz
 
Drools & jBPM Workshop London 2013
Drools & jBPM Workshop London 2013Drools & jBPM Workshop London 2013
Drools & jBPM Workshop London 2013
Mauricio (Salaboy) Salatino
 
Pentester++
Pentester++Pentester++
Pentester++
CTruncer
 
Programming Android
Programming AndroidProgramming Android
Programming Androidleague
 
Jbake workshop (Greach 2019)
Jbake workshop (Greach 2019)Jbake workshop (Greach 2019)
Jbake workshop (Greach 2019)
Mario García
 
How I Built My Code Editor in Ruby
How I Built My Code Editor in RubyHow I Built My Code Editor in Ruby
How I Built My Code Editor in Ruby
Andy Maleh
 
Montreal.rb 2022-10-05 - Glimmer DSL for SWT - Ruby Desktop Development GUI ...
 Montreal.rb 2022-10-05 - Glimmer DSL for SWT - Ruby Desktop Development GUI ... Montreal.rb 2022-10-05 - Glimmer DSL for SWT - Ruby Desktop Development GUI ...
Montreal.rb 2022-10-05 - Glimmer DSL for SWT - Ruby Desktop Development GUI ...
Andy Maleh
 
How to keep maintainability of long life Scala applications
How to keep maintainability of long life Scala applicationsHow to keep maintainability of long life Scala applications
How to keep maintainability of long life Scala applications
takezoe
 
Open source projects with python
Open source projects with pythonOpen source projects with python
Open source projects with python
roskakori
 
Becoming A Drupal Master Builder
Becoming A Drupal Master BuilderBecoming A Drupal Master Builder
Becoming A Drupal Master Builder
Philip Norton
 
Devoxx : being productive with JHipster
Devoxx : being productive with JHipsterDevoxx : being productive with JHipster
Devoxx : being productive with JHipster
Julien Dubois
 
24 uses for perl6
24 uses for perl624 uses for perl6
24 uses for perl6
Simon Proctor
 
Engage 2018 adm04 The lazy admin wins
Engage 2018   adm04 The lazy admin winsEngage 2018   adm04 The lazy admin wins
Engage 2018 adm04 The lazy admin wins
Factor-y S.r.l.
 
Engage 2018 adm04 - The lazy admin wins
Engage 2018   adm04 - The lazy admin winsEngage 2018   adm04 - The lazy admin wins
Engage 2018 adm04 - The lazy admin wins
Matteo Bisi
 
Dart the better Javascript 2015
Dart the better Javascript 2015Dart the better Javascript 2015
Dart the better Javascript 2015
Jorg Janke
 
Lupus Decoupled Drupal - Drupal Austria Meetup - 2023-04.pdf
Lupus Decoupled Drupal - Drupal Austria Meetup - 2023-04.pdfLupus Decoupled Drupal - Drupal Austria Meetup - 2023-04.pdf
Lupus Decoupled Drupal - Drupal Austria Meetup - 2023-04.pdf
WolfgangZiegler6
 
R programming for data science
R programming for data scienceR programming for data science
R programming for data science
Sovello Hildebrand
 

Similar to Intellij IDEA Intro, Tips and Tricks (20)

Friction Logging and Internal Advocacy, DevRel/Asia 2020
Friction Logging and Internal Advocacy, DevRel/Asia 2020Friction Logging and Internal Advocacy, DevRel/Asia 2020
Friction Logging and Internal Advocacy, DevRel/Asia 2020
 
Mono Repo
Mono RepoMono Repo
Mono Repo
 
Drools & jBPM Workshop London 2013
Drools & jBPM Workshop London 2013Drools & jBPM Workshop London 2013
Drools & jBPM Workshop London 2013
 
Pentester++
Pentester++Pentester++
Pentester++
 
Programming Android
Programming AndroidProgramming Android
Programming Android
 
Jbake workshop (Greach 2019)
Jbake workshop (Greach 2019)Jbake workshop (Greach 2019)
Jbake workshop (Greach 2019)
 
How I Built My Code Editor in Ruby
How I Built My Code Editor in RubyHow I Built My Code Editor in Ruby
How I Built My Code Editor in Ruby
 
Bootstrap4 x pages
Bootstrap4 x pagesBootstrap4 x pages
Bootstrap4 x pages
 
Montreal.rb 2022-10-05 - Glimmer DSL for SWT - Ruby Desktop Development GUI ...
 Montreal.rb 2022-10-05 - Glimmer DSL for SWT - Ruby Desktop Development GUI ... Montreal.rb 2022-10-05 - Glimmer DSL for SWT - Ruby Desktop Development GUI ...
Montreal.rb 2022-10-05 - Glimmer DSL for SWT - Ruby Desktop Development GUI ...
 
How to keep maintainability of long life Scala applications
How to keep maintainability of long life Scala applicationsHow to keep maintainability of long life Scala applications
How to keep maintainability of long life Scala applications
 
Open source projects with python
Open source projects with pythonOpen source projects with python
Open source projects with python
 
Becoming A Drupal Master Builder
Becoming A Drupal Master BuilderBecoming A Drupal Master Builder
Becoming A Drupal Master Builder
 
Devoxx : being productive with JHipster
Devoxx : being productive with JHipsterDevoxx : being productive with JHipster
Devoxx : being productive with JHipster
 
24 uses for perl6
24 uses for perl624 uses for perl6
24 uses for perl6
 
Engage 2018 adm04 The lazy admin wins
Engage 2018   adm04 The lazy admin winsEngage 2018   adm04 The lazy admin wins
Engage 2018 adm04 The lazy admin wins
 
Engage 2018 adm04 - The lazy admin wins
Engage 2018   adm04 - The lazy admin winsEngage 2018   adm04 - The lazy admin wins
Engage 2018 adm04 - The lazy admin wins
 
ICT4D course 2013 - Sugar
ICT4D course 2013 - SugarICT4D course 2013 - Sugar
ICT4D course 2013 - Sugar
 
Dart the better Javascript 2015
Dart the better Javascript 2015Dart the better Javascript 2015
Dart the better Javascript 2015
 
Lupus Decoupled Drupal - Drupal Austria Meetup - 2023-04.pdf
Lupus Decoupled Drupal - Drupal Austria Meetup - 2023-04.pdfLupus Decoupled Drupal - Drupal Austria Meetup - 2023-04.pdf
Lupus Decoupled Drupal - Drupal Austria Meetup - 2023-04.pdf
 
R programming for data science
R programming for data scienceR programming for data science
R programming for data science
 

More from vito jeng

Quill - 一個 Scala 的資料庫存取利器
Quill - 一個 Scala 的資料庫存取利器Quill - 一個 Scala 的資料庫存取利器
Quill - 一個 Scala 的資料庫存取利器
vito jeng
 
Scala fun part: Reflection(runtime)
Scala fun part: Reflection(runtime)Scala fun part: Reflection(runtime)
Scala fun part: Reflection(runtime)
vito jeng
 
Streaming process with Kafka Connect and Kafka Streams
Streaming process with Kafka Connect and Kafka StreamsStreaming process with Kafka Connect and Kafka Streams
Streaming process with Kafka Connect and Kafka Streams
vito jeng
 
ScalaMatsuri 2017 Note
ScalaMatsuri 2017 NoteScalaMatsuri 2017 Note
ScalaMatsuri 2017 Note
vito jeng
 
The SparkSQL things you maybe confuse
The SparkSQL things you maybe confuseThe SparkSQL things you maybe confuse
The SparkSQL things you maybe confuse
vito jeng
 
Scala introduction
Scala introductionScala introduction
Scala introduction
vito jeng
 
JavaScript Web Development
JavaScript Web DevelopmentJavaScript Web Development
JavaScript Web Development
vito jeng
 

More from vito jeng (7)

Quill - 一個 Scala 的資料庫存取利器
Quill - 一個 Scala 的資料庫存取利器Quill - 一個 Scala 的資料庫存取利器
Quill - 一個 Scala 的資料庫存取利器
 
Scala fun part: Reflection(runtime)
Scala fun part: Reflection(runtime)Scala fun part: Reflection(runtime)
Scala fun part: Reflection(runtime)
 
Streaming process with Kafka Connect and Kafka Streams
Streaming process with Kafka Connect and Kafka StreamsStreaming process with Kafka Connect and Kafka Streams
Streaming process with Kafka Connect and Kafka Streams
 
ScalaMatsuri 2017 Note
ScalaMatsuri 2017 NoteScalaMatsuri 2017 Note
ScalaMatsuri 2017 Note
 
The SparkSQL things you maybe confuse
The SparkSQL things you maybe confuseThe SparkSQL things you maybe confuse
The SparkSQL things you maybe confuse
 
Scala introduction
Scala introductionScala introduction
Scala introduction
 
JavaScript Web Development
JavaScript Web DevelopmentJavaScript Web Development
JavaScript Web Development
 

Recently uploaded

OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
takuyayamamoto1800
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
Globus
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar
 
Visitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.appVisitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.app
NaapbooksPrivateLimi
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
Globus
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Globus
 
Advanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should KnowAdvanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should Know
Peter Caitens
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Globus
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
Georgi Kodinov
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
abdulrafaychaudhry
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
IES VE
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Anthony Dahanne
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
XfilesPro
 
Software Testing Exam imp Ques Notes.pdf
Software Testing Exam imp Ques Notes.pdfSoftware Testing Exam imp Ques Notes.pdf
Software Testing Exam imp Ques Notes.pdf
MayankTawar1
 
Strategies for Successful Data Migration Tools.pptx
Strategies for Successful Data Migration Tools.pptxStrategies for Successful Data Migration Tools.pptx
Strategies for Successful Data Migration Tools.pptx
varshanayak241
 

Recently uploaded (20)

OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
 
Visitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.appVisitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.app
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
 
Advanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should KnowAdvanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should Know
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
 
Software Testing Exam imp Ques Notes.pdf
Software Testing Exam imp Ques Notes.pdfSoftware Testing Exam imp Ques Notes.pdf
Software Testing Exam imp Ques Notes.pdf
 
Strategies for Successful Data Migration Tools.pptx
Strategies for Successful Data Migration Tools.pptxStrategies for Successful Data Migration Tools.pptx
Strategies for Successful Data Migration Tools.pptx
 

Intellij IDEA Intro, Tips and Tricks

  • 1. Intellij IDEA Intro, Tips and Tricks vitojeng vito@is-land.com.tw 2017.11.21
  • 2. Intro ● IntelliJ IDEA is a Java integrated development environment (IDE) for developing computer software. (wikipedia) ● Two editions ○ Ultimate Edition ○ Community Edition - opensourced in github ○ Comparison matrix ● We use community edition in this talk.
  • 4. User Interface ● Default IDE Layout ○ Menu & Toolbar ○ Navigation bar ○ Status bar ○ Editor ○ Tool Windows ● Keymap ● Help
  • 6. ● Project(What is project?) ○ Configuration format ■ Directory-based(.idea/, *.xml) ■ File-based(.ipr, *.iws) ● Module(What is a module?) ○ .iml ● Version control(if you want) ○ .xml , .ipr, .iml ○ Exclude: ■ workspace.xml ■ *.iws Project & Module concept Intellij Window 1 Window 2 Project A Project B Module A1 Module A2 Module B1 Module B2
  • 7. Choose a Suitable Keymap is Important Mac OS X 10.5+ : If you are using IntelliJ IDEA only on Mac OS, we recommend choosing the schema named “Mac OS X 10.5+”. Mac OS X : The default “Mac OS X” schema is recommended if you use IntelliJ IDEA on other platforms too as the bindings are more alike to the default Windows/Linux schema. I use Mac OS X keymap in multi-platforms.
  • 9. New Project in Intellij IDEA(without SBT) ● Just Play Scala ! ● New Project Wizard ○ File | New | Project... ■ Java - Add Scala Libraries ■ Scala - IDEA-based Scala project
  • 10. New / Import Project in Intellij IDEA(with SBT) ● Many Scala project use SBT. ● New Project Wizard ○ File | New | Project... ■ SBT-based Scala project ● Import Project Wizard ○ File | New | Project from Existing Sources... ■ choose a folder(existing SBT project) ● Import project from external model (SBT/Gradle/Maven)
  • 11. Working with SBT ● Tool Windows ○ Project ○ SBT ○ SBT Shell ● Attach debugger to SBT Shell
  • 12. Working with Scala Worksheet ● REPL mode in Intellij IDEA ● How about Ammonite support ? ○ Look like there will be something in 2017.3(public preview) ○ Stay tuned ! (github, youtrack)
  • 13. Desugar Scala ● Code | Desugar Scala code ... ● Show Diff
  • 14. Work with Git / Github ● Import Git / Github project ○ Command line ■ $ git clone ■ File | New | Project from Existing Sources... ■ Import SBT project ○ User interface ■ File | New | Project from Version Control | Github ■ SBT project detected: Import SBT project
  • 15. Work with Git / Github ● Mutiple Version Control in the same Project ○ Mutiple git repo ○ Mix with different version control
  • 16. Work with Git / Github ● Switch Branch ● Local Changes ● Log ● Show History ● Show Diff
  • 17. ● Keyboard Shortcuts You Cannot Miss ● Example ● Help | Keymap Reference Keymap & Keyboard Shortcuts
  • 18. Menu - Edit | Find / Replace ● Find... / Replace... ● Find in Path... / Replace in Path... ● Find Usages ● Search Structurally...
  • 19. Menu - View ● Quick Definition ● Quick Documentation ● Recent Files ● Compare With...
  • 20. Menu - Navigate ● Class... ● File... ● Symbol... ● Select In... ● File Structure
  • 21. Menu - Code ● Generate... ● Surround With... ● Unwrap/Remove... ● Desugar Scala code...
  • 23. Menu - Build / Run / Tools
  • 24. Look into Large Project ● Add Scope ○ Preferences | Appearance & Behavior | Scopes ● Edit | Find | Find in Path... ○ Use Scope ○ Filter ● Edit | Find | Search Structurally... ● Navigate | Type Hierarchy ● Navigate | Method Hierarchy ● Navigate | Call Hierarchy
  • 25. Look into Large Project ● Menu: Analyze ○ Analyze Dependencies ... ○ Analyze Backward Dependencies ... ○
  • 27. Performance ● Intellij IDEA's cache is sometimes not quite right enough to cause performance issue. ○ Rebuild cache ■ File | Invalidate Caches / Restart ● Too many Scala classes may cause very slow editor response ○ Turn off some inspections of Scala ■ Preferences | Editor | Inspections | Scala Category
  • 28. Join ScalaTaiwan Gitter Room! https://gitter.im/ScalaTaiwan/ScalaTaiwan