VS Code会“一统江湖”吗?( 二 )


2004 年:TextMate2004 年发布的 TextMate 可以说是有史以来最具影响力的文本编辑器 。 在众多特性中 , 它最受欢迎的特性有有基于缩写的代码片段、自动配对字符和根据文件名进行模糊查找 。 所有这些功能都成为后来每个流行的文本编辑器的主要特性 。 TextMate 开创的范围选择器和主题实现也构成了以后每个流行的文本编辑器突出显示主题和语法的基础 。
就一个应用程序来说 , 这已经很多了 , 但它还没有包括 TextMate 最重要的创新;该创新将继续重塑文本编辑器 , 巩固每一个出现在它之前的文本编辑器的利基地位 , 并为十年后 VS Code 成为历史上最流行的文本编辑器铺平道路 。
TextMate 最重要的创新是 , 它是第一个主要围绕扩展构建的广受欢迎的文本编辑器 。
虽然 TextMate 普及了围绕扩展构建文本编辑器的概念 , 但事后看来 , 它做得还不够 。 TextMate 的扩展有一些限制 , 后来的文本编辑器将通过消除这些限制而蓬勃发展 。
2008 年:Sublime Text2008 年发布的 Sublime Text 普及了 MiniMap 和多光标 。 与 TextMate 和 BBEdit 不同的是 , 它是跨平台的 , 可以运行在 Linux、MacOS 和 Windows 上 , 这帮助它获得了比那些编辑器更广泛的受众 。 但 Sublime Text 最大的影响是极大地提高了扩展功能 。
【VS Code会“一统江湖”吗?】TextMate 使用 macOS 内置的脚本语言 , 它没有一个合适的扩展 API , 而主要是围绕处理标准输出 , Sublime Text 和它不同 , 其扩展可以在具有丰富 API 的嵌入式 Python 运行时中运行 。
Sublime Text 极大地提高了扩展的功能 , 允许更复杂的集成 , 比如包含 GUI 组件的 linters 。 由 Will Bond(Will Bond 于 2016 年加入 Sublime HQ)为 Sublime Text 开发的包管理器 Package Control 非常受欢迎 , 它的特点是有一个集中的包管理源 , 简化了包的浏览、安装和更新;后来所有流行的文本编辑器也采用了这个模型 。
即使有了 Sublime Text 对扩展的增强 , 但它仍然走得不够远 。 Package Control 不是内置的 , 而且 , 虽然 Sublime Text 确实有一个 API , 但它使用 Python 和 GUI 组件的自定义调用仍然为将来的文本编辑器简化扩展构建留下了空间 。
2014 年:Atom2014 年 , GitHub 发布了 Atom , 最终实现了扩展的最终形式 。 Atom 的包管理器是内置的 , 可以通过内联图像显示扩展的 README(早期由 GitHub 自己制作的扩展推广了使用 GIF 动画来演示功能的做法) , 创建了一种让人联想到应用商店的扩展体验 。
然后是 HTML 和 CSS 的问题 。 Atom 构建在 Electron8 上 , 这意味着编辑器本身是用 JavaScript 编写的 , 并运行在 Node9 上 。 与 Sublime Text 的 Python API 相比 , HTML、CSS 和 JavaScript 属于当下最知名的语言 , 它们极大地降低了创建扩展的门槛 。
Atom 从本质上完善了基于扩展的编辑器 , 但只有一个问题:它太慢了 。 自从 Atom 发布以来 , 性能问题就一直困扰着它 , 与之相比 , Sublime Text 的速度快得惊人 , 最终导致了市场分裂 。
2015 年:Visual Studio CodeVS Code 于 2015 年发布 , 基于微软于 2013 年首次发布、可嵌入网站的 Monaco 编辑器 。 当 GitHub 和 Atom 一起发布 Electron 时 。 微软用它创建了一个 Monaco 编辑器的桌面版本 , 名为 Visual Studio Code 。
VS Code 采用了和 Atom 一样的模式——一个基于 Web 的本地文本编辑器 , 使用 Electron 编写 , 重视扩展——但提供了更好的性能 。 VS Code 将扩展放在侧边栏中 , 把它们提升到与文件浏览、搜索、源代码控制和调试相同的级别 , 从而使扩展更明显 。 VS Code 扩展可以有丰富的用户界面 , 可以用 HTML、CSS 和 JavaScript 编写 , 并且能完全访问 Node , 它们基本上可以做任何其他应用程序可以做的事情 。 事实上 , 一些扩展开始看起来像应用程序本身 。