Open lmk123 opened 7 years ago
感谢分享\~速度体验和核心理念特别好。我一直在用 WebStorm,上次在 chat 群里面讨论到 IDE 的事情,因为换 IDE 还是一个成本比较高的事情,想试试 VSCode 但我一直没有做。不过倒是产出了一个 checklist,可供换 IDE 的时候参考,里面有几个点,不知道楼主可否分享下这些方面试用 VSCode 的心得\~
上面是我的界面,简明的界面可以避免分散注意力在多余的元素上,没有 toolbar / status bar / navigation bar / tool buttons,只有行号和代码。同时,没了 GUI,快捷键系统就必须跟上。所以比较感兴趣全键盘、快捷键支持、插件系统这一块,以及 VSCode 有哪些特色的功能和体验,楼主可否分享下使用体验。谢谢啦。
楼下补充得真详细。产品定位、LSP API 很有启发。感谢分享,没有其他独立问题就不再单独回复了。
我来补充一点, VS Code 的定位其实是 code editor,并不是 IDE,更准确的说,可能是介于 code editor 和 IDE 之间的一种产品形态。VS Code 本身的设计可能更趋于 code editor 一些,但会提供很多基于 Language Server Protocol (LSP) 的 API,使其能够很方便的扩展到 IDE 级别的功能。VS Code 本身内置了 JS/TS 的 LSP,而其他语言的 LSP,就需要用户自己安装插件来获取了。像 Vetur 这个插件,其实也就是个 LSP,会将 vue 文件里面的 html/css/js 分别交由各自语言的 LSP 处理,这一点在 Vetur 的项目主页也是有说明的。 另外 VS Code 对 JS/TS 的智能提示,并不需要通过索引代码来完成,而是通过 TypeScript 的类型系统来完成的。这个东西快是快,但也有一些缺点,比如你用了某个很小众的库,而这个库并没有 TypeScript 的类的申明文件,那就没有办法对这个库做智能提示了。同理,如果在你自己写的 JS 代码中,如果某些变量不能被 TypeScript 的类型推导系统推导出类型的话,智能提示也会失效。而 WebStorm 里面的情况就要好很多。
@linesh-simplicity
Git Lens
应该功能相当全了。然后我觉得过一段时间你就会换回webstorm的,因为ws的智能提示完爆任何编辑器
vscode 比 webstorm 还有抢很多的是 调试。。。尤其是 node
调试功能也基本不会用到😂 都通过其他的方式消化了,基本只有调调生命周期方法的时候会打个 log:
@agileago 没错,VS Code 的智能提示体验太差了,这点我忘了在文章里提到了,但是,WebStorm 的智能提示也没有好太多,如果没有用 TypeScript,它会索引所有代码,收集项目里所有的变量名,然后在你输入匹配的字符时将所有匹配项全显示出来。
@git-issue 正好相反,我觉得 WebStorm 里的调试功能比 VS Code 要好用一些 😂
@izee WebStorm 已经内置了这个插件了,但是这个插件没法支持 TypeScript,也没法正确提示 this
的属性与方法,就像我在文中说过的那样。
vs的提示包含太多内容了,有点不够好用,而且你没办法关闭那些无用的提示,无从下手。
@yyman001 赞同。但是在 WebStorm 中,即使开启了「强类型检测」,也还是有很多无用的提示。
博主让我又增长了见识,原来还能用issue来做博客。
最近也在用VSCode写vue,那么问来了,点一个class的字符串,不会跳转到对应 的style里,点一个方法 不会跳转到方法实现那里去,求帮助
@songxing10000 没准博主已经从vscode转到webstorm了,期待下一篇我为什么从vscode转到webstorm
@agileago 本来想自己写个VSCode
插件跳转的,结果折腾了一晚上,太麻烦了,还是期待有对应的插件吧,不然回归Webstorm
是必然啊
@songxing10000 平常没有用到过这个功能,这个功能对我来说无关紧要所以没觉得有啥不妥 😂
@agileago 我仍然在用 VS Code
@lmk123 你看到一个方法,想看下怎么实现的或者想修改这个方法,在webstorm里点击一下这个方法的字符串就能跳转到方法实现那里去,VSCode目前,只能自己复制一个这个方法名,搜索,command g跳转到下一个字符串,才能定位到这个方法实现
@songxing10000 VS Code 确实不支持 JavaScript 的方法跳转,但是它支持 TypeScript 的,而我一直都写 TypeScript 所以没太大问题。
WebStorm 的做法其实跟全局搜索差不多,如果有多个同名的方法,你点击方法名之后会展示一个列表给你选择要跳到哪个方法去,并不能精准定位到你点击的这个方法的实现位置。
@songxing10000 @lmk123 vs code 可以实现 js 的方法跳转啊,而且是精准定位,不是全局搜索
说 vscode 不能实现 js 方法跳转,我不服
@liuliangsir 一开始就说的vue,没有说过JS
哈哈,关于编辑器的撕逼就多了,vs code 大法好!
我还是换回webstorm吧,vue文件里的js方法不能跳转就算了,现在连 template 也不能正常识别了。。
弱智的一笔,改成 >
或者 <=
就没问题
蛤,启动速度和内存到你这里居然变成了优势。 每个人对同一个事物的体会果然会因为自己的经历不同啊
说到这个,我个人有个理念是这样。性能这个事情,可以用钱解决的问题就用钱解决就好了。比如现在对我来说,我觉得追求效率的一个开发配置应该是这样:
还要省钱买垃圾桶…
@linesh-simplicity 同意,注意效率的人才是真正热爱程序的人
Atom 怎么样?有没有大佬指点一下。
node_modules
文件夹会突然索引卡死java
开发的ide
貌似都这样)vcs
功能,无论是git
还是svn
都用的非常舒心(vscode
自带的感觉比不上)terminal
功能无论是windows还是mac都很好用(vscode
不支持tab
模式,文件夹拖进去不能进入)deployment
功能非常逆天,无论terminal
,ftp
,sftp
,部署,运维,文件同步很方便了(vscode要找插件,而且找了遍,没发现这些功能都有的)symbol
(方法,变量)神操作(vscode
检索比较慢,暂时没发现定位symbol
的方式)vue
,angular
,react
,nodejs
有很好支持强烈推荐 WebStorm 如果你像我一样 。 。 。 。 电脑是32g内存的话。。。 (我是黑苹果 i5-8500 + 16g * 2 芝奇 3200)
vscode 的vue中方法如何跳转?
我点击this.getData的时候,无法跳转到对应的方法、
说 vscode 不能实现 js 方法跳转,我不服
vscode跳转定义,会索引搜索,要耗时的,而且js代码跳转的位置并不准确。
说 vscode 不能实现 js 方法跳转,我不服 vscode跳转定义,会索引搜索,要耗时的,而且js代码跳转的位置并不准确。
你现在用的什么编辑器,我是超喜欢vscode, 可是现在就一个很常用的功能不能用, vue中 变量以及方法无法跳转~~ 超级蛋疼,其他都调好了
@heiliuer 你现在用的什么编辑器,我是超喜欢vscode, 可是现在就一个很常用的功能不能用, vue中 变量以及方法无法跳转~~ 超级蛋疼,其他都调好了
关于WebStorm 占内存的问题,也是有解决方案的。在不需要索引的文件夹上,右键 Mark directory as 选择Exclude,就不会对该文件夹进行索引。 自己测试,只要取消不必要的文件夹索引,比如node_modules,bower_components 这些,真的可以减少很多内存的占用,我使用的情况基本都是2g左右内存的占用(虽然不能和vscode比)。 VSCode 轻量级确实让人垂涎,但是js没有跳转,还怎么用。
然后我觉得过一段时间你就会换回webstorm的,因为ws的智能提示完爆任何编辑器
并不这么认为
Issues 当博客233333
由于没有跳转,于是我从 VS Code 转向了 WebStorm
算了,还是抱紧webStorm 吧,老了折腾不动了
由于写Weex
没有跳转,于是我再次从 VS Code
转向了 WebStorm
@songxing10000 Weex
还活着呢?现在不都是flutter
了
@agileago 我们都用Weex近两年了,挺好的,Flutter很多东西还不成熟,上次运行了其demo感觉流畅度还不如Weex呢,不过我看好Flutter
各位,我又回归 WebStorm 了 😂
顺便分享一波我的 WebStorm 设置:https://github.com/lmk123/WebStorm-Settings
我用的 webstorm v2017 版 对冲突文件处理不太友好,有没啥别的插件支持
各位用webstorm的大佬们,借楼请问有没有用Emacs/Mac OSX keymap的?最近试了一下好像jetbrain全家桶在我win10/ubuntu上,每当按ctrl-n的时候都会卡住报错搞得想放弃了.....去google了半天也没看出个所以来......不知道大家有没有遇到的,这种属于得等他们修复的bug么?
我用的 webstorm v2017 版 对冲突文件处理不太友好,有没啥别的插件支持
这个的话,我一直直接在文本上解决冲突。这种冲突一般不是很复杂,用图形化界面还要点几下,不必要。如果冲突一般很多很复杂,说明开发流程应该改善,要经常更新主分支的代码、经常把代码合并回主分支。
各位用webstorm的大佬们,借楼请问有没有用Emacs/Mac OSX keymap的?最近试了一下好像jetbrain全家桶在我win10/ubuntu上,每当按ctrl-n的时候都会卡住报错搞得想放弃了.....去google了半天也没看出个所以来......不知道大家有没有遇到的,这种属于得等他们修复的bug么?
不知道设置里面的“Invalid and Restart”有用没?
不知道设置里面的“Invalid and Restart”有用没?
我还没试这个,然后也不知道为啥自己就好了,很神奇......谢谢回复哈。
说 vscode 不能实现 js 方法跳转,我不服 vscode跳转定义,会索引搜索,要耗时的,而且js代码跳转的位置并不准确。
你现在用的什么编辑器,我是超喜欢vscode, 可是现在就一个很常用的功能不能用, vue中 变量以及方法无法跳转~~ 超级蛋疼,其他都调好了
有段时间也是被不能跳转折磨的不行,后来偶尔返现option(alt)+左键可以
各位,我又回归 WebStorm 了 😂
顺便分享一波我的 WebStorm 设置:https://github.com/lmk123/WebStorm-Settings
我就知道 你会用回ws的,
年轻人玩得真花
用WebStorm TDD FizzBuzz 两部分需求,只需要92秒,VSCode党也整一个分享分享呗?友好交流一下。
只有4G内存的我,转向了VSCODE.不过我还是觉得Webstorm好用,吃内存不是白吃的
自大学以来,我换了不少编辑器。一开始学习 C# 的时候,用的是 Visual Studio,这款编辑器确实非常好用,即使是用来写 JavaScript 也有很全的代码提示。
后来我决定专攻前端开发,这时候 Visual Studio 就显得太过于笨重了。在学校老师的建议下,我开始用 Dreamweaver,老师极力推荐它的原因是它的「所见即所得」特性——不需要自己写代码,只需要拖一些控件进去,它就会自动帮你生成页面……可是它生成的代码太差劲了,我从来没拖过控件,它的代码提示也不如 Visual Studio 全面,时不时的还会卡顿。
再后来,我在网友的推荐下开始用 WebStorm,简直爱不释手,从此再也没有换过编辑器——
直到半个月前,我试了一下 VS Code。
让我决定去尝试一下 VS Code 原因倒不是因为这个编辑器本身,而是因为它的一个插件——Vetur,由 Vue.js 团队开发,用来给
*.vue
文件提供代码提示与 TypeScript 支持。用过 Vue.js 的同学都知道,Vue.js 配置项里面的方法的this
其实指向这个 Vue 实例本身,但是 WebStorm(我想其他编辑器也一样)只会把方法里的this
识别成这个方法所在的对象,所以编辑器不能正确的提供this
的代码提示。在尝试了 VS Code 之后,我再一次体会到了当时发现 WebStorm 的时候的心情——爱不释手、给它折腾了一堆插件、想立刻写一些代码来体验一下这个编辑器,最后,我就停不下来了 😂
我想从我的使用角度解释一下为什么我最终从 WebStorm 转向了 VS Code,也许能给看到这篇文章的朋友们一点参考。
VS Code 最让我看中的特点就是轻量——它的轻量体现在它的启动速度、内存占用和功能。
注意:我是在 2015 年款 MacBook Pro (8GB 内存)上对这两款编辑器进行比较的,可能与你的感受不太一样。
启动速度
VS Code 启动的时候非常快——这里的非常快是相对于 WebStorm 而言的。我使用了同一个中等大小的项目(下文统一称之为测试项目)做测试,这个项目使用了 TypeScript 和 Vue.js,大概有 30 个文件。
在使用 WebStorm 的时候,一般要经过下面这些步骤:
node_modules
文件夹 Mark Directory as Excluded,那么需要的时间会更长。所以从我打开 WebStorm 到它真的可以用的这段时间,已经快有半分钟了!在使用 VS Code 之前,我从来没觉得这段时间很长。
那么同样的项目,VS Code 打开需要多长时间?答案是 4 秒。这是在我安装了 19 个扩展的情况下得出的结论,而这 19 个扩展基本涵盖了 WebStorm 中我用得到的功能。
我仔细观察了一下为什么 VS Code 相对于 WebStorm 会快很多:
内存占用
我经常会需要同时开启两三个项目,然后再开一些其他软件(听歌的、微信、Chrome 之类的)。如果我使用 WebStorm,时间一长,8GB 内存就会被用的只剩两三百兆,我不得不用 CleanMyMac 清理我的内存,不然电脑会变得反应迟钝。
同样的情况换成是 VS Code 就没有这个问题。我知道这一感受非常主观,所以在我写这片文章的时候,我尝试分别用这两个编辑器同时打开三个相同的项目,但它们的内存占用从数字上看是差不多的——都是 1.6GB 左右。有一点不同的是,VS Code 的进程本身占用内存很少,但它有很多个 Code Helper 进程,我每关掉一个项目,Code Helper 的数量和它们占用的内存都会相应减少。
上面的数据仅仅只是打开了三个项目的情况,如果后面多使用一段时间,WebStrom 的内存占用会越来越多——这也跟你使用了 WebStorm 中的多少功能相关。按照我这半个月来的使用体验,WebStorm 会让我觉得内存不够用,而 VS Code 就没有。
当然,这些都只是我的主观感受,由于没有足够的数据支持,你可以认为它们在内存占用方面打了个平手。
功能
一个编辑器的功能是越多越好还是越少越好?功能多当然很不错,但并不是所有人都需要一些功能,而且多余的功能会导致编辑器更加笨重。
WebStorm 和 VS Code 都提供了插件系统,但仅从核心大小来看的话,VS Code 无疑要比 WebStorm 轻量许多——这一点你从它们的设置里就可以看出来了。
WebStorm 的插件系统更像是锦上添花,因为它已经内置了很多很有用并且也很好用的功能了。WebStorm 还内置了很多官方维护的插件,但大部分我都不需要,我还得自己去关闭一些。所以,第三方插件我一个也没装过。
反观 VS Code,我觉得它的插件系统才是它的核心功能——VS Code 本身缺少很多功能,如果你不安装一些插件,基本上很难愉快的写代码。
从个人的角度来看,我非常喜欢 VS Code 的做法——我在写一些 JavaScript 项目的时候也是这么想的——核心应该尽可能的小,然后通过插件的方式来补充功能以适应不同的使用场景。Koa 和 Chrome 浏览器就是使用插件扩充功能的例子。
但是,依赖于社区开发的插件就会出现一个问题——插件的质量总是参差不齐的,插件的维护者也不一定会长时间维护下去,所以在给 VS Code 安装插件的时候我花了很长时间尝试了很多个同样功能的不同插件,不过这个痛苦的过程也只是一次性的。
对于未来,我希望 VS Code 团队能像 WebStorm 那样有一些官方维护的高质量插件,避免用户在选择插件的时候眼花缭乱。不过,目前 VS Code 肯定是没有多余的精力做这些的,所以作为用户的我们也只能自己不断的尝试了。
总结
本文从三个方面阐述了我个人认为 VS Code 对比 WebStorm 的优势,但实际上 WebStorm 也并不是没有比 VS Code 好的方面:
我的建议是,如果你不喜欢折腾、更喜欢使用纯 GUI 方式写代码,WebStorm 无疑更适合你,使用 VS Code 的时候,你可能得学一些 Git 命令来弥补 VS Code 在 Git 集成功能方面的不足;如果你更看中 VS Code 的轻量,并且也愿意付出时间去适应、安装插件,那 VS Code 会比较合你的胃口。
最后,欢迎你留下自己的看法 ;)