I want to start by giving high praise to the Visual Studio Code team at Microsoft. It’s an incredible product that I believe will only get better. The git integration, the task runner integration, JavaScript debugging, IntelliSense, and parameter hinting are all incredible features. Visual Studio Code (VS Code) is well designed and it’s fast. It strikes a near perfect balance between being feature rich and simple.


Visual Studio Code is lacking in some key areas that matter to me:

  1. Color Themes
  2. Packages
  3. Language Support
  4. Key Bindings

VS Code Color Themes

At the moment, you are pretty well stuck with a handful of color themes provided by Microsoft. While it is possible to use Yeoman to build/convert a .tmTheme file for Visual Studio Code, in my experience it simply doesn’t work. I used Microsoft’s Yeoman generator to convert a couple themes on Color Sublime, and while there were no errors doing so, the syntax coloring was completely wrong compared to the same theme in Sublime Text. This is very frustrating. When you stare at a code editor all day, color really does matter.

Screenshot of JavaScript code using the same color theme in Visual Studio Code and Sublime Text
1337 Theme in VS Code and Sublime Text (JavaScript)
Screenshot of CSS (Sass) code using the same color theme in Visual Studio Code and Sublime Text
1337 Theme in VS Code and Sublime Text (Sass)
Screenshot of PHP code using the same color theme in Visual Studio Code and Sublime Text
1337 Theme in VS Code and Sublime Text (PHP)

VS Code Packages

With most developer tools, the strength of the community makes a huge difference in a product’s value proposition. This is certainly evident in Sublime Text where there are hundreds of packages available. While Sublime Text has felt old and unrefined for a couple years, the package ecosystem continues to set the editor apart. I don’t know a single Sublime Text user that runs the editor without multiple packages in use. The result of such a robust package ecosystem is that each Sublime Test user runs a tailored variant of base product. This is a huge plus for Sublime. It’s not all things to all developers, but it can [almost] be.

VS Code Language Support

I initially installed Visual Studio Code because I am about to start a Node.js project. The editor shines with Node – like it was made specifically for Node development. It’s 100% awesome. But I also develop for Magento and WordPress, both of which are built on PHP. To the same degree that Visual Studio Code is awesome with Node, it lacks with PHP. Though, this isn’t too big of a concern for me. Microsoft has made their current language focus clear, and as the product progresses, I’d imagine that language support will improve.

VS Code Key Bindings

Last and least, the available key bindings (keyboard shortcuts) just aren’t there. This is a problem that I am less confident will be resolved. While the critical key bindings are available, and customizing them is near identical to Sublime Text, the breadth of bindings that you can customize in Visual Studio Code is trumped by Sublime Text. I’m sure some developers don’t take advantage of keyboard shortcuts to the extent that I do. Again, this is an area where Sublime Text is not all things to all developers, but it can be. With Visual Studio Code, it’s flat out not.

VS Code vs. Sublime Text Conclusion

It’s good to periodically assess the features of an editor that you really depend on. That was the inspiration for this comparison. I am frustrated with Sublime Text’s lack of innovation. Working with Visual Studio Code for a few days made me realize how awesome an editor can be. I want to move to it. Unfortunately, Microsoft is just not there yet. Visual Studio Code will likely be my editor of choice in the future. For now, Sublime Text lives on as my canvas for another day.

Posted by: John Dugan


  • Alex Dima

    Hi John,
    I’m a developer working on the core editor of VSCode.

    First, let me start by thanking you for the great detailed feedback, this stuff is pure
    gold for us 🙂 !

    Regarding Color Themes, the end coloring is influenced by three things: the
    text, the language tokenizer and the theme. Even though the text and theme are
    the same, the produced tokens can be different between different tokenizers.
    For the upcoming 0.10.0 release, we’ve worked on aligning the tokens produced
    for many of the languages (including HTML, SASS or PHP) with more what Text
    Mate themes expect, so the end coloring fidelity should be greatly improved.

    We’ve committed to delivering a plugin system ( https://visualstudio.uservoice.com/forums/293070-visual-studio-code/suggestions/7752408-plugin-system )
    and we hope that will also help with improved support for different languages. Stay tuned!

    I took a stab at converting your Sublime keybindings to VSCode ones and we’re
    not so far from supporting all of them… ( Paste in your keybindings.json from https://gist.github.com/alexandrudima/ae8f601ab6a58b7aed51 ).

    Excepting commands contributed from extensions, what’s not currently supported:
    * predefined layouts (alt+shift+*)
    * subword navigation (ctrl+space, alt+space)
    * entire line selection (ctrl+shift+down, ctrl+shift+up)
    * delete from cursor to bol/eol (ctrl+alt+backspace, alt+shift+backspace)
    * join lines (ctrl+j)
    * paste and indent (ctrl+shift+v)

    I’ve addead each one of these to our backlog, we’re winding down
    for 0.10.0, so they won’t make it in, but stay tuned! 🙂

    Thanks again and keep the feedback coming! 🙂


  • Alex!

    First, you are quite welcome – I really want to see VS Code succeed! Second, I am completely impressed with how receptive the VS Code team has been to my constructive criticism both here with yourself and on Twitter. Third, I plan to check in with each release and keep this post updated.

    Looking forward to seeing the product progress… and testing out those key bindings later tonight :-).

  • genericid

    Hi, just a question: are you going to support Rails too?

  • It would also be great to see Indent Guides in VSCode. That’s one reason I haven’t switched from Sublime yet.

  • Swade

    Setting up a new theme on 0.10, my themes still look nothing alike.

  • Yeah, that’s why I didn’t update the post after v0.10 was released. It’s definitely better, but with something like a theme, it’s either 100% accurate or nothing IMO.

  • Woah – looked over this one in the post. I certainly agree though.

  • Alan Jui

    Hi John,

    I am so surprise when I saw this line of setting for keybindings:

    { “keys”: [“ctrl+enter”], “command”: “run_macro_file”, “args”: {“file”: “res://Packages/Default/Add Line.sublime-macro”} }

    It seems that you can run your Sublime Text macro on VSCode editor.

    How can you do that? Would you please explain more?

    So many thanks!

  • Hi Alan, I believe you are looking at the key bindings that I wrote for Sublime. They are my basis for judging the VS Code key bindings. Take a look at the first comment above from Alex and try out the port that he wrote of my key bindings for VS Code.

  • Alan Jui

    Hi John,

    I am so surprise when I saw this line of setting for keybindings:

    { “keys”: [“ctrl+enter”], “command”: “run_macro_file”, “args”: {“file”: “res://Packages/Default/Add Line.sublime-macro”} }

    It seems that you can run your Sublime Text macro on VSCode editor. How can you do that?

    Would you please explain more?

    So many thanks!

  • stephenhouser

    I read this with interest and agree with some of the comments. Thank you for the thoughtful article comparing two excellent cross-platform editors.

    Within the past year I switched form BBedit (Mac) to Sublime. Since then I have been looking closely at VSCode because Sublime seems to be dead. Sublime 2’s last update is July 2013 and Sublime 3 (beta) has not been updated since March 2015 (nearly a year). Sublime’s blog hasn’t been touched in about the same time. Meanwhile VSCode is updating (December 2015) with many of the features you note as lacking.

    With these additional details, I’m leaning towards VSCode and feeling a little put off by Sublime’s lack of momentum.

    Thank you again for your thoughts and comparison.

  • @stephenhouser:disqus thanks for taking the time to share your thoughts!

    Honestly, if you are set on making the switch I don’t think you’d go wrong by moving to VS Code. As you mentioned, they are continuously iterating and providing lots of transparency about feature releases. It feels like the entire VS Code team is taking both the product as well as feedback from the developer community very seriously.

  • stephenhouser

    I do like Sublime and VSCode looks a *lot* like it, hence the appeal!

  • jyotirmaya ojha

    can i run and execute msmpi codes on my visual studio code on my mac os x

  • Jānis Locāns

    Great comparison. But what about that name? “Visual Studio Code”. Try googling for some help, “code” is so general that you will hardly get results related to text editor.

  • Hah! I guess 🙂

    …Good thing their docs are pretty thorough. Try hitting up the VS Code team on Twitter – they’ve been very responsive to me.

  • Rudt Alle

    Im looking for editor (not ide) with good php auto complete, now I using atom, yesterday I tried vs code but not too happy. Any suggest ?

  • Hey Rudt,

    Have you tried Sublime Text with the SublimeCodeIntel package? For JavaScript, SublimeCodeIntel pales in comparison to VS Code’s Intellisense, but perhaps it can be a good compromise for PHP. Also, make sure before your rule out VS Code that you check out the PHP extensions: https://marketplace.visualstudio.com/search?term=php&target=VSCode&sortBy=Relevance. Good luck!

  • Alex, is there a way in Visual Studio Code to generate a minimum HTML5 template on the fly? I am finding that this is close to impossible with Visual Studio Code. Every tutorial I have found online either shows a developer opening pre-defined .htm pages in which they edit in VSCode, or manually typing out HTML mark-up. For many developers in my position, that need to create multiple HTML pages in a short period of time, it would be nice to have a template we can quickly access and load onto a VSCode page….Thanks for any tips.

  • Hi Kensley,

    VS Code includes Emmet snippets by default. If you open an HTML file and type `html:5` + `tab`, you will get the basic HTML5 markup.

    Otherwise, you can create a user defined snippet, as documented here: https://code.visualstudio.com/Docs/customization/userdefinedsnippets

  • John thank you so much! this is exactly what I was looking for. One last question – How can we make a copy of this existing snippet – modify it – and run it with a new name? like ‘html:5b’ + Tab ? Would you happen to know of a tutorial online that comes close to achieving this process? thanks again! I’ve been looking all day for something like this!

  • Hey Kensley,

    What you are looking to do is create a “user defined snippet”. I linked to the VS Code documentation for that above. Depending on how familiar you are with these types of things, there may be a bit of a learning curve. But the docs do tell you what you need to know.

  • Thanks again John! Much appreciated!

  • KAGRAN22

    search on Google using “vs.code” to avoid results from Visuual Studio. Microsoft should have used another name even if its awesome its kinda hard to find “real” results

  • Caffeine99

    It’s funny, I’ve been looking at VS Code as a multi-platform solution (I have to deal with Win, OSX and Android) and was initially ecstatic. As I’ve played with it though, my enthusiasm has been tempered. I’m used to the traditional Visual Studio, the full featured IDE, which is a pleasure to work with. I know, it’s only for Win and .NET

    I’m finding VS Code really nothing more than a simple code editor that’s lacking a lot of what I need. I think it’s a good first attempt, but I was hoping for much more. I also find it requires A LOT of configuring and tweaking to get the most simple things up and running.

    I actually think putting it under the ‘Visual Studio’ umbrella of MS products was a mistake, as there’s certain expectations that come with VS from those of us who have worked with it for years.

  • Yashin Yaroslav

    Dude, God bless you! It’s exactly i’ve been looking for! Now i won’t try to use MS Code. Thanks a lot, again!

  • Django Exp

    I have been using VSC for about 2 months now, and I love the speed and the cool theme but I still have a problem with the power consumption .I hope this is solved and Ill say goodbye to subl

  • Hey John,

    I hope that this extension help you to develop Magento in VSCode 🙂

  • Neil

    Hi John,

    I’m brand new to coding and am starting a coding bootcamp very soon. We will be using VSCode. I am a huge fan of using key binds in general and always try to find the best default hot keys for everything I use and to customize them when needed.

    However, since I’m so new to coding, it is of course overwhelming and I can’t start key binding until I know what I will want bound, but I want to start early on this to develop a good personal config that I will have mastered and fine tuned asap. I wonder if, once I get a bit more experienced with coding, if you think it could be useful for me to try your key binds that Alex converted to VSCode for myself as an intro to some of the most useful things to have bound (once I know what these are from trying yours and seeing their advantage, I will know if I want to rebind them based on my personal preference)? Much appreciated.

  • Hey Neil,

    On behalf of the developer community, welcome!

    Your question is timed well. I am planing to update this post for the VSCode 1.5 release over the weekend. Much has changed. As I anticipated, the VSCode team is moving *very* quickly. Many of the issues I addressed above are no longer issues. Really, the only major issue I have left with VSCode is its awful syntax support (scope selectors for theming). I’ll detail that in the coming update. Otherwise, my longer term opinion of VSCode remains incredibly positive. I fully plan on switching to it.

    That said, I’ve done a bunch work around customizing my VSCode environment – including building out a bunch of custom key bindings. Alex provided a good starting point, but that was ages ago in VSCode’s short lifespan. I think you’ll want to check back next week. And of course, you are more than welcome to use whatever I put out there – that’s what its for, to help people 🙂

    Have a great night,