Matt’s Favorite Visual Studio Code Extensions

Back in October, I decided I was going to “force” myself to use Visual Studio Code as my only editor instead of Atom (to be clear, I also continued to use vim). The experiment has been a rousing success; I haven’t opened Atom since them. I’ve found VS Code’s performance to be staggeringly superior, and the Go extension specifically has made me really happy.

With that, I decided to compile a list of the VS Code extensions that I have found most helpful in my journey. Keep in mind, this is a list of extensions that are based upon my workflows and tools. If you don’t work on the same technologies as I do, you might not find them as useful.

  • Bracket Pair Colorizer — forever answers the question “Which opening parenthesis does this close?”
  • Chef Extension — Support for the Chef DSL, plus some awesome snippets. Even provides support for cookstyle linting.
  • Docker — Because you can’t DevOps without Docker. In addition to some Command Palette actions for Docker commands (which, to be honest, I’ve not tried yet), you get syntax highlighting for your Dockerfile and docker-compose.yml files.
  • Gist Extension — Pretty basic, but it does the job. Makes it nice and easy to create and edit GitHub Gists from VS Code. [1]
  • Git History — Check out the history of a file (i.e., git log or the history of a single line (i.e., git blame). For blame, I prefer the Git Lens extension listed below, however.
  • Git Lens — Here we go…this is pretty essential if you do anything git related in VS Code. One of my favorite features is that it provides highlights of all lines changed in the most recent commit.
  • GitHub — Work with things like Pull Requests directly from within VS Code.
  • gitIgnore — Pretty straightforward. Syntax highlighting for your .gitignore files. You can even use a command to generate a .gitignore from the github/gitignore repository.
  • Go — This is pretty much the thing that got me to switch from Atom to VS Code. I can’t even begin to list all the features. If you code in Go, you can’t possibly be using VS Code without this extension. Install it now. We’ll wait.
  • Intellisense for CSS Class Names — Fun type-ahead completion of your custom CSS classes, as defined in the current workspace (or linked references). You won’t know how you worked without it.
  • Markdown PDF — My colleague Eric Sigler and I were recently bemoaning the fact that no code editor has a “print” function. Yes, sometimes you still do need to use dead trees. But more often than not, you just need to dish your Markdown into a PDF to share with people who don’t read Markdown natively. This extension does what it says on the tin.
  • Markdown Preview Github Styling- Admit it. 99% of the Markdown you write in VS Code is for use in a README or similar on GitHub. This applies the Markdown Preview function of VS Code to look like GitHub’s.
  • markdownlint- It’s kind of nice to have linting on your Markdown. This extension is both awesome and the bane of my existence at the same time (I keep violating rules that annoy me, such as MD001 header-increment - Header levels should only increment by one level at a time. Luckily, you can tell the linter to ignore certain rules, either globally, or on a project-by-project basis. (Tower is a paid product; a similar one that is pretty popular is GitKraken, but I haven’t found any VS Code extensions for it)
  • Open In GitTower- While I know that awesome people only use git at the command line, I occasionally find value in using a GUI. One of the only ones that I have found adds value is Tower. This extension just makes it easy to pop the project open in there.
  • Project Manager- Pretty straightforward…just create a list of your common projects, and you get a nice command palette action to browse/open them.
  • REST Client- It’s not a replacement for Postman, but if you want to try out some REST calls from within your code, this works pretty well.
  • Sass- adds indented formatting to your SCSS files. Small things mean a lot.
  • Syncing- keeps your settings backed up to a secret GitHub gist (you can use a public one if you like, although I prefer a secret one, which is the default). This is helpful a) to keep your workspace in sync across multiple machines, and b) when you get a new machine, to add all your settings (including extensions). NOTE: This sync doesn’t happen automatically; you need to run the command.
  • Travis CI Status- Keep up-to-date on the status of your project in Travis.
  • WakaTime- “Fitbit for Programmers”. Keeps track of what projects you are spending time on. You can see mine at wakatime.com/@mattstratton.

What extensions have you found that are super awesome? Let me know in the comments!

[1] If you use 2FA with your GitHub account, you’ll need to set a Personal Access Token (only needs gist access) and then pop it into your VS Code settings like so: "gist.oauthtoken": "XXXXXXXX"