Visual Studio Code (or VSCode) is my text editor of choice. The two main features that draw me towards VSCode are:

  • Extensibility: There are many existing extensions and I have even played around with developing a custom extension
  • Smooth experience: Having worked with editors such as Eclipse, IntelliJ and Visual Studio, I have found that VSCode just feels smoother and more natural to me

The remainder of the page will describe how I have configured VSCode and how I use it.

Extensions

As mentioned before, VSCode is extremely extensible. The extensions I use regularly are:

There are many more installed, but only used very rarely.

Configuration

Validating broken local Markdown links can be enabled using

"markdown.validate.enabled": true

I don’t know why this is disabled by default, because it seems like a universally helpful feature.

To avoid having auto-generated files or files from external libraries show up in search, they are explicitly excluded:

"files.exclude": {
    "**/__pycache__": true,
    "**/.venv": true,
    "**/.vscode-test": true,
    "**/node_modules": true
}

Disable tabs

In reality, I rarely use different tabs effectively. I’m always juggling a lot of open files in different tabs that I’m not actively working on.

So to reduce the clutter, I’ve disabled tabs using:

"workbench.editor.showTabs": false

Multi-root workspaces

Add multiple folders to a single workspace to support working in different programming languages and using standard functionality, such as automatically enabling a Python virtual environment when working in certain code files. This is great when working in a mono-repo and as a result, I don’t have to open multiple instances of VSCode when writing and programming.

More can be found in 🌳 VSCode Multi-Root Workspaces.

Shortcuts

ShortcutDescription
⌘ + K + WClose all editors
βŒƒ + `Open terminal

Developing extensions in VSCode

Useful resources:

Open Questions

How do I easily switch between the git diff view and the file itself? Looks like I should configure a custom shortcut for this.

Sources: