Main things I found or configured when switching from JetBrains to VS Code. This note may be supplemented a bit over the next few months as I learn.

The most important – keyboard shortcuts for navigation. As I see it, you need to learn standard ones, not redefine what exists. Here they are:

  • Cmd+P – go to file, also shows recent files
  • Ctrl+G – go to line (Cmd+P and enter :)
  • Shift+Cmd+O – go to symbols in current file (Cmd+P and enter @)
  • Cmd+T – go to symbols in project (Cmd+P and enter #)
  • Ctrl+Tab – window of recent files, when pressed without selection go to previous file – extremely inconvenient, changed to Opt+Shift+Enter (better, but arrow up/down don’t work then)
  • Cmd+Shift+F – search in project files
  • F12 – function definition
  • Shift+F12 – who uses
  • Cmd+(K,Q) – go to last edit
  • F8 / Shift+F8 – navigate through problems
  • Ctrl+R – open recent projects
  • Shift+Cmd+E – enable file panel
  • Cmd+E – switch between AI mode and editing
  • Cmd+B – show/hide left panel
  • Cmd+L – show/hide AI chat window

In general, it turned out that you need to press Cmd+P, then by the first character you can choose the mode:

  • by default by file name and you can add :123 to go directly to the line
  • > – commands
  • : – lines/columns
  • @ – symbol (variables and functions) in current file
  • # – symbol (variables and functions) in project

Bookmarks extension from Alessandro Fragnani for adding bookmark functionality – I use rarely, but if I have to, it’s better with it.

I also always disable tabs:

{
    "workbench.editor.showTabs": "none",
}

and enable autosave (though maybe this is default):

{
    "files.autoSave": "afterDelay",
}

Behavior

  1. Duplicate line: Shift+Option+Up or Down (copy, but don’t put in clipboard)
  2. Markdown preview: Cmd-K, V
  3. Plugins: Cmd+Shift+X
  4. Quick fix: Cmd+.

Appearance

This is optional, but simpler/nicer at first.

Font

Download: https://www.jetbrains.com/ru-ru/lp/mono/ and install in system (in macOS go to ttf folder, select all files and in context menu in Finder open in Font Book, there press install 1 or 2 times). Enable in editor:

{
    "editor.fontFamily": "'JetBrains Mono', Consolas, 'Courier New', monospace",
    "editor.fontLigatures": true,
}

Theme

  1. Ctrl+Shift+P
  2. Start typing and select Install Extension
  3. Write Darcula
  4. Install Darcula Theme (from rokoroku)

Additionally

Reformatting on save:

  1. Command+, and select Editor: Format On Save
  2. Configure formatter. For example ESLint (of course, need to install extension before this):
    {
      "editor.codeActionsOnSave": {
        "source.fixAll.eslint": "explicit",
      },
      "eslint.validate": ["javascript", "javascriptreact", "typescript", "typescriptreact", "vue", "html", "json"],
    }

Install applications:

  • ClipNinja – for paste menu. From pluses works system-wide, not just in IDE. From minuses: for Windows and Linux will need to find something.

Install main plugins:

  • SonarQube for IDE – for validations
  • REST Client (humao) – for .http files

I don’t write obvious plugins for individual languages here.

.http files

Main difference is how variables are stored. In Jetbrains 2 separate files: for regular variables and for keys. Here you need to add variables to project settings.json.

With keys it’s quite simple: put in .env (in the same folder as http file), and reference: {{$dotenv STAGE_TOKEN}}. Inconvenient if files are spread across folders.

With environments simpler, just specific.

In general, full support exists, but incompatible in details. Won’t be able to use simultaneously from JetBrains and VS Code, which in a team can become a problem.

As conclusion

Everything you want is found quite quickly. A bit different, but don’t see any flaws.

For purity of experiment can say that in Idea file duplication is better implemented: in rename window you can call Toggle Case function, for example. Here Toggle Case without plugins doesn’t exist (didn’t search for plugins), there are separate types of changes and they’re not on hotkeys by default. Assumed to call them through Cmd+P as needed.