文本编辑器排名,文本编辑器有哪些
从今天起为大家带来玩转 VS Code 系列。
作为第一篇,我想先聊聊各大文本编辑器,这是程序员最喜欢争论的话题之一。
我还在读研究生时,很喜欢折腾各种编辑器,还写了一系列文章,当时受【善用佳软】邀请发布在了他的博客上(刚访问,发现他的博客已经 4 年没更新了,还好可以访问),文章列表见:[序列文章] 打造全能的文本编辑器[1]。
当时把文本编辑器做了一个分类(别在乎这个分类了):
武林泰斗——Vi/Vim、Emacs、jEdit(免费、开源、所有平台)武学宗师——UltraEdit、Editplus、TextPad、EmEditor 等(共享、Windows)普通高手——Notepad 、Notepad2 等(开源免费,可替代Notepad)以上编辑器,除了 Emacs,我都折腾过。一眨眼十年过去了,很多编辑器可能大部分人都不使用了。几乎和所有事物类似,编辑器也有其生命周期。借用李善友的《第二曲线创新》一书中提到的 S 曲线,无论是技术、产品、公司还是产业,生命周期都符合 S 型曲线。而编辑器属于产品,生命周期自然也符合 S 型曲线。
其实下面几个基本通过上面 Goto Anything 的对话框实现,你可以:
输入文件名的一部分可以打开文件;输入 @ 加上 symbols 可以跳转到对应的 symbols;输入 # 加上任意字符,可以在当前文件搜索;输入 : 加上数字可以跳转到当前文件某一行;以上的快捷方式可以组合在一起,比如输入 io.go@Reader 可以打开文件 io.go,并定位到接口 Reader。类似地,io.go:100 将定位到文件 io.go 的第 100 行。
polaris 点评:这是 Sublime Text 编辑器最大的亮点,是开创者,之前编辑器都没有。正因为好用,VS Code 等编辑器也提供了类似的功能。
2、多重选择双击文件中某个单词或选中某个词,该文件中其他词会“虚拟”选中,通过 ⌘ D 扩展选择,然后修改,这样可以同时修改多处,起到批量重命名的效果。
4、命令面板Command Palette 保存了各种需要的功能,比如排序、更改语法和缩进设置。只需敲击几下键盘,你就可以搜索你想要的东西,而不需要浏览菜单或者记住模糊的快捷键。通过 ⇧* ⌘ *P 打开该面板。也许这也是 Sublime Text 首创,之后 VS Code 和 Atom 都有该功能。
5、生态(扩展性)极强的扩展性是 Sublime Text 的一大特色。在此之前,除了 Vim 和 Emacs,很多其他的文本编辑器,可扩展性是比较差的,因此也完全没有生态可言。Sublime Text 的出现,让简单易用的文本编辑器也有了极强的扩展性。而且 Sublime Text 的扩展是使用 Python 来实现的,因此很多人可以实现自己的扩展,因为 Python 用户量大嘛。而且 Sublime Text 可以显示一个 Console,这个直接是 Python 解释环境,这里记录相关执行信息。
安装好后,会在 Atom 状态栏出现下图红框的图标。
官方有一个使用该插件的演示视频: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 打开。
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)
此外,根据 Go 官方 2019 年的调查报告显示,使用 VS Code 开发 Go 的用户占比从 2016 年的 16% 上升到 41%,排在第一位,比 Goland 这个 IDE 用户量还大;Sublime Text 由 2016 年的 11% 减少到 2%;Atom 由 2016 年的 12% 减少到 1%。
同时跟 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,可以从今天开始试试 VS Code,跟着我一起玩转 VS Code。
关于资源占用方面,编辑器都是轻量级的,因此占用资源都不多。相对来说,似乎 VS Code 占用最少。
参考资料[1]
[序列文章] 打造全能的文本编辑器: http://xbeta.info/texteditor.htm
觉得不错,欢迎关注
本文采摘于网络,不代表本站立场,转载联系作者并注明出处:http://www.9iwh.cn/redian/202303/141609.html