I love the text editor setup I've been using for the past year and a half, so I want to show off my setup! Visual Studio Code has far surpassed my experiences with Atom, Spyder, Sublime Text, Emacs, and Idle (the built-in Python editor) which I used for the years before it. I thought I would do a quick write up on my setup and the extensions I love!

Theme

Since I teach people how to code professionally and give a lot of talks on programming, having a readable theme is super important to me. I also love to have a theme that I enjoy aesthetically, so usually something with a lot of girly colors.

Those criteria being set, my two absolute favorite themes are Fairy Floss and Dracula.

Fairy Floss

Dracula

Font

I am a long-term FiraCode loyalist (pre-dating VS Code!); I like the ligatures that make my code more readable at a glance. It's pretty easy to set up too, which is really nice!

Save Configuration

Another key piece of my setup is my save configuration. The first thing that I love is autosave, which you can turn on via the file drop-down. I have it further configured so that whenever I pause when writing code, my code is saved automatically without me doing anything. I cannot explain how helpful this is for live coding and for beginners.



// in settings.json " files.autoSave " : " afterDelay " , " files.autoSaveDelay " : 100 ,

In the same vein, I have Prettier set up to format my code on cmd + s . Ideally, this would run automatically as well, but it is close enough for now. I used StandardJS to do the same for a while, before moving over to a pro-semi-colon client.



// in settings.json " editor.formatOnSave " : true ,

I use two spaces for most language indentation, the only exception is Python, where I use four spaces by default.



// in settings.json " [python] " : { " editor.insertSpaces " : true , " editor.tabSize " : 4 },

Emmet

I am incredibly reliant on Emmet, so I love that it is built in for VS Code. I also have it set up to work in more than just my html files:



// in settings.json " emmet.includeLanguages " : { " html " : " html " , " erb " : " erb " , " javascript " : " javascriptreact " , " vue " : " html " , " ejs " : " html " },

Integrated Terminal

I use iTerm with Zsh on my Mac, and so I have VS Code's integrated terminal set up to use that setup.



// in settings.json " terminal.external.osxExec " : " iTerm.app " , " terminal.integrated.shell.osx " : " zsh " ,

Extensions

I have a lot of language and framework-specific extensions built-in, which are boring and very dependent on the developer, so I will skip over those in order to discuss some of my favorite all-purpose extensions.

VS Live Share - this extension is straight up magical, and I truly believe it will change code education and pair programming in the near future. It allows developers to Google Doc-style collaborate on the same file on different computers. You can even open up access to your localhost ports across machines and share terminal sessions. There are some bugs, especially on Windows machines, but it's so cool that it doesn't even matter! Code Spell Checker - I write a lot of Markdown and page content directly in my text editor, and I definitely have some spelling issues. I love this extension for underlining my mistakes and offering suggestions, even when I'm offline. Import Cost - this one is more a "nice to have" rather than a necessary, but it shows the size of the npm packages I am importing in my projects. HTMLHint - I use this for live HTML validation directly in my editor. No more having to run the W3C validator on every change! GitLens - GitLens shows Git blame annotations and author highlighting within documents. Its really helpful for working on multi-author projects! CodeRunner - this extension allows you to press a play button to run your code directly within VSCode with no terminal interaction needed! Especially helpful for new programmers. EmojiSense - I love Slack's emoji-autofill post : feature, and this extension allows you to do the same in VSCode!

Conclusion

I am really happy with my setup -- I have no complaints! Feel free to tweet me any questions about my setup, and also send me your favorite tips and tricks!

If you like setup posts, I also wrote about my Zsh + iTerm2 setup.