Improved workflow with JetBrains IDE

Table of Contents

  1. Intro
  2. Editor
  3. Navigation
  4. Windows
  5. Git
  6. Plugins
  7. Conclusion

JetBrains Products

  • IntelliJ IDEA: Java, J2EE, Android, Scala, Spring, Maven, Play...
  • PyCharm: Python, Django, Flask...
  • RubyMine: Ruby, Rails, Sinatra...
  • ReSharper: Improved Visual Studio
  • PHPStorm: PHP, Symfony, Laravel, Drupal, Wordpress...
  • WebStorm: Javascript, Angular, Node, Meteor, React...
  • AppCode: Objective-C, Swift, iOS

 

  • TeamCity: Continuous Integration
  • YouTrack: Task management
  • UpSource: Online repository, Code reviews

JetBrains Products

Other features

  • VCS: Git, SVN, Mercurial, Perforce
  • Databases: MySQL, Mongo, Redis
  • CSS Frameworks: LESS, SASS, Stylus
  • Templates: HAML, EJS, Blade, Twig...
  • Compiled languages: CoffeeScript, Dart, Typescript
  • Integration Tools: Grunt, Gulp, Composer, NPM
  • Testing: Karma, Mocha, Cucumber, Behat
  • Refactoring: JSHint, JSCS, PSR-0, PHPCS

And many more...

The Editor

Editor Features

Multiple Selections Alt+J (Mac: ^G)

(Mine: Alt+D)

Editor Features

Multiple Selections Alt+J

(Mine: Alt+D)

  • Faster than "Search and Replace"
  • Allow to select only parts of the pattern
  • Select words, letters, even regexps
  • Provide autocompletion and copy-paste 

Editor Features

Split Windows

(Mine: Ctrl + |)

Editor Features

Split Windows

(Mine: Ctrl + |)

  • Open multiple files in the same editor
  • Multiple horizontal and vertical windows 

Editor Features

Creating Live Templates from a selection

  1. Select a snippet of code
  2. Go to `Tools -> Save as Live Template`
  3. Assign a shortcut and category to the snippet
  4. Insert the snippet with `Ctrl+J/⌘J`

(Mine: Alt+Shift+T)

Editor Features

Surround Code

  1. Select the code you want to surround
  2. Surround it with `{`, `[`, `(`, `'`, `"`
  3. Switch back between single and double quotes

Editor Features

Surround Code - custom code

  • You can also create Surrounding Live Templates to surround code with any custom code
  • Ex:
    • surround with try_catch
    • surround with if
    • surround with html tags
  • Use with Ctrl+Alt+T/⌥⌘T

Editor Features

Clipboard Manager (Ctrl+Shift+V/⇧⌘V)

  • Keep an history of every copied text
  • Visualize the contents of the clipboard
  • Works only inside the IDE

Editor Features

Clipboard Manager (Ctrl+Shift+V)

Editor Features

Column Mode (Alt+Shift+Insert/⇧⌘8)

(Mine: Alt+Shift+C)

Useful for:

  • Object literals
  • Table-like code

Editor Features

Code Reordering (Shift+Alt+Up/Down) Mac: ⌥⇧+Up/Down

Editor Features

Quick preview (Ctrl+Shift+I/⌥+Space)

(Mine: Ctrl+Shift+Space)

Editor Features

Code Folding (Ctrl+NumPad-/NumPad+) Mac: ⌘-/+

Editor Features

  • Compact code for easier reading and understanding
  • Preview folded code by hovering the mouse
  • Fold by clicking on the +/- on the left margin
  • Option to Fold All/Expand All
  • Fold functions, arrays, objects, blocks, comments.
  • Custom foldable regions

Code Folding (Ctrl+NumPad-/NumPad+) Mac: ⌘-/+

Editor Features

Emmet (Rapid HTML)

  • Emmet out of the box (http://docs.emmet.io/)
  • For HTML and CSS

Navigation

Navigation

Open File (Ctrl+Shift+N/⇧⌘O)

  • Open a file by searching by its name
  • Filter by type
  • Fuzzy Search (Ex: ServicesTableCtrl -> SeTaC)
  • History of recent searches

Navigation

Recent Files (Ctrl+E/⌘E)

  • Show a list of the recently opened files
  • Can be fuzzy filtered as well

Navigation

Jump to declaration (Ctrl+B/⌘B)

(Mine: F12)

Navigation

Back/Forward (Ctrl+Alt+Left/Right - ⌘[/])

  • Navigate back and forth in your code
  • Useful after "Jump To", "Go To Line"...

Navigation

Search Everywhere (Shift Shift)

  • Search everywhere: filename, classes, functions... even settings and commands!

Navigation

Abbreviations (Shift Shift)

  • Allow definition of command aliases through "abbreviations"  in the Keymap settings
  • Ex: dl = Delete Line, ca = Close All...

Navigation

Bookmarks (F11, Mac: F3)

  • Keep important code locations in bookmarks for quick access
  • Label bookmarks
  • Visualize bookmarks in the bookmark manager

(Mine: Ctrl+K Ctrl+K)

Navigation

Bookmarks (F11, Mac: F3)

(Mine: Ctrl+K Ctrl+K)

Windows

Windows

Terminal (Alt+F12/⌥F12) (Mine: Ctrl+Shift+T)

Windows

Terminal (Alt+F12/⌥F12) (Mine: Ctrl+Shift+T)

  • Run a terminal without leaving the IDE
  • You can have multiple tabs just like your favorite terminal
  • Ability to specify which shell to run (even in Windows!)
  • Copy/Paste, Ctrl+C/Ctrl+Z...

Windows

Scroll To Source/Scroll From Source

  • Scroll the Project Tree at the location of the opened file
  • Open file by selecting it in the Project Tree
  • Quicker navigation

Windows

Scroll To Source

Windows

Scroll To Source

Windows

Run Command (Ctrl+Shift+A/⌘⇧A)

Windows

Run Command (Ctrl+Shift+A/⌘⇧A)

  • You don't need to remember all 1000+ shortcuts, just search for the command!
  • Works for all commands, windows, settings...
  • Displays the assigned shortcut if there is one
  • Allows quick toggle of Settings

Windows

Local History (Mine: Ctrl+Shift+H)

  • Any changes you made to files are kept in an history, independently of Git/other VCS
  • Lifesaver for accidental deletions, git resets, rebases, merges...
  • Provides an useful diff viewer for easy restoring
  • Can keep up to three months (!) of history.

Windows

Local History (Mine: Ctrl+Shift+H)

Windows

Exclude Directories

  • Exclude specific directories (ex: tmp, dist, bower...) from autocompletion, inspections, refactor...
  • Improve responsiveness and memory footprint
  • Easy include/exclude from the Project Tree

Windows

Code Style, Theme, Keymap switching

  • Switch between themes, code styles and keymaps through the use of a shortcut
  • Allow people importing their configuration without influencing your workflow

Windows

Full Screen Mode/Presentation Mode

  • Also called "No Interruption Mode"
  • Useful for Presentations/Teamwork

Git

Git

Diff Viewer (Mine: Ctrl+Shift+D)

Git

Log Tree Viewer

Git

Show History

Git

Changes margin

  • See your changes directly in the left margin
  • Added lines, Deleted Lines, Modified Lines
  • Rollback specific lines instead of the whole file

Git

Changes margin

Plugins

Plugins

AngularJS

  • Navigate to Controller/Directive/Filter...
  • HTML Views autocompletion
  • NGDoc Support
  • Live templates for modules, directives, decorators...
  • Code Inspections, Refactorings

Plugins

Symfony 2

  • Overview of Services, Controllers, Forms...
  • Quick navigation to Services, Twig Views, Resources...
  • Autocompletion for Symfony bundles (Acme::DemoBundle)
  • Autocompletion for services inside YAML/XML/INI files
  • Autocompletion for Symfony annotations
  • Support for Twig files: filters, includes, variables...
  • Assetic support
  • Composer support
  • Tools console to run Symfony commands directly in the IDE (independenly of the console)
  • PSR-0, PSR-1, PHPCS, PHPUnit support
  • Probably the best IDE for Symfony development 

Plugins

Symfony 2 - Annotation completion

Plugins

Symfony 2 - Command Line Tools

Plugins

Navigate from literal

  • Allow navigation from string literals
  • Useful for node requires, angular services, php dynamic methods etc...

Plugins

Grunt/Gulp

  • Launch Grunt/Gulp task directly from the IDE !
  • Debug your gruntfile/gulpfile

Plugins

Karma/Mocha

  • Run Karma/Mocha unit tests and see the results in the IDE
  • Watch changes and rerun tests
  • Supports debugging and code coverage

Plugins

Karma/Mocha

Plugins

Scratch files

  • Open temporary files, that don't belong to the project
  • Useful for code snippets, json responses, comparing code...
  • Unleash the full power of the IDE for simple files

Plugins

Other plugins

  • Markdown: syntax highlighting for md files
  • Code Outline: Sublime Text's code outline
  • JSCS: Javascript Code Style checker
  • nginx: syntax hl for nginx configs
  • Github: Open Github project, navigate issues...
  • Shifter: Shortcuts to increment numbers, change case...
  • Remote Sync: Work remotely, every change being transferred via FTP/SFTP. Ideal for prod servers.
  • Tabdir: Enhances tabs
  • Settings Repository: Share settings between instances of the IDE, useful for working home

That's it!

JetBrains

By Elior Boukhobza

JetBrains

Jetbrains

  • 1,977