Steps taken to establish parity between my VS Code environment and the affordances I'm used to from Rubymine.
Fast way: Cmd+, that is: hold "Cmd" and press comma.
Slow way: Mouse over to the "Code" menu (leftmost among VS Code menus presented) and choose Settings -> Settings
First attempt followed settings that the internet seemed to think would work, but did not work for me:
Ensure that the main Ruby extension (from Peng Lv) is installed
Click the "Code" menu then click "Settings" -> "Settings"
Click the "Open Settings (JSON)" icon in the upper right
Add Ruby-specific settings to JSON file as suggested by Stack Overflow, or use the Ruby settings suggested by the Ruby extension itself
For me to get it to work, I had to continu trying more stuff:
Opened system "Privacy & Security" settings, and added VS Code to the list that of apps under the "Full disk access", as suggested by another popular SO post
Install Ruby LSP extension from Shopify (settings and install page)
Ruby LSP refuses to acknowledge rvm under all circumstances I could manufacture in 30 mins, so I instead changed rvm's system default Ruby to be the version from our project. That allowed the Ruby LSP server to start successfully, and thereafter, symbol lookup shows Ruby methods. 🎉
Once I struggled through the process of getting Ruby to look up methods, I was pleased to discover that symbol lookup was already functional to allow me to jump straight to a Javascript function.
The slowest way to get to hotkey is by hovering "Code" menu then "Settings" and "Keyboard Shortcuts".
Map best file open dialog to Cmd-O. Open "Keyboard Shortcuts" and look up "Go to file" and double click the "Keybinding" column to enter Cmd-O. You may need to click the link to "X existing commands has this hotkey" if there is a conflict that prevents your new mapping from focusing the "Go to file" dialog. It should go here.
Map best symbol open dialog to Cmd-D. Open "Keyboard Shortcuts" and look up "Go to Symbol in Workspace." Set it to your preferred hotkey for looking up symbols (I believe Cmd-D is the Jetbrains default?)
Map word jumping. I like to have word move mapped to Ctrl-Arrow instead of Option/Alt-Arrow. This requires changing some of the hotkeys around.
Invoke git commit dialog. In Rubymine, Cmd-K opens a dialog that shows me which files have changed and lets me enter my commit message. To recreate this in Visual Studio, I searched for "Source Control" and mapped "View: Show Source Control" to Cmd-K, which opens a similar sidebar to what is available in Rubymine.
Move cursor to start/end of file. Known as the cursorBottom
and cursorTop
command. I map em to Ctrl-End and Ctrl-Home to match my PC keyboard muscle memory.
Go to definition. The "Go to definition" entry in Keyboard Shortcuts will navigate to the definition of the method/class/etc that the cursor is in. Mapping it to Ctrl-Space matches my Rubymine settings.
Go back. The "Go back" entry defines a means to return to where one's cursor originally was after using "Go to definition." Mapped to Ctrl-R matches my Rubymine settings.
Go to next/previous change. The "Go to next change" entry moves through changes when reviewing staged changes. I mapped this to F7.
Go to line. Default mapped to Ctrl-G, my muscle memory has it programmed as Cmd-G.
Tab size. Search for "Tab size" to change the default tab size from 4 to 2 (seems to be applied globally across all files, unlike Jetbrains where there are many per-language settings for this)
Auto-close methods. In Rubymine, I appreciate the editor adding an "end" automatically when I declare a new class or method. Ruby LSP documentation claims "Completion for classes, modules, constants" as a feature, but hasn't worked for me yet.
Enable auto-save. For parity with Rubymine, files should be saved whenever the editor loses focus. If you look up "save" in the "Settings" input field, you should find "Auto save" as the top option.
Gitlens. Shows blame for each line when hovered, and is recommended by many. Haven't evaluated it in any detail on day 1.
Ruby LSP from Shopify. Seems to be necessary to run a "Language Server" that can locate Ruby methods upon triggering "Go to symbol."
https://vscode.dev/editor/profile/github/1adede2e626691f32ec9393c10615df7
Different procedures to recreate functionality from Rubymine.
Option 1: Right-click folder and choose "Find in folder"
Option 2: Left-click the folder and press Shift-Option-F