善用佳软(软件自学网)

/ 0评 / 0

善用佳软(软件自学网)

从2021-09-28 起为大家带来玩转 VS Code 系列。

作为第一篇,我想先聊聊各大文本编纂器,这是程序员最爱好争辩的话题之一。

我还在读研讨生时,很爱好折腾各种编纂器,还写了一系列文章,当时受【善用佳软】邀请宣布在了他的博客上(刚拜访,发明他的博客已经 4 年没更新了,还好可以拜访),文章列表见:[序列文章] 打造全能的文本编纂器[1]。

当时把文本编纂器做了一个分类(别在乎这个分类了):

以上编纂器,除了 Emacs,我都折腾过。一眨眼十年过去了,很多编纂器可能大部分人都不应用了。几乎和所有事物相似,编纂器也有其性命周期。借用李善友的《第二曲线创新》一书中提到的 S 曲线,无论是技巧、产品、公司还是产业,性命周期都符合 S 型曲线。而编纂器属于产品,性命周期自然也符合 S 型曲线。

图片起源:第二曲线创新

当然有些编纂器可以说是经久不衰,比如编纂器之神 Vim 和神的编纂器 Emacs。然而由于门槛高,这两款编纂器相对用户量会不如新兴的编纂器,但它们的用户都是忠粉。比如我折腾了 Vim 后,现在任何编纂器(或 IDE)没有 Vim 模式就难受,包含阅读器都安装 Vim 插件,它的模式和快捷键方法太好用了。

这次比较选择哪些编纂器呢?依据自己的接触,社区的讨论和网上的资料,同时只斟酌跨平台(Linux、Mac 和 Windows)的编纂器,最后选择了如下 3 款编纂器作比较。(注意 IDE 不在比拟的规模内,当然文本编纂器和 IDE 不必定好严厉区分,但一般以为 Goland 是 IDE,而 VS Code 是文本编纂器)。

这三款编纂器的用户应当包括了绝大部分应用文本编纂器的用户。为什么没有 Vim 和 Emacs?太难了,很多人入不了门,而且 Emacs 我也没用过。

注意:本文基于 MacOS 操作体系,涉及到的快捷键也是 Mac 体系下的。

Sublime Text

这是一个英俊的功效丰硕的文本编纂器。它是一款共享软件,购置允许须要 80 美元,不过不购置不影响应用,只是保留文件时可能会提示你一下。据说该编纂器作者当时辞职,找一个酒店,全身心投入开发,所以收费也是可以懂得的,都得吃饭不是。目前最新大版本是 Sublime Text 3,不建议 2 了,因为很多插件可能不支撑。

官方网站:
https://www.sublimetext.com。

我印象中,2011 年左右,该编纂器爆发式增加,特殊对前端开发很友爱,感到是超现代的编纂器。我也成为了它的用户,据我视察,不少非程序员也在应用它,比如产品经理。为什么它能够在众多编纂器中脱颖而出?经过这么多年的发展,一起看看有哪些用户爱好的特征。

1、Goto Anything

该功效让打开文件、跳转到 symbols(符号)、某行或某个词很便利、快捷,相干的快捷键如下:

其实下面几个根本通过上面 Goto Anything 的对话框实现,你可以:

以上的快捷方法可以组合在一起,比如输入 io.go@Reader 可以打开文件 io.go,并定位到接口 Reader。相似地,io.go:100 将定位到文件 io.go 的第 100 行。

polaris 点评:这是 Sublime Text 编纂器最大的亮点,是首创者,之前编纂器都没有。正因为好用,VS Code 等编纂器也供给了相似的功效。

2、多重选择

双击文件中某个单词或选中某个词,该文件中其他词会“虚拟”选中,通过 ⌘ + D 扩大选择,然后修正,这样可以同时修正多处,起到批量重命名的后果。

polaris 点评:这是不是也是 Sublime Text 的创新点?之前我之前用的编纂器没发明。因为好用,VS Code 也供给了。

3、分别编纂

如果你的显示器够大,可以在一个窗口分别多个编纂区域,可以并排编纂文件。

4、命令面板

Command Palette 保留了各种须要的功效,比如排序、更改语法和缩进设置。只需敲击几下键盘,你就可以搜索你想要的东西,而不须要阅读菜单或者记住隐约的快捷键。通过 ⇧*+⌘+*P 打开该面板。也许这也是 Sublime Text 开创,之后 VS Code 和 Atom 都有该功效。

5、生态(扩大性)

极强的扩大性是 Sublime Text 的一大特点。在此之前,除了 Vim 和 Emacs,很多其他的文本编纂器,可扩大性是比拟差的,因此也完整没有生态可言。Sublime Text 的涌现,让简略易用的文本编纂器也有了极强的扩大性。而且 Sublime Text 的扩大是应用 Python 来实现的,因此很多人可以实现自己的扩大,因为 Python 用户量大嘛。而且 Sublime Text 可以显示一个 Console,这个直接是 Python 说明环境,这里记载相干履行信息。

Sublime Text 专门有一个 Package Control,安装其他包之前须要先安装它。打开 Command Palette,键入 Install Package Control 即可安装 Package Control。

之后可以通过 Command Palette,键入 Install 来打开 Package Control,可以搜索你想要安装的包。

poalris 点评:吐槽一下,Sublime Text 的这个包安装界面出来特殊慢,而且从这个界面看不到太多详细的介绍,找到某个包,点击就是安装。详细信息只能通过
https://packagecontrol.io/ 这个站点查看。

6、可定制性

同样的,除了 Vim 和 Emacs,传统的其他编纂器大部分可定制性比拟差,大多通过配置页面进行一(www.isoyu.com原创版权)些有限的配置。但在 Sublime Text 中,可以对快捷键,菜单,代码片断,宏,主动完成等——几乎一切都是可定制的,这通过一个 JSON 文件实现。除此之外,对于每种文件类型,每个项目和每个扩大(包)都可以有自己的配置项。在“首选项”子菜单下可以看到:

polaris 点评:直接通过 JSON 配置还是有些原始,简略易用方面还是稍微差了些。

7、内置 project 支撑

Project 直接是顶级菜单,可以保留、打开、迅速切换项目。多项目管理很便利。保留项目时会生成 Sublime Text 特有的项目文件,记得参加 .gitignore 中。

8、minimap

在文本百思特网编纂区域的右侧,显示一个当前文本编纂区域的预览。这也是 Sublime Text 的开创吧。VS Code 也供给了该功效。

Sublime Text 的缺点

1、Sublime Text 对字符编码的支撑不全,比如不支撑 GBK 编码;

2、曾经输入中文,输入法候选词对话框显示特殊别扭,在 Linux 下也有些问题,不知道现在有无改良;

3、改换主题不彻底。比如左侧 Bar 和底部的 Console 是白色;

Atom

这是 GitHub 出品的一款开源文本编纂器,大概 2015 年 5 月宣布,官方宣称是一款面向 21 世纪的可编程文本编纂器。所以该编纂器目的是给程序员应用的。

官方网站:https://atom.io/,GitHub 源码地址:
https://github.com/atom/atom。

因为是 GitHub 出品,自然会有较浓厚的 GitHub 特点,有两大核心特点必需进行介绍。

特点一:Teletype for Atom

Git 让多人协作更轻松、便利,基于相似的理念,Teletype 想让多人在一个编纂器同时进行代码编写。这其实和现在的在线办公软件相似,可以多人同时编纂同一个文件。具体操作如下:

安装 Teletype。这是 Atom 官方的插件,安装人数不少。

安装好后,会在 Atom 状况栏涌现下图红框的图标。

初次点击后涌现登录 GitHub 的弹窗,须要进行 GitHub 授权,授权胜利后,会发生一个 token,将其复制粘贴到这个弹窗中。授权胜利后,弹窗是这个样子:

点击 share,copy 它生成的链接,分享给别人。别人参加后就可以一起高兴的进行“结对”编程了,好基友一辈子~

官方有一个应用该插件的演示视频:https://teletype.atom.io/。

特点二:和 Git 和 GitHub 无缝集成

Git 和 GitHub 内置集成进了 Atom 编纂器中,你可以直接应用。在编纂器状况栏可以看到相干信息:

和 Git 集成,在编纂器里进行 Git 相干的操作,其他编纂器通过扩大也很容易实现,不过 Atom 的该功效是否更好用,重要体现在 GitHub 官方的实现细节和编纂器对 GitHub 的高度集成了。

其他特点

因为 Sublime Text 的壮大影响力,在介绍 Atom 时,甚至会说它是一个类 Sublime 的编纂器。除了配置上比 Sublime Text 纯 JSON 的方法更友爱外,目前我没有发明其他更特殊的点。唯一值得一提的是 Atom 是应用 HTML,JavaScript,CSS 和 Node.js 集成,基于 Electron 构建的。Electron 是应用 Web 技巧构建跨平台运用程序的框架。因此 Atom 依附 Node 进行包管理,扩大自然也是应用 JS 实现。

此外虽然 Atom 支撑 GBK,但当一个文件是 GBK 编码时,打开却不能准确辨认,虽然通过状况栏的编码可以修正编码格局,但内容却并不能准确显示。也就是说,它能保留文件为 GBK,但无法准确打开 GBK 文件。

另外 Atom 和其他编纂器不一样的处所是,它所有的窗口都跟文件一样,在一个新 Tab 打开。

VS Code

VS Code 全称 Visual Studio Code,是一个轻量级但功效壮大的源代码编纂器,同时支撑 Windows,macOS 和 Linux。它具有对 JavaScript,TypeScript 和 Node.js 的内置支撑,并具有丰硕的其他语言(例如 C ++,C#,Java,Python,PHP,Go)和运行时(例如 .NET 和 Unity)扩大的生态体系。这是一个免费开源的编纂器。

从名称可以看出,VS Code 有微软牛逼的 IDE Visual Studio 的影子。

VS Code 官方网站:
https://code.visualstudio.com/,GitHub 地址:https://github.com/Microsoft/vscode/,截止 2020 年 8 月 25 日已经有 102k Star。

2015 年微软公开了首个 VS Code 预览版,1.0 正式版是 2016 年宣布的。宣布后受到了众多开发者的爱好,我个人感到把曾经很风行的 Sublime Text 打趴下了,可见其发展势头。有 StackOverflow 各年度调查报告数据为证(我们只关注本文讨论的三个文本编纂器的变更)。

1、2015 年,VS Code 还未涌现在名单中(可能还未宣布?)。Sublime Text 是 25.2%。(注意 NotePad++ 只有 Windows 版本,也是老牌的编纂器,可定制性较差,不过较轻量,而且免费,可以替代 Windows 下自带的记事本)(参与调查人数:26,086)

2、2016 年似乎将 IDE 参加了,因为 2015 年列表中没有涌现 IDE,而 2016 年有。从下图看出,这三款编纂器中,Sublime Text 依然遥遥领先,虽然 VS Code 涌现了,不过才 7.2%,落伍于 Atom 的 12.5%。(参与调查人数:50,000)

3、从下图看到,2017 年 Sublime Text 依然靠前,不过 VS Code 已经超过了 Atom,到达了 24%。(参与调查人数:64,000)

4、2018 年 VS Code 爆发了,到达了 34.9%,排在了第一位,超过了 IDE Visual Studio 和 Notepad++。(参与调查人数:100,000)

5、2019 年 VS Code 已经过半,到达了 50.7%。Sublime Text 才 23.4%,Atom 是 13.3%。(参与调查人数:90,000)

此外,依据 Go 官方 2019 年的调查报告显示,应用 VS Code 开发 Go 的用户占比从 2016 年的 16% 上升到 41%,排在第一位,比 Goland 这个 IDE 用户量还大;Sublime Text 由 2016 年的 11% 减少到 2%;Atom 由 2016 年的 12% 减少到 1%。

以上都表明,VS Code 获得了绝大多数人的爱好,纷纭废弃本来的编纂器,应用 VS Code。

那到底 VS Code 有什么精彩的处所,受到这么多人的爱好?

首先我以为 VS Code 也是类 Sublime 编纂器,上文也提到,一些特点功效是 Sublime 开创。但如果只是模拟别人的功效确定不会如此火爆。一起看看 VS Code 有哪些优良的特征。(当前 VS Code 版本 1.48.0)

遇见 IntelliSense(智能感知)

用过 Visual Studio 的人应当深有感受。VS Code 继承了这个优良的特征。不止是简略的语法高亮和主动完成,它能够依据变量类型、函数定义和模块导入进行智能感知。

Debug 和 Run

一直以来,Debug 才能是 IDE 才有的。对于编译型语言来说,支撑调试还是很有必要的。这方面 Sublime Text 和 Atom 都没有很好的支撑,而 VS Code 有一个菜单 Run 专门支撑。

同时跟 IDE 相似,可以直接在打开的文件左边栏点击打断点。演示一个简略的 Go 程序,点击 Run -> Start Debugging 或直接按 F5,启动调试器(编纂器最左侧有一个按钮,可以进入 Debug 模式),如下图:

已经和 IDE 的调试没啥差别了。

集成终端

快捷键:⌃` 会打开集成的终端。在 Sublime Text 和 Atom 中没有发明该功效。对于程序员来说,特殊是服务端开发,这个真的很须要。这里面的其他几个窗口的功效也挺有用。

可扩大性

VS Code 的构建斟酌了可扩大性。从 UI 到百思特网编纂体验,几乎可以通过扩大 API 自定义和加强 VS Code 的每个部分。实际上,VS Code 的许多核心功效都是作为扩大构建的,并应用雷同的扩大 API。因为 VSCode 应用 TypeScript 构建,因此扩大也基于 TypeScript。在 VS Code 中几乎可以找到你想到的任何扩大:画图?听音乐?你想到的都可以试试,它几乎成为了一个平台。

扩大的安装也很友爱,最左侧有按钮可以直达扩大市场,每个扩大还可以看到详细信息。同时 VS Code 还会依据你打开的文件智能为你推举扩大。这个后面文章会介绍到。

此外,VS Code 也是基于 Electron 构建,但资源占用方面比 Atom 少。

可定制性

这方面和 Atom 相似,通过可视化的方法进行配置,简略易用。大部分扩大也支撑定制。

Language Server Protocol

这个不是 VS Code 特有的,但是微软最初提出来的,专门为编纂器或 IDE 解决不同语言的特征,像主动完成、跳转到定义、查找引用等。只要语言实现了这个协定,加上对应的 VS Code 扩大就可以实现这样的功效。后文介绍的 gopls 就是一个 Go 语言的实现。

同步设置

因为壮大的配置才能,每个人可能都会对自己的 VS Code 进行一番配置。家里百思特网的电脑和公司的电脑如何做到用同一份配置?将来电脑怎么避免再次折腾配置?

VS Code 供给了同步配置的功效。在左下角有一个图标,可以开启同步。

选择同步项,然后登录微软或 GitHub 账号即可进行同步。

其他特点

上面 Sublime Text 中提到的功效、特点,VS Code 都有,应用方法也根本相似,因此 Sublime Text 用户可以很轻松切换到 VS Code。

当然 Git 现在这么风行,VS Code 内置也支撑 Git,同时还有壮大的第三方扩大可以应用,后面也会专门介绍。

此外,VS Code 还可以进行 remote container 开发,只要你愿意花点心思,定会让 VS Code 成为你最得力的编程工具、助手。当然如果你不愿意折腾,你也可以跟着我一起来玩转 VS Code。

对了,Sublime Text 和 Atom 都有问题的 GBK 编码文件,用 VS Code 打开也乱码,因为辨认为 UTF-8 文件了,不过可以通过点击状况栏的 “UTF-8”,打开切换编码窗口,通过 Reopen With Encoding 的方法,选择 GBK 即可准确打开文件。

不知道你有没有发明,VS Code 的状况栏很壮大。

总结

VS Code 因为有微软壮大的支撑,在各方面确切做的很好,文档也很全。本文没有比较具体编程的体验,这部分涉及到太多具体细节。而且很显然,本文是推举你应用 VS Code,因此编程方面的细节体验,后续只会涉及到 VS Code,只有在某些方面做的不好的时候,才会看看另外两个编纂器是否做得更好。

我以为,除了 Android、iOS 等这类强依附特定 IDE 的开发,其他开发都可以用 VS Code 搞定。Go 更不用说了。因此如果你不想花钱购置 Goland,可以从2021-09-28 开端试试 VS Code,跟着我一起玩转 VS Code。

关于资源占用方面,编纂器都是轻量级的,因此占用资源都不多。相对来说,似乎 VS Code 占用最少。