#RubyMine Atom Sublime Text (RMAST) I love me some RubyMine. But I didn't want to give up the great key bindings from Atom and Sublime Text. So I started looking for resources that could help me bridge the three editors. This RMAST ("R Mast ") repo is the result.
With this repo...
- I added the best Atom and Sublime Text 3 (ST3) key bindings to the RubyMine (RM) key map.
- I made a cheatsheet to help drill them into my head
##Why
- RubyMine is great. But being able to jump to ST3 or Atom is very handy and avoids letting one editor "lock you in"
- ST3 is the "industry leader" with nice key mappings and multiple cursor option. Atom has followed the ST3 lead with most key bindings.
- I wanted to practice on one keymap that works well on all three editors. And I needed a cheat-sheet to help me practice the most useful editor key bindings.
##Notes
/is used in the chart below to separate similar commands, it is not meant to be typed- Where conflicts occurred when adding a new binding, the default RubyMine key binding was removed to prevent future errors & unintended actions
- Some of the key mappings - such as the RubyMine editor pane management command 'Split Vertically' - are not a direct mapping of ST3 or Atom. But they are the closest RM comes to the same intent (in my opinion)
##Search & Navigation
| RM Keymapping | RM Action Name | Re-map? | Standard RM? | Notes |
|---|---|---|---|---|
| ⇧*2 (Double Shift) | 'Search Everywhere' | X | Similar to combination of ST3 ⌘⇧P + ⌘P | |
| ⌘⇧P | 'Find Action' | X | Mimic ST3: "Command Palette" | |
| ⌘P | 'File' | X | Mimic ST3: "Goto Anything" | |
| ⌘E | 'Recent Files' | X | Search recent files, better than the default "switcher" | |
| ⌘⇧F | 'Find in Path' | X | Find in project | |
| ⌘⇧V | 'Paste from History' | X | Search & paste from clipboard history | |
| ⌘B | 'Declaration' | X | Go to declaration of method | |
| ⌘Y | 'Quick Definition' | X | "Peek" quickly at declaration definition with pop-up | |
| ⌥- Enter | 'Show Intention Actions' | X | Show the "lightbulb" options ("intention actions") | |
| ⌥⌘T | 'Surround With' | X | Surround a block of code. Ex. "If…Then…Else" |
##Tool Windows
| RM Keymapping | RM Action Name | Re-map? | Standard RM? | Notes |
|---|---|---|---|---|
| ⌘` | View > 'Tool Buttons' | X | Adds toggles for "Tool Windows" tool bar on screen edges | |
| ⌘8 | Other > 'Database' | X | Adds toggle for "Database" tool window | |
| ⌘0 | Other > 'Terminal' | X | Adds toggle for "Terminal" tool window |
##Tabs & Panels
| RM Keymapping | RM Action Name | Re-map? | Standard RM? | Notes |
|---|---|---|---|---|
| ⌘⌃← / → | 'Select Next/Previous Tab' | X | Mimic Chrome; 2 modifiers = cycle between tabs in current column ("splitters" in RM terms) | |
| ⌘⌥⌃↑ | 'Split Vertically' Editor Tabs | X | Personal choice - All 3 modifiers= add/drop/change columns ("splitters" in RM terms) | |
| ⌘⌥⌃↓ | 'Unsplit' Editor Tabs | X | '' | |
| ⌘⌥⌃←/→ | 'Move to Opposite Group' | X | Personal Choice - Moves the tab to a different column ("splitters" in RM terms) | |
| ⌥Tab | 'Goto to Next Splitter' | X | Switches cursor focus between columns ("splitters" in RM terms) - ST3 binging of ⌘K or ⌘← / → was unreliable for me due to other Mac bindings; Atom has no standard key mapping |
##Edit Lines / Text
| RM Keymapping | RM Action Name | Re-map? | Standard RM? | Notes |
|---|---|---|---|---|
| ⌘] / [ | 'Indent' / 'Unindent Line or Selection' | X | Mimic ST3 | |
| ⌃⌘↑ / ↓ | 'Move Line Up/Down' | X | Mimic ST3 | |
| ⇧⌘D | 'Duplicate Line' | X | Mimic ST3 | |
| ⌃⇧K | 'Delete Line' | X | Mimic ST3 | |
| ⌘J | 'Join Lines | X | Mimic ST3 - brings up the line below & adds to end of current line | |
| ⌥⌘L | 'Reformat Code' | X | 'Reformats' or 'prettfies' code based on syntax settings: aligns hashes, brackets etc. |
##Selections & Multi-Cursor
| RM Keymapping | RM Action Name | Re-map? | Standard RM? | Notes |
|---|---|---|---|---|
| ⌘D | 'Add selection for next occurrence' | X | Mimic ST3 | |
| ⌃⌘G | 'Select all occurrences' | X | Mimic ST3 | |
| ⌘L | 'Select Line at Caret' | X | Mimic ST3 | |
| ⌃⇧↑ / ↓ | 'Clone Caret Above' / 'Below' | X | Mimic ST3 | |
| ⌘ Left Click | 'Add or Remove Caret' w/ mouse | X | Mimic ST3 |
- Download the .jar folder
- Or...if you want to know exactly what you are downloading - download all other individual folders EXCEPT for the .jar folder. Then zip them & turn them into your own .jar folder (see "notes on .jar files" below).
- Go to File > Import Settings and specify the directory where the
rubymine_atom_sublimetext_RMAST.jarlives. - Click on "Keymaps" and click
OK. - Restart RubyMine
- Go to Preferences > Keymap > Keymaps and select the new keymap
RMAST
- RubyMine > File > Export Settings...
- You can just chose "Keymaps" for the export, or select all
- RubyMine will export a .jar file filled with your setttings
I'm not an expert in Java, but here's what I've learned
Mac:
- You can safely turn
.jarfiles into.zipfiles (and back again) just by changing the file extension - This allows you to examine the contents of the
.jarfile
If you have a new keybinding you think might fit the spirit of this repo:
- Submit your proposed key binding as an "Issue"
- If I like the binding I'll add it and post a new settings file
- If not, feel free to fork, modify and set-up your own keymap!
Please post questions or feedback in an Issue.
##Other RubyMine Stuff
- RubyMine uses first letter case sensitivity per default. This means that if you type e, Exception won't be offered as a viable completion. This is why I disable case sensitivity completion.
Editor > General > Code Completion > Case Sensitive completion : NONE- http://saqibrazaq.com/RubyMine-basic-configuration/
- Changed comments to gray
- Changed editor gutter to gray
- Changed font size to 14
- Changed line height to 1.2
- This is included in the settings above under
ColorsnamedMonokai - RMAST
###Helpful Plugins
| Plugin | Description |
|---|---|
| Markdown | markdown support and preview pane |
| Wrap to Column | forces soft wraps at column width, doesn't apply to text already there, just new text & when text is reformatted |
| Railways | shows quick rake routes display as a side panel |
| Dash | ⌘⇧D for Dash documentation |
Inspired by @leopku