About a month ago a co worker showed me this IDE called Visual Studio Code. At first I was skeptical that Microsoft could of created anything of worth. My workplace is interested in moving over to .NET core, and as such Visual Studio Code is sanctioned by Microsoft to have .NET core support. So it became my mission to check out the IDE, after all it looked to be better than Visual Studio, which we normally have to work with anyway.
Once I started messing with the editor I was surprised to see it had a nice git integration right out of the box; I could easily navigate between branches and create new branches. Some places it falls short, like lack of git merging but overall it solves most of the functionality I have to deal with regarding git. So it was nice how it made adding git to my workflow a lot easier. Often times it was inconvenient to stop and commit everything; but with Visual Studio Code it was really easy.
Next came it’s ability to detect context, I figured I would give it a try to see how easily I could get my personal project DMUX set up with vscode, and it was really easy! It found my CMakeLists.txt file automatically and started working right away once I installed the needed plugins (which was easy to install via their marketplace). I started to become more interested in it.
Although of course Microsoft would not do this without throwing a few strings in there to hamper this new IDE they released. I shortly figured out that Microsoft maintains a product.json file, and that Visual Studio Code itself claimed to be “Open Source”, however Visual Studio Code is under the Microsoft EULA, and if you want the Visual Studio Code to be free software (under the MIT) then you needed to build it from source, so I did just that. So I managed to overcome that trail. Sadly the freedom respect vscode by default was crippled by not having easy access to the marketplace, I fixed this by making a product.json file that was not crippled and had easy access to the marketplace. This made vscode a lot easier.
Once I did that I also realized the plugin for C++ support was also proprietary! This was really aggravating and Microsoft would not cooperate in making this plugin free software and they have no plans of doing so. So I uninstalled the plugin from my vscode installation. I make the distinction between Visual Studio Code which is proprietary and vscode which is free software. So after playing around with it I got it working without their C++ support, however I am missing autocomplete sadly. However other than that I have literally everything else I ever wanted.
Some reasons I use vscode in my development (and in writing this blog)
- This blog is auto updated with git and cron, vscode has a git integration that makes updating my blog from my development environment really easy. cron auto pulls so the site is updated at the push of a button and is really low maintenance (a reason my previous blogs went so unmaintained).
- Built in Markdown renderer, so I can see what these blog posts look like in vscode before publishing them. I use Jekyll for this blog, and as such it is markdown based.
- Debugging is a lot easier; before I used vscode I did not make heavy use of my debugger, however now I am stepping through my projects all of the time. vscode has made me a lot more efficient on the debugging front.
- Plugins, I got a plugin from everything to my debugger, to emacs keybindings. I was really happy to see I could have my emacs keybindings back, I was using kdevelop before vscode and it did not have support for emacs keybindings.
- Easily customizable, it’s settings are stored in a json file which is really easy to configure, and all the default settings are listed for you as well.
- Lightweight, a pluralsight tutorial about Visual Studio Code said that it hit the sweet spot between a IDE and an editor, and I could not agree more.
- It picks up on context, no more opening project files, I just open a folder and vscode automatically can determine what kind of project it is and adjust itself accordingly
- Built in terminal emulator, no more alt tabbing to get access to the command line when I need it.
- Traversing my project and greping for source files are also very well supported. I can even find and replace through my whole project without remembering grep command line parameters.
- It supports almost all platforms, I can write anything from .NET core, to C++, to maintaining my blog with vscode, it is a really versatile tool.
Despite it’s flaws and Microsoft’s unwillingness to cooperate with the free world on the issue of some of the plugins they make for vscode, vscode is a wonderful IDE for my use case. I had to go through some trouble to get it going but now I am very happy with my experience with vscode. Thank you Microsoft for making vscode and releasing it as free software!