vscode代码运行时间工具_代码编辑器横评:为什么 VS Code 能拔得头筹

0820e3c011e14439c7a91d45e41a024e.png

2015 年 4 月 29 日的 Build 大会上,微软发布了 Visual Studio Code 第一个预览版本。短短四年时间里,VS Code 高速成长。

根据 2019 年 2 月的 PYPL Top IDE index 的排名,VS Code 的涨势迅猛,在所有编辑器与 IDE 中排名第六,领先于其他主流的代码编辑器:Sublime、Atom 和 Vim。可以说是已经在代码编辑器中拔得头筹。

f36679a7c401977718d8b3fca26e1ad5.png

在 Stack Overflow 的 2018 年开发者调查中,VS Code 成为了最受欢迎的开发工具。

cd4e3e31ce2afedf75e8586bb33c6f9c.png

那么,VS Code 为什么能这么成功?有哪些地方是开发者所喜爱的呢?让我们从各个方面与 Sublime、Atom 和 Vim 比较下,逐一分析。

学习曲线

对于任何人来说,特别是新手,一个工具的学习曲线也会影响到它的受欢迎程度。还记得 Stack Overflow 上著名的问题之一:"How to exit the Vim editor?" 吗?它已经有接近两百万的访问量。 VS Code、Sublime 和 Atom 在学习曲线上,一定是遥遥领先于 Vim。同时,VS Code 的使用文档相比于其他编辑器也是做的最好的,无论是“快速入门”还是每一个功能的使用,在官网上都写的一清二楚有条有理。官网还提供了 PDF 版的键盘快捷键参考表,让开发者轻松上手。此外,考虑到一些开发者是从 Vim、Sublime、IntelliJ 或是其他开发工具转来的,依旧习惯于原来开发工具的键盘快捷键。VS Code 也提供了各种键盘映射的插件,让你可以在 VS Code 中继续使用不同开发工具的快捷键,而不用重新学习 VS Code 的快捷键。

e09188029b15018b1bfbe0f6e3a134de.png

用户体验

VS Code 提供了许多良好的开箱即用的用户体验。与 Vim、Sublime 和 Atom 一样,VS Code 都提供了代码编辑的体验。此外,VS Code 在保持其轻量级代码编辑器的前提下,还内置了一些 IDE 中会有的重要功能:

  • Terminal:内置的 Terminal 使得开发者可以直接在 VS Code 中快速地运行脚本,而不需要在 VS Code 和系统的 Terminal 之间来回切换。
  • 调试器:直接在 VS Code 中调试代码,断点、call stacks、交互式的 debug console,使得调试变得异常轻松。
  • 版本控制:开箱即用的 Git 支持,让你方便地进行文件更改比较,管理你的源代码。

特别是对于前端开发者来说,VS Code 有着非常好的支持。除了对 JavaScript 的智能提示、重构、调试等功能的支持,像 HTML, CSS, SCSS, Less 和 JSON 这些前端技术栈,都有着很棒的支持。

曾经在一些用户体验上,VS Code 的用户体验也有不足之处。比如,曾经 VS Code 的设置页面的体验就没有 Atom 好,Atom 有着图形化的配置界面,而 VS Code 是基于 JSON 文件的。VS Code 对此也是听取用户的反馈,增加了图形化的配置界面,也保留了基于 JSON 文件的配置方式,满足了不同人群的使用习惯。

开源

开源对于一个产品的长期发展极为重要。在四款编辑器中,Sublime 是闭源的,VS Code、Vim 和 Atom 都是开源的,而 VS Code 可以说是开源做的最好的。

VS Code 不仅仅是把代码开源出来。而是把整个产品的开发过程建立于开源之上,与整个社区深入合作,倾听用户在 GitHub 上的反馈,使 VS Code 越做越好:

  • 每一年,VS Code 团队都会在 GitHub Wiki 发布 Roadmap ,列出一整年的规划图。
  • 每个月初,在产品设计阶段,VS Code 团队会在 GitHub Issue 上会发布 Iteration Plan ,列出这个月会做的每一个功能,每一个功能基本会对应一个 GitHub Issue,你可以看到详细的设计以及 mockup,并且可以提出你自己的见解。
  • 每个月末,临近产品发布,你可以在 GitHub 看到 Endgame 了解到 VS Code 是如何进行产品测试与发布的。

不仅代码开源,VS Code 整个产品的计划,设计以及发布管理都是“开源”的:每一个阶段对每一个用户是公开透明的,你不仅可以开 Issue,发PR,你甚至也可以参与到每个功能的设计与讨论中去!

性能

天下武功唯快不破。相信从 IDE 转投 VS Code 的童鞋,一定是对 VS Code 的性能非常满意。同为基于 Electron 开发的产品,VS Code 在性能的优化上要比 Atom 领先许多。当然,我们必须承认的是,在速度上 VS Code 与 Vim 和 Sublime 相比,还是有略微的差距。但是,我们依旧能看到 VS Code 不断的在性能上的优化。从插件进程与主进程的隔离、插件的延迟加载,再到 Text Buffer 的优化,提升大文件的加载与编辑速度,减少内存使用率。我们看到了 VS Code 的不断进步。

插件

VS Code 有着丰富且快速增长的插件生态,如今,已经有超过一万个插件。不仅有中心化的插件市场,而且在 VS Code 编辑器里也可以轻松搜索插件,直接进行安装与管理。相比之下,Sublime 只有 5000 不到的插件,而且在编辑器里不能很方便地搜索管理插件;Vim 插件虽多,但因为没有一个中心化的插件市场,查找插件很麻烦;Atom 有 8000 多的插件,比 VS Code 少一些,虽然在编辑器内也是可以查找插件,但 VS Code 的搜索和浏览功能做的要比 Atom 要好。

此外,VS Code 还推出了 Extension Packs,方便开发者一键安装多个插件。比较出色的 Extension Pack 有 Java Extension Pack、PHP Extension Pack、Vue.js Extension Pack 等,使得 VS Code 秒变 IDE。

生态

VS Code 不仅仅是一个代码编辑器,它有着强大的生态。VS Code 把它的许多重要组件抽离出来,成为大家都可以复用的开源产品,与社区合作,把产品越做越好:

  • Language Server Protocol :它是 Editor/IDE 与语言服务器之间的一种协议,可以让不同的 Editor/IDE 方便嵌入各种程序语言,允许开发人员在最喜爱的工具中使用各种语言来撰写程序。Eclipse, Atom, Sublime Text, Emacs 等主流 Editor/IDE 都已经支持了 LSP。
  • Debug Adapter Protocol : DAP 与 LSP 的目的类似,DAP 把 Editor/IDE 与 不同语言的 debugger 解耦,极大地方便了 Editor/IDE 与其他 Debugger 的集成。Eclipse, Emacs, Vim等已经支持了 DAP 。
  • Monaco Editor :作为 VS Code 的核心组件,Monaco Editor 在 GitHub 已经拥有了超过一万三千个 star 。国内比较有名的比如 Cloud Studio 和 Gitee Web IDE 都使用了 Monaco Editor。

VS Code 作为 Visual Studio Family 的重要产品,与 Visual Studio IDE 一样,也有两大重要的功能:

  • Visual Studio Live Share:极大地方便了协作编程:实时共享代码编辑、跟随光标、团队调试、分享本地服务器、共享终端等等。
  • Visual Studio IntelliCode:通过 AI 赋能,根据上下文给出编程建议和智能提示,提高开发者的效率。

未来

VS Code 快四岁了,他还是个很年轻的编辑器。未来的路很长,相信他会越来越好,成为更多开发者所喜爱的开发工具。

最后

首本 VS Code 中文书《Visual Studio Code 权威指南》来啦!希望通过这本书,能带你深入浅出 Visual Studio Code。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/551735.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql表还原初始状态_workbench 怎么恢复初始设置

答:同学你好,在ANSYS workbench的材料建模当中如果不小心把原来的布局给弄乱了,可以通过设置view菜单里面的reset window layout来恢复,具体的操作如图所示(另外在workbench的模型前处理中如果弄乱了也可以通过这个方法来实现)&am…

ie浏览器网页版进入_Win10系统中IE和edge浏览器无法打开网页如何解决

Win10系统中IE和edge浏览器无法打开网页如何解决最近有Win10系统用户们反馈最新Win10系统中的IE和edge浏览器都无法上网,打不开网页,而第三方浏览器却可以,遇到这样的情况该如何解决呢?引起IE和edge浏览器无法打开网页的可能原因&#xff0c…

java二期_JAVA基础之多线程二期

一、主线程public class MainThread {/*** 主线程:指执行main()方法的线程,且该线程是单线程,从上到下执行* JVM执行main()方法时,JVM会将main()方法放入到栈内存中执行,* 同时CPU会为main()方法开辟一条执行路径&…

cad插件_CAD素材与插件合集

CAD素材与插件合集CAD字体包下载链接:https://pan.baidu.com/s/16Wq4boqm254qJNJG5fD5EA提取码:h28nCAD经典模式下载链接:https://pan.baidu.com/s/18U6vSetQxg6bCNJDElZtFA提取码:wlje电气符号下载链接:https://pan.b…

一个form 如何做两次提交_如何做一个自信魅力的女人

有一种常见的说法是外观完全决定了吸引力,错,如果你希望人们被你吸引,如果你想做一个优秀的、成功的、万众瞩目的女性,那么你必须做很多努力,才能成为一个有魅力的人。1做自己不要复制像杰西卡兰格或安德里亚汤普森这样…

python的语句_Python的语句

python中的两种语句&#xff1a;1、if条件控制语句格式&#xff1a;if:a int(input("请输入第一个数&#xff1a;"))b int(input("请输入第二个数&#xff1a;"))if a < b:print("a比b小")if-else:a int(input("请输入第一个数&#…

vbs代码炫酷效果_Python|实现黑客帝国代码雨效果

Python|实现黑客帝国代码雨效果估计大家都看过电影《黑客帝国》吧&#xff0c;片中的一段代码雨片段实在是炫酷&#xff0c;试想一下&#xff0c;片中的代码雨效果在自己电脑屏幕上实现了会是一种什么样的感觉&#xff0c;会不会有种身临黑客之境呢&#xff1f;本着满足好奇心和…

电脑手写输入法_百度输入法“手写输入”为什么不是老年人的专利?AI的进步...

智能手机的不断普及&#xff0c;也让人机交互取得了很快的发展&#xff0c;就从大家一下常用的设计输入法来看&#xff0c;效果也是越来越智能化了&#xff0c;一个输入法的自我修养选择gboard的原因有很多种&#xff0c;这也是作为一款我国国民输入法的第一要素&#xff0c;毕…

java abs前缀变量_JAVA工具例大全--cn.hutool.setting.AbsSetting读取配置文件例子

用类cn.hutool.setting.AbsSetting的如下方法:getCharpublic Character getChar(String key,String group)获取char类型属性值Parameters:key - 属性名group - 分组名Returns:属性值引用hutool,在项目maven的pom.xml的dependencies中加入以下内容:cn.hutoolhutool-all5.4.3读取…

python语言的数据类型图解_Python基础——数据类型(图解+实例,非常详细!)

Python基础——数据类型(图解实例&#xff0c;非常详细&#xff01;)Python基础——数据类型(图解实例&#xff0c;非常详细&#xff01;)内容及版权声明&#xff1a;笔记是根据开课吧——Python语法爬虫分析课和自己的理解记录&#xff0c;其中包含课程的截图&#xff0c;仅学…

台式电脑如何设置开机密码_设置苹果Mac电脑的开机密码-macw资讯

有很多用户刚从windows系统转过来使用mac系统&#xff0c;可能有很多东西都不知道在哪里&#xff0c;不知道怎么去设置&#xff1f;下面我们就来看下mac是怎样设置开机密码的。非常简单&#xff0c;来跟小编一起来学习然后设置苹果Mac电脑的开机密码吧&#xff01;1、首先&…

java重写面试题_Java面试题:重写了equals方法,为什么还要重写hashCode方法?

核心问题&#xff1a;重写了equals方法&#xff0c;为什么还要重写hashCode方法&#xff1f;这不仅仅是一道面试题&#xff0c;而且是关系到我们的代码是否健壮和正确的问题。在前面两篇文章涉及到了equals方法的底层讲解&#xff1a;《说说和equals的区别&#xff1f;你的回答…

python怎么读取石墨表格_每2秒进行一次statsd xaxis石墨统计 - python

我已经安装了石墨&#xff0c;nodejs-statsd(用于接收数据)和python statsd客户端(用于发送数据)。下面是一个测试脚本&#xff0c;该脚本将数据发送到statsd进程的udp套接字。#!/usr/bin/env pythonimport timeimport randomimport statsdc statsd.StatsClient(localhost,812…

电脑显示器闪屏_Win7系统电脑显示器屏幕闪屏的解决办法

Win7系统电脑闪屏怎么办&#xff1f;近日一个用户反馈&#xff0c;在使用Win7系统电脑的时候&#xff0c;会出现闪屏的问题&#xff0c;该如何解决呢&#xff1f;请看下文具体解决办法。解决办法&#xff1a;1、首先右击桌面空白处&#xff0c;并在右键菜单中&#xff0c;直接选…

java webservice 身份验证_java-Http基本身份验证不适用于Spring WS和WebS...

我尝试使用Spring(-WS)将HTTP基本身份验证凭据添加到我的SOAP请求中.该请求本身有效,但是没有凭据提交. HTTP标头应如下所示&#xff1a;[...]Connection: Keep-AliveUser-Agent: Apache-HttpClient/4.1.1 (java 1.5)Authorization: Basic mybase64encodedtopsecretcredentials…

python ftp timeout_python - FTP文件传输期间Python数据通道超时 - 堆栈内存溢出

我正在尝试使用Python的ftplib传输文件。def ftps_put_file(host, user, password, ftp_file_path, processed_file):try:context ssl.create_default_context(ssl.Purpose.SERVER_AUTH, cafileC:\\PATH\\TO\\SECURE.crt)with FTP_TLS(host, useruser, passwdpassword, contex…

win10更新不动_win10沙盒功能和其他同类程序的区别

刚刚在使用WIN10自带的沙盒功能&#xff0c;发现吃瘪了。具体吃瘪过程如下&#xff1a;WIN10沙盒https://www.zhihu.com/video/1145279384016584704明白人看懂了是啥意思&#xff0c;后面的废话可以跳过。总结一句话&#xff0c;WIN10沙盒在我文章发布日期前&#xff0c;软件环…

java 友好时间显示_仿微信的IM聊天时间显示格式(含iOS/Android/Web实现)[图文+源码]...

本文为原创分享&#xff0c;转载请注明出处。1、引言即时通讯IM应用中的聊天消息时间显示是个再常见不过的需求&#xff0c;现在都讲究用户体验&#xff0c;所以时间显示再也不能像传统软件一样简单粗地暴显示成“年/月/日 时:分:秒”这样。所以&#xff0c;市面上几乎所有的IM…

查看grafana版本_使用 Prometheus 与 Grafana 为 Kubernetes 集群建立监控与警报机制

作者 | Gregoire DAYET 策划 | 田晓旭 IT 团队已经明确意识到对基础设施进行监控的必要性。目前市面上存在着大量适用于传统基础设施且历史悠久的解决方案&#xff1a;Nagios、Zabbix 等工具都是其中的代表。但这些工具并不足以解决 Kubernetes 生态系统在多层级抽象与故障排查…

java的注解_java-注解相关

注解概念&#xff1a;说明程序的&#xff0c;给计算机看注释&#xff1a;用文字描述程序先了解一些怎么正常javadoc文档1&#xff1a;给类或者方法添加doc注释2&#xff1a;通过命令javadoc 执行 类.java文件新建的类&#xff1a;/*** 注解doc演示*authorquan*sincejdk 1.7*ver…