Lots of VSCode Extensions

The recent release by Microsoft of vscode.dev, the online version of Visual Studio Code, made me think of all the different things I do with VSCode, including this blog. And of course, being productive in VSCode means, to a large extent, finding gems across a seemingly infinite number of extensions.

I love editors, and I love VSCode as well. I have written a whole book about my obsession with Vim and Emacs. Consider this article as an extension of that book.

I started using VSCode relatively late, though. I didn’t use it at all, I think, until late 2017. Then I got a job at a company where I got to use it a lot, for various reasons, and I liked many things about it: it’s cross-platform, very fast, and of course, it has an amazing number of available extensions. A lot.

I have used each one of the extensions I mention in this article at some point in the past four years, for an extended period of time. Of course I have tried many more, but these are the ones that stuck in my workflow. They are classified in three simple groups, representing each of the things I do with VSCode every day.

Writing Prose

First and foremost, what I do with VSCode is… writing prose. I have found this editor to be a fantastic tool to get words on the screen.

Most of what I write is in AsciiDoc, particularly at my job, and of course I use for that the excellent official extension by Asciidoctor.

But of course there is a lot of Markdown in my way; after all, this very blog is generated with Hugo from Markdown sources. And the Markdown All in One extension is simply perfect for that. I use it to generate (and keep updated) the table of contents, like the one at the top of this article.

Besides AsciiDoc and Markdown, I also enjoy writing screenplays in the Fountain markup language as a hobby, and the Better Fountain extension allows me to write, preview, and export to PDF those exercises in futility. I mean, I’m not going to Hollywood anytime soon. Moving on.

I don’t write that much LaTeX anymore, but for the few times I needed a good editor, LaTeX Workshop was a fantastic choice.

For all of these formats, however, it makes sense sometimes to keep an eye on the length; for that, the Read Time extension, which can be easily customized, and the Word Count extension, both provide live feedback about the length of my writing.

I have also installed the Insert Date String, the Lorem Ipsum, the Trailing Spaces, and the Paste URL extensions. This last one is awesome, and I contributed AsciiDoc support to it last year.

For a full-screen, distraction-free editing experience, no need for an extension: just CTRL+K Z and write your heart out.

Programming

I still do quite a bit of programming, even though it is not anymore my primary activity. And VSCode is, as expected, a great platform for this. Whether I write code in Go, Rust (with the rust analyzer language server), Kotlin, COBOL, REXX, JCL, PL/I, F#, C, C++, Smalltalk, C#, Makefile, Python (with the Pylance language server), PHP, Java (with Red Hat’s Quarkus framework and Microsoft’s Debugger for Java), YAML, or Shell scripts, there’s always an extension to help.

Let’s not forget the wonderful built-in support for TypeScript, including debugging and everything else one might expect. But one thing that is missing is a proper way to run Mocha tests directly from VSCode; the Mocha Test Explorer and the Test Explorer UI provide exactly that.

And speaking about built-in tools, even though VSCode’s Git integration is brilliant, I often use Git Graph to visualize the branches of a repository, and Annotator to find out who wrote what.1.

If you are like me and you try to use Firefox as much as possible instead of other browsers, you’re going to love the Debugger for Firefox extension.

It goes without saying that the Terraform, Docker, Kubernetes, and OpenShift extensions are fundamental for any Cloud Native developer. But even better, with the Remote - Containers extension, one can debug applications running inside a container directly from VSCode. And if you’re into K3s, get the Kubernetes k3d extension right away.

For those REST APIs that come out of those experiments, the Thunder Client and the Swagger Viewer extensions are always handy. And if a database is around, this Database Client is perfect.

Attentive readers will have noticed that GitHub Copilot does not appear in the list. I do not use it, nor I recommend it.

And More

Coding is the most obvious thing to do with VSCode, but there’s so much more you can do with it. Like drawing, for example, either vector images in SVG or PNG formats with the Draw.io Integration, or other raster formats with Luna Paint. Think of it as having GIMP and Inkscape integrated into VSCode (or Illustrator and Photoshop, if that’s your thing). If you don’t need a fully fledged SVG editor, maybe Svg Preview will be just enough.

Another thing you can do is editing files in hexadecimal with the Hex Editor. Or viewing Excel and CSV files with the Excel Viewer. Or creating and running Jupyter notebooks.

Whatever you do, sprinkle your projects with TODO, FIXME and other tags, and keep track of them all in one place with the Todo Tree extension.

You can customize the colors of your editor with Peacock, providing a separate color style for each project. This is a great feature, particularly if you have several VSCode windows open side-by-side. And add some nice icons to the sidebar with the vscode-icons bundle.

And, whatever you do, the Live Share extension makes it extremely easy to do some remote Extreme Programming in these times of pandemic, confinement, and work from home.


  1. Git Lens is a very popular extension for Git, and I tried it at some point early on, but I found it so annoying and heavy that I ended up never installing again. ↩︎