Hacker News new | past | comments | ask | show | jobs | submit login
Visual Studio Code 1.5 (visualstudio.com)
379 points by out_of_protocol on Sept 8, 2016 | hide | past | web | favorite | 258 comments

VSCode + TypeScript is an amazing experience for us poor JavaScript developers that never enjoyed proper autocomplete and refactoring in our editors. Writing JavaScript feels like writing random bash scripts with no help now. TypeScript is freaking awesome and you should start using it! :)

Try WebStorm. I'm surprised at how few people use it, given the quality of the autocomplete and code assistance (and the fact that it works just as well with ES6 as it does with TypeScript!)

On this day and age many don't want to pay for tools.

Sometimes I wonder if Emacs and Vi would be so appreciated if they were commercial as well, without any FOSS version available.

> On this day and age many don't want to pay for tools.

Strange logic: if everyone followed that train of thought, we'd all settle for whatever quality tools are available so long as the price is $0. I'd much rather pay for a valuable tool than use a subpar free tool.

It's a common fallacy to associate quality with price. Generally yes, but not always. Sublime Text certainly isn't 70 dollars better than Atom or VS Code.

For me, it is. Some of the main points that makes it worth money to me are the plugin ecosystem is huge, the editor is fast, its layout management (panes in columns/rows) is incredible, and it was the first editor I had that gave me multi-cursors. I like where VS Code is going and I try to use it when I can, but most of the keybindings and shortcuts I have memorized are for Sublime and IntelliJ based IDEs.

The only thing you listed that sublime uniquely offers is that it was your first and you prefer their key bindings.

Eh but it existed for long before Atom and VS code. (disclaimer I paid the $70 and felt it was well worth the money at the time, these days yeah maybe I wouldn't but I still do find myself using it a lot)

Edit: To expand, sublime is still by far my favorite TEXT editor. I just don't find doing everyday text editing tasks in VSCode to be pleasant at all, its an amazing IDE though!. Atom is much better for the task but the responsiveness and large file handling capabilities of sublime makes it the clear winner. If you already paid the $70 for a licence back when atom didn't exist anyways...

I wasn't only associating quality with price, but also pointing out that many of the 2016's Emacs and vi users would not use them if they were only available as commercial software.

Regardless of their quality, because the actual IT generation wants to earn money with tools they got for free (beer), while other professions people do pay for their tools.

> Regardless of their quality, because the actual IT generation wants to earn money with tools they got for free (beer), while other professions people do pay for their tools.

You seem to feel strongly enough about this to repeat it nearly word-for-word in multiple comments. Trust me, every profession wants to pay less for its tools. And no one, in IT or out, is choosing their tools "regardless of quality".

I feel strongly about it because this mentality reduced the market of selling software tools to a niche, to the point that to earn money selling tools, we have to sell them to enterprise customers, the only ones willing to pay for software.

This is why most companies selling such software tools have switched their basic versions from "trial during X days/trial license" to free (beer), while trying to seduce developers to eventually pay for the full version.

I think it depends on how much you treasure battery life. Electron based apps suffer from poor battery life due to the Chromium unpinning. JS is resource intensive compared to C++. You can probably get an extra 20-35% battery life out of Sublime vs Atom. If you don't have the ability to plugin while out, it might be worth the piece of mind.

It was for many years (because the others didn't exist)

Maybe not $70.. but I always find myself going back to it.

That depends on how valuable your time is.

Are you working on a project that makes money? Will a productivity tool increase your productivity by half a percent? Then that tool is worth hundreds of dollars. If not thousands.

I see you haven't abused multicursors.

VS Code has support of multiple cursors. See https://code.visualstudio.com/docs/editor/editingevolved#_mu...

I remember, it was less powerful when I tested it few month ago. Went back to sublime (even though I use idea at work).

VSCode and Atom both have multicursors.

Much, much less powerful fotms of them.

It is not a strange logic and I am not talking only about quality.

I am talking about IT being one of the few professions in 2016, with individuals that expect to earn money while using tools produced with the effort of others for free (beer), while not giving anything back (not even bug reports, unless their own customers press them against the wall).

So the question isn't about the quality, rather how many Emacs and vi users would have actually payed for them, if they were only available as commercial software?

Vim is charity ware actually or at least that's how it was qualified when I started using it. Most of the long time vim users I know have donated several times. Vim and Emacs also have shit loads of plugins, which can make them behave just like Atom or VSCode so as usual I think it's just a matter of preference.

I am yet to know anyone that gave any money to Vim.

Would those shit loads of plugins exist if people had to pay for them?

Thats a nice way to start a flame war: hinting that vi and emacs are subpar tools.

That's you. What about the other 7bn people?

I'm sure if you look, you'll find someone that has a differing opinion. This doesn't make one opinion more valid than the other.

> On this day and age many don't want to pay for tools.

Main part of pycharm is free and open source: https://blog.jetbrains.com/pycharm/2013/10/pycharm-3-0-commu... .

> Sometimes I wonder if Emacs and Vi would be so appreciated if they were commercial as well, without any FOSS version available.

One reason for multitude of emacs extensions is the open source nature. Average IntelliJ user is less likely to write extension than emacs user.

I think a comparing intellij platform to eclipse makes more sense. Why is eclipse so unintuitive?

For example, why must I click ok after pushing a change to a remote git server? Shouldn't it be a toast?

The same question is even more relevant to emacs and vim. Why are they so unintuitive ?

Intuitiveness is honestly a relative problem. I've been using vi for a long time. What's intuitive to me? Moving my cursor with hjkl is intuitive to me. Using `C-w h` to move my cursor to NERDTree, then searching for my file with `/filename` and opening it with enter makes taking my hand off the keyboard to move my mouse to double-click on a file seem absolutely barbaric.

Which is a shame. It guts the market for good tools.

It's pretty sad that VS Code doesn't give you much that VS6 couldn't do back in the day (except slower and less stable).

Didn't know that VS6 did JavaScript or TypeScript. I only remember C/C++/VB. Certainly don't remember Node.js support.

Also, I think your memory is playing tricks on you. I've experienced more the my fair share of crashes in VS6.

Not to mention that VS6 had one IDE per language instead of having it all integrated into one, so when you used both VB and C++ you'd have to put up with a drastically different UI for each language.

That's been true for a long time.

Emacs definitely would be abandoned if not for the GPL. What software developer wants to spend their time in an environment they don't control?!

VSCode is open source software. WebStorm isn't. I love JetBrains IDEs but I sure as hell prefer using tools that I can fix or modify myself.

I had one of those aha moments last week. I started to write to complain to Microsoft that VSCode didn't remember my previous searches when I remembered that I could just hack it in myself, which I did. Most programmers like me like that kind of control.

Honest question as I'm not really part of the open source world: 1. What happens to your change when an update comes out? (Or, do you keep up with updates) 2. Having just merged my first ever pull request, how does a project stay coherent with possibly hundreds or thousands of people submitting their 'hacks'?

My fix is just a quick hack and not polished enough to submit, so I'll just reapply it. I'm guessing that the vscode programmers will add a search history and I won't have to keep doing this.

Pull Request https://github.com/Microsoft/vscode/pulls

At the very least it could be considered a vote for the feature.

Pull requests and forks, you can fork a project and keep it up to date with the master. People's hacks are not included in the source code, they're free to fork the project and implement their own hacks and submit a pull request to get their solution included as part of the master if it is approved

Jet-brains products have a gigantic plugin ecosystem that allows you to add whatever functionality you want..

Well, not everything. Language support cannot be implemented by relying on an external service (like the typescript service), it has to be implemented in a very specific way.

They are extensible, sure, but not very flexible.

The TypeScript service is not from Jetbrains, but coding assistance like type inference and auto-completion options have thus far always been this IDEs own implementation [0]:

    > This assistance can be provided either by IntelliJ IDEA itself, or based on the data from
    > the built-in TypeScript compiler, or through integration with the TypeScript Language Service.
They bundle whatever latest TS is available when the product is created or let you point to your own installation. "Use TypScript Service" is marked "experimental", so letting the IDE use the external service for things it traditionally figured out on its own to provide coding assistance is being worked on.

[0] https://www.jetbrains.com/help/idea/2016.2/typescript-suppor...

Oh, looks like I haven't re-checked recently enough - this was almost a year ago. I should give it another try...

I haven't used WebStorm, but if it's as good as PyCharm (also a JetBrains product), then it'll definitely be worth getting.

WebStorm and PyCharm are both (more or less) repackaged versions of IntelliJ with specific plugins. WebStorm is cheaper and just includes the JavaScript support (and other related languages/tools) and PyCharm includes both JavaScript and Python support. So everything in WebStorm is also in PyCharm.

That's how I found out about PyCharm, as I'd already been using IntelliJ for a few years (I primarily do Java development).

I think people find it a little overwhelming, if they aren't familiar with other IntelliJ editors already. I did. Of course Visual Studio is just as overwhelming, but more people are forced to be used to that.


With $120+ per year subscription I am surprised people use it.

120 is for businesses. For individual developers its way cheaper: € 59.00 /1st year, € 47.00 /2nd year, € 35.00 /3rd yr onwards. And you can cancel your subscription if you are OK with 1 year old version that you will fallback to.

My complaint was not so much about the amount, but rather for the yearly subscription.

I really don't like this trend of software as subscription.

If it was $120 for buying a license I would probably consider it. But $120 for 1 year use is rather high in my book.

In fact, you are paying $120 for a license and then getting a year's worth of free upgrades. After your subscription ends, you're still allowed to use that version.

Oh is it? Apologies then, I got it wrong.

I use both, well not so much Webstorm, but IntelliJ for Java/GWT application stack and Visual Studio Code for almost everything else (Python, JS, etc).

Works pretty well, although I think I could increase productivity if I align the keybinding for both of them (i.e. quick open, find, etc)

You know you can use IntelliJ with python (you get pycharm like experience)

Paying for good tools supports developers who make good tools.

I've tried VS Code, but prefer WebStorm.

I pay for a IntelliJ Ultimate license. I am so happy about it. It supports all I want. PHP? Java? Python? Ruby? all you want baby. Consistent UI across all your environment. Solid. Pretty fast. Good Vim plugin. I have absolutely 0 complains. An essential asset.

When I'm on OSX I'm exclusively on Webstorm. When I switch for my personal work to Windows I mostly use VS Code. Webstorm just doesn't render the font, the IDE frame correctly. I find it either too small or big. Webstorm also doesn't use "ctr+w" to close tabs on Windows & linux while does that on OSX.

Does WebStorm still maintain their own version of TypeScript language tools? Back in the 1.0 days they did, and it was a mess. Stuff that would work in Visual Studio and with tsc at the command line wouldn't work in WebStorm.

That said, love Jetbrains. Have a Ultimate license for Java.

The default option is to use the bundled typescript compiler, but you can now also point it to a folder that contains a typescript compiler and it will call out to that. It works very well for me so far.

This is simply not true. Beside Webstorm is a very good IDE, its much more precise with Typescript.

WebStorm is very heavy, and its TypeScript support has some issues that were deal breakers for me (last time I tried).

When was the last time you tried? They are very quick at reacting to (good) bug reports. I've filed almost a hundred by now and I decided to pay them because of my experience in their reaction to bug reports. With each new EAP (early access) and release TypeScript always has a lot of fixes, so it's obvious to me TS has a high priority to them.

Also see here: https://news.ycombinator.com/item?id=12292148

Would creating large applications in WebStorm break things if I wanted to use VSCode in the future or alongside?

You'd be fine. Webstorm will create a .idea directory in your project, which will contain all the Webstorm specific project settings and configuration. But anything else is stored in regular ol' files you could edit with anything. I use Webstorm and my other teammates use VS Code or Sublime.

The only thing that might "break" is if you rely on Webstorm's tools for things like test runners, compiling, minifying and bundling code, etc, instead of learning how to do it on your own. You'd then need to learn how to set it up yourself with the command line tools instead of a nice GUI.

Webstorm creates a hidden folder for it settings, in the project folder, and that's about it.

That's one of my big gripes with IntelliJ - _please_ use standard compiling/building tools.

At least use bash/batch files.

I want to be able to build my projects if I ever decide that I don't need it anymore

I don't understand this comment. How are the build tools Jetbrain's fault? Confused...

I create a project. There are two things they could do:

1. Make an ant/maven/gradle repo, and have the build command run gradle build or something.

2. Create a commandline (open source) tool called "intellibuild" or something, which reads the project files and does whatever the "build" button does.

Unfortunately, they don't do either, so if I don't have a license (or I want to give my code to others who don't use IntelliJ), my J2EE is not buildable.

I can't get over the Eclipse-ish yet unconfigurable UI.

> I'm surprised at how few people use it

I'm not:

> US $ 129.00 /1st year

I don't say it's not worth it, but we have pretty good editors for free (sublime, vscode, atom, etc).

That's organization license. Individual license is just $59

For neovim users, you can get something almost comparable with deoplete [1], tern_for_vim [2], and ternjs-deoplete [3]. I set this up recently and have been very happy with the results. This also supports ES6 and JSX in case you use either of those.

[1] https://github.com/Shougo/deoplete.nvim

[2] https://github.com/ternjs/tern_for_vim

[3] https://github.com/carlitux/deoplete-ternjs

I've been using YCM for autocomplete so far. How does deoplete compare with YCM if you have used that in the past. I did install term_for_vim recently but haven't really configured it much.

Typescript is great and is "natively" included in Angular2, however it's not the case for react and vue.js ecosystems.

Tried to use/learn typescript, in the meantime I wonder if there is a document showing how to use certain "safe" javascript along with its strict mode to make javascript secure enough so that I don't need use Typescript? i.e. how about using a subset of native javascript with certain rules that can achieve what typescript provides, is this enough? is 'strict-mode' the answer?

If there is a book/blog stating "using javascript the way as your typescript" I will buy it right away. :)

React may not have "native" support for TypeScript, but in combination with TypeScript using React is so much more fun, if only for the fact that your props can actually be typed and checked at compile time.

I wrote up how to get started with Typescript and React (and VS Code) - I need to update it for 2.0 but 99% of it is still correct: http://blog.tomduncalf.com/posts/setting-up-typescript-and-r...

The standard recommendation seems to be to use PropTypes. And also in general, to use Babel with React programs. Would be interested to hear experiences of using Typescript with React.

Using React, Redux, JSPM, TypeScript work great together in VS.NET, it compiles on save so you don't need to run any additional watchers and JSPM's bundle feature means you also don't need Babel. Since ES6 support is VS.NET is very weak, using TypeScript is the best way to use the latest ES6/TypeScript features today:


I converted wes bos' react tutorial series to typescript with much success and learned a lot along the way. https://www.github.com/ryanluker/typed-catch-of-the-day

In my opinion React support is progressing quickly but is not fully there yet (definitely more documentation is needed), so for the JSX part the pain is greater than the gain (especially given PropType checking already in React).

As an example, to see what I mean, try to figure out how to write a properly typed Higher Order Component function. Last time I looked at it, this had no direct mention in documentation and only workarounds on StackOverflow.

You can "pass through" props like so:

export var hocFunction: (arg1: any, arg2: any) => <ComponentT>(component: ComponentT) => ComponentT

If you want to add new props as a result of the HOC then see the react-redux .d.ts for a few examples: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/mast...

It seems a little strange but you can import the propTypes of the wrapped component (argument to the HOC) into the wrapper and incorporate them into your type checking there.

If you think learning Typescript is too much hassle for JavaScript "safety" you gonna have a heart attack when you find out about Elm[1] (hint: pure functional programming)


You can definitely use type definitions for Vue.js and React. They work very well.

Not disagreeing but I got all I needed with Atom + atom-ternjs

And I don't even have to introduce typescript to my codebase to get surprisingly good hinting and autocomplete.

The hinting is almost secondary to the implicit documentation that a typed language brings.

and some of your errors are caught before firing up a whole web app and a browser!

Now I am just a noob javascript developer, but s/some/most/ in my experience! :)

error type distribution varies greatly depending on problem domain. Even Idris programs can have runtime errors though =)

I really liked Visual Studio Code, but I couldn't really use it without a Vim plugin. So over the last few months I've been working on this one:


I think it's gotten a lot better, and if lack of vim keybindings was something that was holding you back from trying VSC, I highly encourage you to try it again!

Dang, I'm really happy you made this (event supports remapping 'esc' to 'jj' which is a must for me), but now I'm so waist deep in the atom environment that the switching costs are pretty steep. At this point the only reason I would switch is speed, and Atom is not slow enough to outweigh the switching costs for me. Great work and initiative though, maybe one day I'll switch because of this.

Thanks from a user ;) I cannot use any editor without vim keybindings, furthermore I love "relativenumber", however VSCode gives no API for relative numbers (there is some hacky gutter images extension, but it is really hacky, slow and bad looking). I've made a fork with relative numbers built-in https://github.com/alfanick/vscode. Not going to do pull request, at least not yet - unit testing and i18n required.

BTW I do not use TypeScript (or JS), but it was quite easy to write, still I was quite surprissed how messy VS Code codebase is.

Ah, you should definitely join in on our Slack. Another guy has done some similar work in a plugin: https://github.com/extr0py/vscode-relative-line-numbers

yeah, that's the extension that inspired me ;)

The reason that plugin lags is because it was using `setInterval` initially but I changed it to selectionChange hook and now it works smoothly. Now the only problem with it is it hides breakpoints but definitely we will improve this experience later on. / I'm a Code team member*/

I find relative number very useful to jump lines. Please consider showing current line number for current line. And go ahead with the pull request, many of us need this feature :)

that's exactly what I implemented, yup I will make a pull request soon

There are currently three or four different VIM plugins for VSCode and each of them has its issues. After switching a couple of times I'm currently sticking with your vscodevim but I still often run into situations where muscle memory does one thing and vscode does something unexpected.

Still, keep up the good work! ;)

Any chance you could add nerdtree like behavior for the directory tree? I sooooooo hate reaching for the mouse.

When VS Code was first released, I was ecstatic at the idea of a cross-platform lightweight code editor backed by the weight of the Visual Studio brand. I wanted to move into the vim/sublime style of coding, but just couldn't get used to them despite my efforts. I was also a bit anxious that VSCode might be a bit of a publicity stunt; a way to say "See, microsoft can do cross-platform" but poorly maintained and poorly funded.

I'm happy to see it is plowing ahead steadily to a best-in-class IDE! Every time I open it, there is a new point update[1]. The documentation and tutorials are thankfully kept up to date. Out of the box it is an amazing Node.js editor and debugger. It has greatly helped me develop my Javascript skills and eased a lot of the pain I had with the lack of intellisense in that language (.net dev here). If the vision for the app was "lets create Visual Studio: Millennial Edition" I'd say: target destroyed. Whoever is in charge certainly has a vision, because this sort of app could easily get wrecked by going in too many directions at once. Keep up the great work and keep on that strategy of not listening to every single person's input ;)

[1] By that I mean I have it installed on mac/linux/win so when I open it on various computers, it usually has an update waiting. Not that I've ran it six times.

I switched from Atom recently and have very few complaints. One of them was the (lack of) icons in the sidebar.. the new Seti icon theme is a great addition.

Ooh and they supposedly made Cmd-P searching ('Quick Open') faster. My other main complaint!

Edit: Yep it's faster. I used to wait a second or two for the desired results to pop up, now they're close to instant.

I don't hold allegiances to a text editor (c'mon, it just edits text!) so I switched from Atom for a while too: I was very impressed with it (it feels so snappy, and looks so cool!). It fell over on linting some of the ES7/8 things that we use in our code base - but as soon as they fix that I will give it another serious go.

I had the same complaints and just went with the excellent ESLint plugin with a ES2016/17 friendly config instead of the default vscode linting.

Agreed, it would be nice if the eslint module swallowed javascript linting errors for you... Also, would be cool if it defaulted to using an in-module copy of eslint with the airbnb preset as it's default if no eslint config file is found in the project/workbench.

IMO the Airbnb preset is too extreme / opinionated to use as a default ESLint config. Maybe something a bit more trimmed down would be reasonable.

The beauty of ESLint is that you can override it with your own settings. So you can use the AirBnB setting as the base and override the things that you want.

I know that, but I still think it's way too opinionated to be a base. My linter shouldn't annoy me by forcing me to do things that make my code less legible (like enforcing arrow-body-style) out of the box.

I liked them about equally, but Atom is really slow on my work computer and crashes on my laptop. VSC is much more stable.

Its slowness is the main reason I switched.

I've been switching back-and-forth between Atom and VSCode for several months. Both are great. I use them for app development. Vim for single file edits.

Agreed! That Cmd-P slow down was just a bit too laggy. Happy to see that resolved. Fuzziness seems improved too, but I didn't do a lot of thorough testing there.

Just beating a dead horse here, but I really wish Microsoft would add "hot exit" for unsaved files. It's been in Sublime Text since 2011. Nearly all my Mac apps support this feature natively. Why, in 2016, if VS Code crashes, do I lose all my unsaved files. Especially when I want to treat an instance as merely a scratch pad for ideas.

Supposedly it's Under Review. Hopefully, the next release has it.


Several people on the vscode team (including myself) miss this feature so I'm sure it will come eventually. Also we deprecated user voice recently, the issue is now tracked in https://github.com/Microsoft/vscode/issues/101

Oh man, reading your comment made me super excited. Hopefully "eventually" will be of the sooner variety ;) Joking aside, thank you for this comment, and also your contributions to a great piece of software!

It's unfortunate to see that the group who named their extension "Vim" is being recognized as more or less the official recommendation for Vim emulation, despite being not so good. The last time that I did a survey of feature completeness, performance, and code quality, the author of the amVim extension had a much better showing across the board--and more active involvement in VSCode extension APIs themselves. Perception and naming do matter.

Hi there. I'm one of the authors of the Vim plugin. I'd highly encourage you to try it out again. It has improved quite substantially in the last few months.

Nowadays we have a much larger range of commands. We've got visual block mode, incremental search, vimrc support, marks, registers, proper vim undo support, very broad motion support, and quite a bit more.

Let me know what you think!

I think you should've gotten permission from the Vim folks if your colleagues were going to crib the logo and project name for your own use.

I suspect this was a case of first come, first serve.

Why should someone be forced to change the name of their extension simply because another extension with a similar name became more popular or better?

I haven't used the Vim extensions specifically, but in the extension "store", you can see number of downloads and an average star rating. Is the "bad" Vim plugin not getting downvoted?

The point isn't that the VSCodeVim extension is bad, it's that it isn't good. Having said that, as a project, I would call it a bad one.

Last time I commented on this on HN, I pointed out that the VSCodeVim group's extension had three times the number of downloads as the one called amVim. And of course it would. I speculated last time, just like I'm doing here, that this has more to do with the names chosen for the projects and the air of authority they have (VSCodeVim vs amVim) than it does with extension quality. More troubling is that recently the VSCodeVim folks changed their packaging so that it appears under the Vim name in the extension gallery and began using the official Vim logo, too. Not cool.

Are you the author of the amVim project as its GitHub handle implies?

If so, isn't a "full disclosure" needed when speaking of a "competitive" project?

How do you connect "carussell" to https://github.com/aioutecism/amVim-for-VSCode?

I connected carussell to the crussell maintaining some fork here: https://gitlab.com/crussell/amVim as pointed elsewhere.

It would certainly be possible that he contributed code to the project given that.

Shocker: when I reviewed the code for both projects, I sent fixes to the one that I found to be of high quality. Why is this surprising?

And no, I'm not "maintaining some fork"--there's no way to submit patches on GitHub, and the only way to get changes in for most projects hosted there is to throw up a copy of your work as a remote for someone to pull from. My disdain for this workflow is already well-documented.

>Shocker: when I reviewed the code for both projects, I sent fixes to the one that I found to be of high quality. Why is this surprising?

Pointing it out doesn't mean it was "surprising". Just that it happened -- and as such, it could be a possible conflict of interest.

"Contributor to project X trashes competitive project Y" is a different situation than "Totally unaffiliated with X and Y person, trashes Y".

Perhaps there was bad blood between the two projects, a backstory with interacting with them, etc -- in which case it would be good to know, that's why I asked.

Now, if there were more technical arguments it wouldn't matter -- they could be evaluated regardless of who tells them --, but your comment was mostly summed to: "they are inferior quality" and "they only succeeded because they use vim's name directly", which doesn't leave much to evaluate.


The extension has improved quite a bit recently, might wanna check it out again.

Why would you use VS Code (even with vim keybindings) over vim? Is there something you can't do in vim but can in VS Code?

To be honest, to setup vim to provide the features VS Code provides out of the box takes a long time and dedication.

Can't you store your dotfiles on GitHub and just clone them whenever you need your env?

note, I don't do this - I use vanilla vsc for my text editor. I've just seen many who do.

The debugging experience is vastly superior in VS Code, not to mention the pain of setting it up in vim in the first place.

I have as yet been unable to get the code completion working. Were you able to?

If you mean IntelliSense in VS Code, I just got this figured out today! The official docs will walk you through it[1]. Be careful about reading blogs about how to do it, the process has changed from when you used to use "tsd". You need to click the little green light bulb at the bottom right of the editor to create a jsconfig.json file. Then install the typings module with: npm install -g typings

then install the language files you want. This will install node completion: typings install dt~node --global

Much easier than before!

[1] https://code.visualstudio.com/docs/runtimes/nodejs#_great-co...

No, I don't use vim or any similar arcane editor. When I hear someone is happy e.g. with vim, and then I see how they use it (e.g. you can see screencasts from Golang team on youtube) - they just use it as a vanilla plain text editor, slightly better (or worse?) than Notepad.exe. Maybe basic syntax coloring, and that's it, nothing more...

> the author of the amVim extension

i.e. you? https://gitlab.com/crussell/amVim

Just because he has a fork of the code under his username doesn't make him the author. The original repo is clearly linked on the page. And the vast majority of commits seem to be by somebody else. Does not look like the author to me.

I am worried about a lot of common functionality in VSCode/Atom, from keyboard bindings to support for more languages, being implemented by 3rd party plugins. They are updated independently, without verification, and have full code execution and network access (and things like independent telemetry).

Am I alone in this? Are there security features that I'm missing to guarantee that my code editor isn't leaking information in 20 different directions?

I noticed in the privacy instructions that MS gives a setting to disable telemetry, but only on per project. So every time you open up a new project, it will be reporting on you until you (remember to) disable it.

I love VS Code, but I'm getting a little disheartened after bringing this up almost every release. Is there a plan to improve the syntax highlighting? I know there are custom themes, etc, but they all seem to have the same elements available to them.

The JS syntax highlighting can't distinguish between properties and variables, or properties that are functions, or object literal keys. It's almost there, but it's lacking enough to actually be quite bothersome, with no progress so far that I can tell.

We packaged up Atom's JavaScript grammar into an extension which is probably just what you're looking for https://marketplace.visualstudio.com/items?itemName=ms-vscod...

That's exactly the problem. Atom, sublime, and vs code use TextMate's syntax parsing engine https://manual.macromates.com/en/language_grammars

But the implementation is different. You could just copy the .plist or the .tmLanguage file, but it's useless if it's not implemented or different on vs code.

It's open source. Make the change and use it yourself, then submit as a pull request. [edit: link removed; see Tyriar's reply for correct repo]

This is the source repo for both JS and TS grammars https://github.com/Microsoft/TypeScript-TmLanguage

Do they color changed files in the sidebar now or do I still have to switch to the version control view?

edit: serious question, I like the coloring of changed/new files in Atom.

No love so far

This package suffers from what I like to call the paper.pdf problem - very different files, rather uselessly (although not entirely illogically) given identical file names:

    ~/Downloads % md5 VSCode*
    MD5 (VSCode-darwin-stable(1).zip) = b33b479ffa87052d05ed0141e64ad8a8
    MD5 (VSCode-darwin-stable.zip) = 86f129fe0d75c195370da4b46814389c
    ~/Downloads % ls -l VSCode*.zip
    -rw-r--r--@ 1 tom  staff  49908098  8 Sep 23:04 VSCode-darwin-stable(1).zip
    -rwxrwxrwx  1 tom  staff  43345974  1 Apr 01:56 VSCode-darwin-stable.zip*

I have noticed Microsoft do that a lot.

I was downloading an update to MS Sql the other day and the file was named exactly the same as the prior version. I was quite confused and could not even check if it was a later version until I double-clicked the installer.

Not sure what is stopping them from appending a version number to their filenames.

what do you mean, can you explain? isn't that correct behavior if you rename the file?

In April I downloaded VSCode version 1.something, or whatever, and got VSCode-darwin-stable.zip. And now, today, I download VSCode version 1.5, and get... VSCode-darwin-stable.zip. Two files with the same name. Of course, Firefox renames them, so it's not like the older one got overwritten, but that extra little "(1)" isn't actually telling me much.

This made me think of all the times I've downloaded this or that paper from somebody's website, and I've ended up downloading a(nother) file called "paper.pdf"... though, just to annoy me, now that I actually try to make the point, at the moment my downloads folder has exactly 0 files called paper.pdf...

We recently improved this for Linux, the latest .rpm package for example is now named code-1.5.1-1473370243.el7.x86_64.rpm. This is a good suggestion, I created an issue :) https://github.com/Microsoft/vscode/issues/11722

Same issue with setup.exe on Windows. I wonder if I could use machine learning to organise my downloads folder...

They mean the file name is the same and you end up with several files in the download folder without knowing what's the one you need.

If only we could sort files by date or something like that.

Fine in this case; not so good for paper.pdf or setup.exe!

It's not the end of the world, just a minor annoyance, of a type I'd seen before, that (having 5 free minutes while in the middle of something) I felt moved to comment on.

Worth mentioning that in this release TextMate Python bundle was replaced with MagicPython [1] for much improved Python code tokenization. [2]

[1] https://github.com/MagicStack/MagicPython [2] https://github.com/Microsoft/vscode/commit/f4967722fa02471da...

Do I need to do anything to be upgraded to magic python? Thanks!

No, it's on by default in v1.5.

Superbly fast. And the extensions make it even more lovable. Very happy to have moved to VSCode from Sublime.

"Update All Extensions" Nice! It was a huge PITA before to close and reopen the editor once for every extension that had to be updated. One of my last big gripes about VSC, gone.

There's also an `extensions.autoUpdate` which lets you not worry about it again.

awesome, thanks for the tip

I love how VS Code has no problem working with large and even minified files (unlike some other “modern” editors). Every update is just icing on the cake.

Keep up the good work!

I had to tweak a minified CSS file for a client project the other day, and granted, VS Code opened the file faster and auto wrapped the output (Atom took a while and showed the file as one long 70000 character single line).

However, I noted that VS Code lost all syntax highlighting and displayed everything as a uniform grey text, making it harder to find what I was looking for. Atom retained the CSS syntax highlighting.

I also have a plugin for Atom to 'prettify' the CSS and basically un-minify it. Anyone recommend a similar plugin for VS Code that can do the same?

What was the language mode set to? Look at the bottom right, or use ctrl + k, m to open the dialog.

> minified files

Did not know this. Are you telling me it un-minifies it to make it a bit more readable?

No, but it doesn't choke like other editors do.

I too switched to VSC from Atom recently, mostly due to the TypeScript-support being vastly superior in terms of both stability and speed.

Really, really wish they would focus on providing a proper crashlog. Right now I'm getting intermittent crashes with no way of reproducing it, nor a good way of providing feedback to the team.

I've been using VS Code for a couple months now to do django development. This is a welcome update as the file explorer being hard to read was my only real complaint.

Opening a newly cloned Chromium repository in ~3s is very impressive to be honest.

I was about to try one of these fancy new browser based editors again, but now I'm confused. Shouldn't opening a directory be O(1)? I just opened the chromium trunk in sublime and it took 0.2 seconds, regardless of whether it was currently running or not.

Why would one ever use a text editor that has perceptible latency when doing everyday tasks?

3 seconds isn't even latency, it's a freeze tbh.

I feel we are comparing apple to oranges here: sublime (a text editor) will simply list files & directories in the top level folder when you add a folder to the projects while an IDE (thinking mostly of Eclipse here, but I assume other IDEs aren't that different) will parse every single file to build ASTs, symbol lookup tables and all these things that you either love or cannot stand.

With ST3 we scan and index symbols in each file contained in folders that have been opened. This powers our project-wide Goto Symbol functionality and the Symbol Definition popup.

VS Code (a "smart" text editor not to be confused with Visual Studio an IDE) doesn't parse C++ code (which is what Chromium consists off) in the default configuration. And even if you have the C++ extension enabled it doesn't parse any code until later.

I don't think being "browser based" as the reason that opening a directory is slow. A lot of traditional IDEs (cough Visual Studio cough) also have similar problems. I think they're doing a bunch of work (e.g. caching all subdirectories and files) but aren't doing it concurrently with the UI.

Still not impressed. I just tried it with Chrome and it's way slower than Sublime Text to be useful for me even when excluding large parts of the checkout. Also enabling the C++ extension made my computer hang, I couldn't spawn new shells or even login in a tty.

I really want to be able to use it for my work but I can't unless it's about as fast as Sublime Text.

Anybody know how well VS Code works for C++?

I really don't like how limited Sublime's linting/static analysis options are.

I tried to get C++ working in vscode but ran into trouble getting it to debug with gdb. I was looking for a smooth "hit f5 to compile and run (with breakpoints)" experience like I am used to with VS, but unfortunately there are no tutorials I could find on making that happen. The C++ extension is available, but I can't figure out what exactly it does or how to use it. It suffers from that common problem where they give you a config file, but don't tell you the possible options. There is an opportunity for a good blog post here if someone out there knows how to do this!

This may be due to a bug I've filed a few days ago: https://github.com/Microsoft/vscode-cpptools/issues/191#issu... Unfortunately, it seems that the fix hasn't been landed on this release yet.

100% agree, similar experience

I've used it a lot for C with great success, although that's not C++.

Give it a shot with the cpptools (I think that's what it's called), as well as the clang extension (which improved the experience by an order of magnitude).

Are they mutually exclusive? Or can I use both? You recommend clang instead?

Anyone use VS Code for Ruby/Rails? Equal or better than Atom/Sublime? I switched from sublime to atom recently but atom is slow (I know I know) and VS Code seems well regarded so willing to give it a try.

The ruby extension is good enough. Debugger works, syntax highlight works, many linter works. There's an extension for erb highlighting. A couple weeks ago Matz himself added rcodetools for autocompletion. I contribute a couple of lines and 2 extensions for haml and rspec snippets. There's still more things to do and bugs in the extensions, but it's kinda ok.

no autocomplete. c#, javascript, even python autocomplete is really amazing

Do you know if there are extensions that could bring autocomplete for ruby?

For some reason I can't reply to the child comment...

I tried using rubymine for a bit as well, but I could never get it to not be slow as hell (I'm on a 2015 mbp with 16gb of ram). Tried tuning the settings a bit, turned on the fast typing config thing, still really laggy.

The one thing I was thinking was that I was also developing in a docker setup, so maybe file access was interfering or something? I haven't run a test outside of docker, so can't really verify and have moved past rubymine for now.

try both of them. beside some coloring, rest are bad. So I just return to rubymine :)

I do also some python and js, is quite amazing :)

Atom/Sublime? Those aren't even in the same category.

do you mean that in a good way or a bad way?

Love vs code for Go. I dropped sublime immediately.

For some reason, for me, I have to save to get syntax highlighting and errors. Then, I have to save again to clear them. Is this just me?

I have to save to get go fmt to run, but I get colors and many most errors as I type. How odd. You could reach out to the extension's team, I hear they are responsive.

That didn't come out quite right; I meant syntax errors. I will check with the extension team.

any particular extensions you recommend for working with Go?


I believe you just search extensions for Go, and you're solid.

I love the updates the VSC team has been putting out, and I know this is related to Electron issues, but I really wish they would add High DPI support.

Without it, this weird situation exists where Microsoft's Visual Studio Code looks really blurry on Microsoft's Surface Pro, because Microsoft Software isn't using Microsoft's API.

Ive always wondered why they don't break the text editor from Visual Studio out into a native lightweight editor. If they did that I would switch from Notepad++ for my text file editing on Windows.

However, even if there was a native VSCode for Linux it wouldn't tear me away from Emacs.

Try start it with `--disable-gpu`, works for me on 4k screen / 1080p screens both

I just want to say big thank you to the authors! This editor is my favorite.

Grrr... seeing some issues since 1.5 wrt corporate proxy and ssl signing.

Same; can't load any extensions. Issue has been posted: https://github.com/Microsoft/vscode/issues/11702

Interesting, just received a 1.5.1 update. I wonder what happened to result in such a quick release. (Nothing in the release notes.)

Looks like it's mentioned in the article now:

"To fix an issue when the editor.fontSize is set to 0, we're releasing a 1.5.1 recovery build."

Anti-dupe rules are too tight - redirected me to 1.4 discussion (opened a while ago) due to non-unique url

This looks like a reasonable and unique URL for this story - https://code.visualstudio.com/updates/v1_5

@dang (or mods) - Could the URL for the story be updated to this one?

Thanks! Hard to find :(

Can you bypass them by adding query parameters to the url ?

Can we get out of the box spell checking? The spell check plugins I've tried are all hella buggy...

I still confused in how bad is the F# support. I try several times http://ionide.io/ but all deman a NON-EXPLAINED setup that also is complicated. I wish it work asap just installing the extension.

Oh, I really like the Seti File icon themes. Sure, it's a small thing but I think it will really help with quickly recognizing file types, which can help indicate things like which folder you are in (is it full of C# files?).

I find it interesting that this software isn't designed with Xamarin for all platforms, but instead uses Electron. I mean I get it, the cross platform libraries are better in Electron, but it side steps their current cross platform initiative.

Xamarin doesn't support the platform the editor was originally written for: the web.

Not super relevant to the topic, but what's with Xamarin not supporting what is arguably the most important platform? This seems like a huge weakness, especially when you can now build a React app that renders natively on web and mobile thanks to React Native.

My impression is that Xamarin is designed to suck dollars out of corporate enterprise users who need to do something with mobile devices and can pay big bucks for Xamarin because it allows their C# devs to make a mobile app in short order. It saves them in the long run.

Isn't Xamarin free now?

They have a community edition but sell a corporate version with Xamarin Studio & SDK (not in community edition) for an unspecified price. It used to be $1,000 per developer.


Sorry, how does Xamarin not support this?

VS Code Initial release: April 29, 2015 Xamarin Acquisition Announcement Feb 24, 2016

It predates MS buying Xamarin, I think.

That's unrelated to why they chose TypeScript. They chose TypeScript because the editor was built for Visual Studio Online.

Good point. Forgot about Monaco for a moment here.

Congratulations on the release. I used VSC for a Typescript class.

While VSC, JetBrains IDEs, etc. are very nice, I have been going back to my late 1970s roots and been enjoying Emacs. Great language support for Haskell, lisps, etc. And very responsive.

Coming from Atom, and its indentation problems, it is pure pleasure to use VSC.

Have they added the ability for projects to have more than one root folder yet?

In fact Netbeans is very good at JavaScript and web page edit, it has the most intelligent autocomplete and refactoring I ever seen, it is also free and open source.

This is great. And crazy fast. Great work VS Code team!

I wish visual studio code can bring in typings automatically based on different filetypes, or at least get those popular ones ready-to-go.

? You mean like detect .py files as Python? It does that already.

yes for syntax highlight it detects correctly, but for intellisense you have to install those dt~ files manually which is what I meant.

Anyone use VS code for Unreal Engine 4 development? Long shot but figured I'd ask.

It's great for Unity. Not sure about Unreal 4

I'm still holding out for Visual Studio for Mac.APP, not crummy Xamarin or a glorified text editor.

What would full Visual Studio get you that VSC does not? IMO, the main awesomesauce of VS, and its advantages over other IDEs and editors, are

1. The first-in-class debugger

2. Intellisense

3. Really good support for Windows-specific technologies like Win32 and COM

VSC has 1 and 2 either now, or on its roadmap. As for 3, why do you want to develop for Windows on a Mac? I guess I don't understand what you need that VSC isn't already giving you, or planning to.

Visual GUI editor (though that was a bigger deal in the past)

First-in-class C# support


Object browser

Hit "F1" to get help on that function

Search everywhere

Templates / Code library

MSDN is very thorough (if wordy), lots of examples and documentation

* * *

I use VSCode at work a bit; it's faster than Atom but not as fast as sublime. It's a decent code editor, I guess if I was full-on JS I'd love it but it's still kinda eh

Lots of good progress though; I definitely have my eye on this one

Refactoring. Does that come with Intellisense? I've found that even 'rename this symbol' is extremely hard to find support for even in static languages.

It does, but it requires support from language services so it's language dependent (just because a language has syntax highlighting, it may not necessarily have 'rename symbol' support)

VS Code does good renames (across project) in TypeScript, at least.

VS still has a ton more features though.

I don't appear to be able to put the debugger windows wherever I want in VSCode, let alone create additional ones... so I'd say that VSCode isn't really a substitute :(

Not guzzling battery life at idle would be a good start.

I'm working with C# on Mac with this and it works perfectly fine. Debugger and intellisense is good enough to work with.

It will never be as advanced as VS but then again, VS will (probably) never come to Mac.

Can you share your instructions for setting it up please?

I found it very unconvincing last time I tried - I had weird errors installing .net Core, weird errors setting up tools in VS code and found no definitive instructions. I expected it to work pretty much out of the box... but no.

I installed .Net Core on a brand new Mac following the (seemingly very simple) instructions on Microsoft's web site and had errors too. Not impressed with that aspect at all.

Not sure if my fixes were correct or if everything was working correctly so I just abandoned .Net Core on the Mac.

Okey guys there has been some additions in what you need to do nowadays because of some problem regarding encryption libraries.

What you do on mac is:

    brew update
    brew install openssl
    ln -s /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib /usr/local/lib/
    ln -s /usr/local/opt/openssl/lib/libssl.1.0.0.dylib /usr/local/lib/
Then download the .net core installer for mac and it will work. Also make sure you download the C# extension in VS Code.

You'll be holding out for a long time, then.

Huh, are you thinking of developing Win32 API apps on OSX?

MVC websites, which you can do with Xamarin as well?

You can find it under name IntelliJ IDEA.app ;)

Was working with Angular 2 code today. WebStorm: 1.2gb memory used. VS Code: 45mb. WS gives me a few bells and whistles, but I prefer Code's lightness, and that it doesn't have a "screw you I'm indexing again" mode.

I like vscode too, but that does not mean, that they are in the same weight category. Vscode is "just" an editor, while IDEA is a full-blown IDE. The original poster wanted the full Visual Studio, not vscode.

(However, for some reason, I like the code completion in python mode in IDEA more than in vscode. It doesn't feel right, like the IDEA one does.)

In terms of WebStorm, dont forget to exclude tmp folders and other generated, transpiled content folder to exclude from indexing, otherweise it will be always busy. :)

Which by the way is the very first thing that I found as recommendation for how to configure projects for VSCode when I tried it today, and very explicitly:

See 'Using the "exclude" property' on https://code.visualstudio.com/docs/languages/jsconfig

    > The exclude attribute tells the language service what files are and are not part of your
    > source code. This keeps performance at a high level. If IntelliSense is slow, add folders
    > to your exclude list (VS Code will prompt you to do this if it detects the slow down).
I went back to WebStorm though after checking VSCode out. I'm using "static type checking through IDE an JSDoc" instead of TypeScript or Flow, although I'm always evaluating both. This far I keep watching them, WebStorm alerts me to type mismatches based on all the JSDoc and Google Closure compiler type annotations I have for each and every variable, function and parameter. VSCode supports it a lot less well than WebStorm, which if you use TypeScript won't matter that much to you. I'll probably go with Flow at some point, WebStorm is getting support for it right now, it's in the current EAP (early access program). I think those who use TypeScript may probably be the closest to getting what I would get from WebStorm, although the latter also has very good TypeScript support. What I like about WebStorm is that they react pretty quickly to (good) bug reports, I filed about a hundred and 2/3rd of them have been solved quickly, of the remaining various type inference issues for example for destructured variables or parameters still need fixing, but that's because of my JSDoc reliance which I'm not sure many other people use.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact