I recently moved from EMACS (after using it for ~10 years & ~6 languages) to VSCode. There are loads of things that I miss but overall it's been a fairly smooth transition.
I'm moving because I spend most of my time writing javascript and felt that no combination of emacs modes allowed me to keep up with a proper IDE. Emacs is a tool to learn once and use for a lifetime (and I will continue to use it for other editing tasks) but I found that I was increasingly having to learn outside tools in order to gain the benefit that IDEs could hand me for "free" (free like a puppy, retraining your fingers takes months).
Things I love:
- Intellisense is immediately superior to anything I've used in EMACS.
- Debugging from my editor. This was available in emacs for C, PHP & Java using GDB or similar but it never made it's way to javascript as far as I can tell.
- Goto definition.
- Good typescript and Flow integration
Things I miss:
- IDO Mode (FML I hate Finder for moving through directories)
- Creating files with just the keyboard (probably possible but I haven't figured it out yet).
- Kill ring
- Moving around the code with just a keyboard (ctrl-v and the sort).
- Non-intellisense completion. When your caret is at the end of a word, Command-\ in EMACS completes to another word from the same buffer that has the same prefix and continue to swap through words on subsequent presses. Very useful in a dynamic language.
Do you use any extension to use emacs keybindings? I've tried out VS Code a couple of times and wasn't able to find an extension for emacs keybindings that had everything I use in it. When I tried out Atom, one of the packages for this worked fairly well (although I have other issues that prevent me from using Atom as my full-time editor)
As a long-time emacs user, I have recently taken a look at VSCode, and while I am not ditching emacs anytime soon, the experience was a lot more pleasant than I would have expected. I plan to use it for some toy project over the holidays, see how that works out.
> Moving around the code with just a keyboard (ctrl-v and the sort).
That is something I have missed in pretty much every IDE I have ever used, except OpenWatcom's, which allows to use vi-keybindings. (Okay, so Eclipse supports Emacs-ish keybindings, too, but it felt really weird using those.)
I think, there is a plugin/package for VSCode that implements emacs-style keybindings, but I could not get it to work properly. :-(
For the IDO part: If you open a folder in VS Code, then you can use Ctrl+P or Ctrl+T (I keep forgetting which), and that allows you to type part of the file name, and then it will find it. The best is, it searches the entire subtree of the folder you opened.
VS Code is, along with Typescript and Vue, one of my favorite things to have entered my world in the past 6 months. They have been rapidly improving VSC and I am exceptionally happy with it.
Do you use typescript with vue? I had researched it at one point, though admittedly not too far in depth, but came away with a conclusion that vue doesn't lend itself well to types.
Why are people using this instead of WebStorm? It seems like:
- It a little faster for Typescript (but no better TS features from what I can see).
- A lot of people are trying it because it's new, or because they like MS tools.
- It's free
On the other hand WebStorm still has more functionality overall, a few less rough edges, and a more standard UI (some people don't like how MS Code doesn't have a tabbed doc UI).
My personal calculus is that WebStorm is so cheap, I would not allow my primary tool to be even 1% worse to save money. Also I like those crazy guys - they have been pushing out features very fast for years now.
I upvoted your comment because your points are accurate (I have both WebStorm and Visual Studio Code open all day every day for my current project) and informative, but mostly because what the fuck are adiranlmm and plexicle going on about.
From my experience, I would just add that while WebStorm is indeed far more powerful in terms of features that it has, it:
- is actually slower even than VS Code for many operations (both of which are, when compared to a native editor like Sublime or TextMate 2, objectively slowww at basic operations like launching and opening windows)
- it comes with a shopsack full of shit enabled by default, that most people will need to scale back, adjust, or turn off before getting productive. E.g., on the Mac, all the text editing keyboard shortcuts are wrong, drag and drop doesn't work like any other app, some windows can only be docked or floating windows (wtf!) and can't be put in the background, and all sorts of spurious code-linting and annoying popup suggestions are enabled by default. It's the UI equivalent of somebody shouting all sorts of commands and suggestions at you, while when you first open VSCode its a fairly minimal rectangle of text that you can work with right away and gradually learn the advanced features when you are ready to.
So one answer to "why people use this instead of WebStorm" is probably that, especially on Mac, many people's first response to WebStorm is to groan "bleeeccch! yuck!" and close the window and drag the app to the trash.
(I did that a few times, too, but in the end the WebStorm the code completion and intelligent navigation was so much better than anything else that I decided to endure the UI atrocities and stick with it.)
> some people don't like how MS Code doesn't have a tabbed doc UI
VS Code has had tabs for over half a year now, since the 1.3 release in June. Beforehand, the "active documents" acted more or less as nerfed tabs, but I agree the real tab support was desperately needed before 1.3.
> they have been pushing out features very fast for years now.
WebStorm gets major updates 2-3 times a year, VS Code gets major updates 12 times a year. I'm pretty sure you can't really call WebStorm "very fast" on that front given that metric.
I've never used WebStorm so I can't really comment on the other points, but you're also being very vague. What are some examples of more functionality and less rough edges?
WebStorm has both Intellisense-like autocomplete and word completion. Its "Jump to definition" helped me become a better programmer because jumping into library code became a habit - be it Ruby or Javascript (I use RubyMine). They were one of the first editors to fully support JSX, and before that they came first in supporting Angular v1 and its directives. They let you refactor code in dynamic languages, does it silently and safely when the scope is clear, and asks you when not.
When I had to work on a Java project, using IntelliJ was a dream. The same environment, but with sturdier refactoring. Plus it taught me Java idioms by whispering gentle suggestions while programming.
In Rails, when you rename your controller it renames your routes. It has a great debugger integrated that just works. It has support for your rake tasks, at par with the deep integration into all environments it support.
When they changed their subscription model to an yearly fee, I was happy to be giving more money from my limited paycheck to this company. It is the kind of software I'd write love letters to. I make tools for developers, and one day I want them to be of the calibre of JetBrains' products.
Because competition is healthy and without it you'd be wishing there was an alternative to WebStorm.
Also because some of us don't like WebStorm. My experience with it has been very poor. I actually bought a license and invested time in trying to "like" it, but for my use case it was not quite there. E.g. I write a lot of Flow/TypeScript and it has always lagged behind or required me to use bleeding edge versions which were a) free anyway, so my license was unnecessary for that time span, and b) very buggy, which defeats the purpose. For vanilla JavaScript, it has the best autocompletion out there, but when you're using TypeScript or Flow there's just no advantage since practically any decent editor will give you the expected suggestions.
Boot up times are important for me because sometimes I'm in the terminal and I want to open a file, work with it, then quit (`cmd+q` or `:q`) when I'm done. WebStorm is not my friend in those cases. Vim is. Surprisingly VSCode is as well.
In WebStorm's defence, I believe the Vim plugin is one of the best out there (perhaps just second to Emacs evil mode). Other than that and its JavaScript IntelliSense... I can't really think of any other advantages. I hear some of my colleagues talk about git diffing / merge views, but to be honest I already have tools for that and I never do any git stuff in my editor unless it's Emacs + magit.
Refactoring JavaScript code might be neat with WebStorm as well but I haven't used it enough to have an opinion on it. I don't know how well it performs with TypeScript / Flow / Elm codebases but I'd be interested to see it in action, since those seem to be easier targets for refactoring than JavaScript.
I recently switched from PHPStorm (which I already buy license for) to VS Code, and for me the main problem was Java engine on Windows which PHPStorm runs on. I just didn't have a luck to make it work smooth enough, while my computer is quite strong in and of itself. Those occasional hiccups when the editor or whole IDE just frozen for a few seconds driven me crazy sometimes.
So for me, VS Code is a lot faster, not just a little bit. Also command invocation is faster via F1 key.
Apart from that, VS Code just feel a bit more "modern", for example in the areas:
- git integration is more straightforward, or "just better".
- settings are also better organized, no more browsing various dialogs, everything is in one json file.
Not saying Electron is the pinnacle of performance, but IntelliJ and the whole Java Swing stack is just abysmal in my experience. I much prefer VS Code, it feels way 'snappier'.
The Just my Code debugger support, where stepping through callbacks can just skip all the in-between functions handled by third party libs looks fantastic.
Especially with await / yield-promise type stuff, I could imagine this will make debugging much nicer.
Being able to hide the activity bar puts VSCode into a class of editors I could imagine myself using. I tried it a couple of times in the past, and that damned big ass bar of useless icons bugged me too much (I work on a laptop screen 95% of the time, so giving up that much real estate for something I'd rather do with hotkeys is just painful). It sounds silly to dismiss it over such a small UI thing, but well...my screen is small, my eyes are getting older (so even though I have a 4k display, I can't shrink everything down without eye strain), and vim and Atom don't eat up the screen in the same way. So, I use vim and Atom (mostly vim, as old habits die hard). But, will give VSCode another try.
There is an issue though that I find so annoying and I just hope they fix it.
I set up the external terminal to git bash on windows and sometimes when I'm deleting commands with the backspace it doesn't really delete the full word, hard to explain but as an example if I type "nani" and then press backspace "nani" stays but I know it has been deleted because it kinda flicks so I type "o" now I have in the terminal "nanio" and sure enough if I now type the name of the file it edits it.
Hope this makes sense, I put up with it because I'm really enjoying the product and the speed of development.
I know they're working on styling, but now that the titlebar is black, too (on Mac), I really, really would appreciate if the status bar would blend in, too.
It depends on what you need. The new built-in path intellisense only applies to JavaScript and TypeScript files for require or import statements. The path intellisense extension specifically is much more general and offers additional functionality that you may find helpful.
I work on the VSCode team on JS and TS support, so please let us know if you run into any problems with the new path intellisense feature or have ideas on how it could be improved.
I'm an Emacs user, so that's what I've written most of my Rust in, but I tried out VSCode and setting up all of the Rust integration, and it was pretty easy to set up and seemed to work pretty well playing with it briefly. Didn't seem to be worth switching from Emacs for, but I was fairly impressed, and will likely recommend VSCode for anyone looking for a Rust IDE who doesn't already have a strongly preferred editor or IDE.
It's decent, but far from perfect. Working are: Intellisense, go to definition, some type information on hover.
Sometimes, however, autocomplete doesn't work. (If the file is too big, or if you use macros, both of which are very common in rust.) I found the type info tooltips to not be super precise. There's no live error checking, or at least I couldn't get it to work. I also couldn't get auto formatting to work, but I didn't try much. (Since I can just do it from the command line, anyway)
I wish it had more documentation-related features.
Haven't really tried debugging yet, but should work fine. (I believe it uses GDB)
I have been but I don't put much stress of the fancier features of the IDE, mostly I just use it as a tabbed text editor with syntax highlighting and git support.
Racer (intelligent auto complete) has always been a bit flaky, but other than that it's been great.
Hot Exit is one of those features that I didn't think I needed or wanted...until I started using Sublime like a notepad to store text, but not save it. I'm excited that this feature is now in VSCode now, and it also works with files that have never been saved just like Sublime.
This is awesome - I was just this week looking at using Vuejs for a new project instead of React, but the lack of Intellisense in "Single File Components" with VSCode was a deal breaker for me, better to stay with JSX. I've used all kinds of things before the associated tooling is really up to par, and it's one of those things I often regret later. At least it's still not too late to revisit the decision!
Still waiting on docblock support or plugin for PHP, then I'm going to give it a shot. Till then I'll stick w/ sublime.
Though I've been trying vim again, maybe I'll finally jump into it.. I mean I jumped into Arch linux + i3wm(tiled window manager), moving into the console for everything seems next logical transition toward becoming part computer.
Has anyone been able to get decent JS Intellisense working on VS Code? I recently switched to (and decided to pay for) WebStorm, despite the fact that it's debugging experience is slower, because it will properly inspect my project, automatically get the typings .tsd's for all of my node_modules and Node core and put them somewhere out of my way (i.e. not in my project root directory!).
I can then properly refactor my code. I can 'go to definition' and it actually works! Also the editor automatically telling me a 'variable is unused' being switched on by default without some plugin? This should be standard.
Having been a C++ and Java dev before this Node gig, these things were essential for me.
This and the fact that it has lots of tools built in persuaded me to make the switch.
I still keep an eye on the VS Code releases hoping one day I can hop back.
Is VSCode a good tool for someone that is just starting to learn software development?
My plan is to become a front-end developer. I am learning Javascript now, then go back a little and learn more deeply CSS, then make some projects with NodeJS and on and on.
I use Notepad++ today and it looks good enough for me. So I wanted to ask more experienced developers: a more powerful tool at this early stage of the learning curve help or confuse?
[+] [-] wwalser|9 years ago|reply
I'm moving because I spend most of my time writing javascript and felt that no combination of emacs modes allowed me to keep up with a proper IDE. Emacs is a tool to learn once and use for a lifetime (and I will continue to use it for other editing tasks) but I found that I was increasingly having to learn outside tools in order to gain the benefit that IDEs could hand me for "free" (free like a puppy, retraining your fingers takes months).
Things I love:
- Intellisense is immediately superior to anything I've used in EMACS.
- Debugging from my editor. This was available in emacs for C, PHP & Java using GDB or similar but it never made it's way to javascript as far as I can tell.
- Goto definition.
- Good typescript and Flow integration
Things I miss:
- IDO Mode (FML I hate Finder for moving through directories)
- Creating files with just the keyboard (probably possible but I haven't figured it out yet).
- Kill ring
- Moving around the code with just a keyboard (ctrl-v and the sort).
- Non-intellisense completion. When your caret is at the end of a word, Command-\ in EMACS completes to another word from the same buffer that has the same prefix and continue to swap through words on subsequent presses. Very useful in a dynamic language.
[+] [-] ggregoire|9 years ago|reply
There is a bunch of annoying bugs waiting to be fixed, e.g. the one about the imported types [1].
In the other hand, I don't blame the maintainers. The Flow team is a really small team and the VSCode extension is obviously not the priority. :)
If you guys see this message, thanks for the amazing work on Flow!
[1]: https://github.com/flowtype/flow-for-vscode/issues/23
[+] [-] rayiner|9 years ago|reply
For JS maybe. Irony with irony-clang is the best C++ autocomplete I've found. VSCode's C++ Intellisense is crap.
[+] [-] saghm|9 years ago|reply
[+] [-] krylon|9 years ago|reply
> Moving around the code with just a keyboard (ctrl-v and the sort).
That is something I have missed in pretty much every IDE I have ever used, except OpenWatcom's, which allows to use vi-keybindings. (Okay, so Eclipse supports Emacs-ish keybindings, too, but it felt really weird using those.)
I think, there is a plugin/package for VSCode that implements emacs-style keybindings, but I could not get it to work properly. :-(
[+] [-] lobster_johnson|9 years ago|reply
For completion: Ctrl-space will force a completion at your current location.
[+] [-] hibbelig|9 years ago|reply
[+] [-] jordache|9 years ago|reply
[+] [-] mmanfrin|9 years ago|reply
[+] [-] komali2|9 years ago|reply
[+] [-] netcraft|9 years ago|reply
[+] [-] WhitneyLand|9 years ago|reply
- It a little faster for Typescript (but no better TS features from what I can see).
- A lot of people are trying it because it's new, or because they like MS tools.
- It's free
On the other hand WebStorm still has more functionality overall, a few less rough edges, and a more standard UI (some people don't like how MS Code doesn't have a tabbed doc UI).
My personal calculus is that WebStorm is so cheap, I would not allow my primary tool to be even 1% worse to save money. Also I like those crazy guys - they have been pushing out features very fast for years now.
[+] [-] veidr|9 years ago|reply
From my experience, I would just add that while WebStorm is indeed far more powerful in terms of features that it has, it:
- is actually slower even than VS Code for many operations (both of which are, when compared to a native editor like Sublime or TextMate 2, objectively slowww at basic operations like launching and opening windows)
- it comes with a shopsack full of shit enabled by default, that most people will need to scale back, adjust, or turn off before getting productive. E.g., on the Mac, all the text editing keyboard shortcuts are wrong, drag and drop doesn't work like any other app, some windows can only be docked or floating windows (wtf!) and can't be put in the background, and all sorts of spurious code-linting and annoying popup suggestions are enabled by default. It's the UI equivalent of somebody shouting all sorts of commands and suggestions at you, while when you first open VSCode its a fairly minimal rectangle of text that you can work with right away and gradually learn the advanced features when you are ready to.
So one answer to "why people use this instead of WebStorm" is probably that, especially on Mac, many people's first response to WebStorm is to groan "bleeeccch! yuck!" and close the window and drag the app to the trash.
(I did that a few times, too, but in the end the WebStorm the code completion and intelligent navigation was so much better than anything else that I decided to endure the UI atrocities and stick with it.)
[+] [-] mynameisvlad|9 years ago|reply
VS Code has had tabs for over half a year now, since the 1.3 release in June. Beforehand, the "active documents" acted more or less as nerfed tabs, but I agree the real tab support was desperately needed before 1.3.
> they have been pushing out features very fast for years now.
WebStorm gets major updates 2-3 times a year, VS Code gets major updates 12 times a year. I'm pretty sure you can't really call WebStorm "very fast" on that front given that metric.
I've never used WebStorm so I can't really comment on the other points, but you're also being very vague. What are some examples of more functionality and less rough edges?
[+] [-] jasim|9 years ago|reply
When I had to work on a Java project, using IntelliJ was a dream. The same environment, but with sturdier refactoring. Plus it taught me Java idioms by whispering gentle suggestions while programming.
In Rails, when you rename your controller it renames your routes. It has a great debugger integrated that just works. It has support for your rake tasks, at par with the deep integration into all environments it support.
When they changed their subscription model to an yearly fee, I was happy to be giving more money from my limited paycheck to this company. It is the kind of software I'd write love letters to. I make tools for developers, and one day I want them to be of the calibre of JetBrains' products.
[+] [-] mmgutz|9 years ago|reply
[+] [-] eyko|9 years ago|reply
Also because some of us don't like WebStorm. My experience with it has been very poor. I actually bought a license and invested time in trying to "like" it, but for my use case it was not quite there. E.g. I write a lot of Flow/TypeScript and it has always lagged behind or required me to use bleeding edge versions which were a) free anyway, so my license was unnecessary for that time span, and b) very buggy, which defeats the purpose. For vanilla JavaScript, it has the best autocompletion out there, but when you're using TypeScript or Flow there's just no advantage since practically any decent editor will give you the expected suggestions.
Boot up times are important for me because sometimes I'm in the terminal and I want to open a file, work with it, then quit (`cmd+q` or `:q`) when I'm done. WebStorm is not my friend in those cases. Vim is. Surprisingly VSCode is as well.
In WebStorm's defence, I believe the Vim plugin is one of the best out there (perhaps just second to Emacs evil mode). Other than that and its JavaScript IntelliSense... I can't really think of any other advantages. I hear some of my colleagues talk about git diffing / merge views, but to be honest I already have tools for that and I never do any git stuff in my editor unless it's Emacs + magit.
Refactoring JavaScript code might be neat with WebStorm as well but I haven't used it enough to have an opinion on it. I don't know how well it performs with TypeScript / Flow / Elm codebases but I'd be interested to see it in action, since those seem to be easier targets for refactoring than JavaScript.
[+] [-] greyman|9 years ago|reply
So for me, VS Code is a lot faster, not just a little bit. Also command invocation is faster via F1 key.
Apart from that, VS Code just feel a bit more "modern", for example in the areas:
- git integration is more straightforward, or "just better".
- settings are also better organized, no more browsing various dialogs, everything is in one json file.
[+] [-] Longhanks|9 years ago|reply
[+] [-] curiousDog|9 years ago|reply
[+] [-] crooked-v|9 years ago|reply
[+] [-] WhitneyLand|9 years ago|reply
[+] [-] adrianlmm|9 years ago|reply
[+] [-] torgoguys|9 years ago|reply
[+] [-] ggregoire|9 years ago|reply
From one member: "VSCode has a relatively small team compared to the size of the product" - https://github.com/Microsoft/vscode/issues/13138#issuecommen...
[+] [-] gyros|9 years ago|reply
[+] [-] hackcrafter|9 years ago|reply
Especially with await / yield-promise type stuff, I could imagine this will make debugging much nicer.
[0] https://code.visualstudio.com/updates/v1_8#_just-my-code-nod...
[+] [-] SwellJoe|9 years ago|reply
[+] [-] angelofm|9 years ago|reply
There is an issue though that I find so annoying and I just hope they fix it.
I set up the external terminal to git bash on windows and sometimes when I'm deleting commands with the backspace it doesn't really delete the full word, hard to explain but as an example if I type "nani" and then press backspace "nani" stays but I know it has been deleted because it kinda flicks so I type "o" now I have in the terminal "nanio" and sure enough if I now type the name of the file it edits it.
Hope this makes sense, I put up with it because I'm really enjoying the product and the speed of development.
Big congratulations to the team.
[+] [-] Tyriar|9 years ago|reply
[+] [-] unknown|9 years ago|reply
[deleted]
[+] [-] earthnail|9 years ago|reply
[+] [-] americanjetset|9 years ago|reply
So happy.
[+] [-] ggregoire|9 years ago|reply
Does that mean we don't need those extensions anymore?
- Path Intellisense: https://marketplace.visualstudio.com/items?itemName=christia...
- NPM Intellisense: https://marketplace.visualstudio.com/items?itemName=christia...
(I have not updated yet)
[+] [-] mattbierner|9 years ago|reply
I work on the VSCode team on JS and TS support, so please let us know if you run into any problems with the new path intellisense feature or have ideas on how it could be improved.
Thanks
[+] [-] rl3|9 years ago|reply
https://areweideyet.com/
Going by feature set alone (plugins included) it appears like a good choice, though I've yet to try it myself.
[+] [-] lambda|9 years ago|reply
[+] [-] TheCoreh|9 years ago|reply
Sometimes, however, autocomplete doesn't work. (If the file is too big, or if you use macros, both of which are very common in rust.) I found the type info tooltips to not be super precise. There's no live error checking, or at least I couldn't get it to work. I also couldn't get auto formatting to work, but I didn't try much. (Since I can just do it from the command line, anyway)
I wish it had more documentation-related features.
Haven't really tried debugging yet, but should work fine. (I believe it uses GDB)
[+] [-] gpm|9 years ago|reply
Racer (intelligent auto complete) has always been a bit flaky, but other than that it's been great.
[+] [-] _isus|9 years ago|reply
[+] [-] hyperdeficit|9 years ago|reply
[+] [-] geostyx|9 years ago|reply
Also, I did not know how much I needed Zen mode in my life.
[+] [-] bopcrane|9 years ago|reply
[+] [-] hannibalhorn|9 years ago|reply
[+] [-] gremlinsinc|9 years ago|reply
Though I've been trying vim again, maybe I'll finally jump into it.. I mean I jumped into Arch linux + i3wm(tiled window manager), moving into the console for everything seems next logical transition toward becoming part computer.
[+] [-] brulard|9 years ago|reply
[+] [-] _tjm|9 years ago|reply
I can then properly refactor my code. I can 'go to definition' and it actually works! Also the editor automatically telling me a 'variable is unused' being switched on by default without some plugin? This should be standard.
Having been a C++ and Java dev before this Node gig, these things were essential for me.
This and the fact that it has lots of tools built in persuaded me to make the switch.
I still keep an eye on the VS Code releases hoping one day I can hop back.
[+] [-] LeonidBugaev|9 years ago|reply
Over 1500 people, monthly, contribute to the project!
[+] [-] soneca|9 years ago|reply
My plan is to become a front-end developer. I am learning Javascript now, then go back a little and learn more deeply CSS, then make some projects with NodeJS and on and on.
I use Notepad++ today and it looks good enough for me. So I wanted to ask more experienced developers: a more powerful tool at this early stage of the learning curve help or confuse?
[+] [-] tarr11|9 years ago|reply
I was interested in using it but noticed the last commit for Monaco was in October.
[1] https://github.com/Microsoft/monaco-editor