Zed 编辑器、Eclipse Theia IDE、Lite XL 和 Cursor 都比 VS Code 有一些优势,至少目前如此。Zed 和 Cursor 各有千秋。
作为一名开发人员,对代码编辑器和 IDE(集成开发环境)的口头禅就是:我只想一直拥有一切。
在 2024 年,在这种情况下,“一切”是什么?它必须足够快,不会妨碍我。它必须能够支持我编写的所有编程语言的软件开发生命周期,至少具有语法突出显示功能,最好具有一些内联自动完成和语法检查功能。它还必须能够在实用层面上充当我的结对程序员。
下面我们将介绍四种Visual Studio Code的替代方案——Zed、Eclipse Theia IDE、Lite XL 和 Cursor,它们都适用于 Linux、macOS 和 Windows,但 Zed 略有例外,目前仅适用于 Linux 和 macOS。
Zed 项目表示 Windows 版本“即将”推出。除 Cursor 外,所有四种产品都是免费的,Cursor 提供有限免费版、每月 20 美元的专业版和每月 40 美元的商业版。
所有四款产品都可以扩展以支持 AI 辅助编码,但 Zed 和 Cursor 还具有原生 AI 集成,这使它们与众不同。
人工智能驱动的结对编程正在快速发展。它曾经备受争议;现在大多数程序员都接受人工智能帮助完成代码,有时甚至用于代码生成。
不过,必须重申这个必须的警告:只有当您熟练地审查、理解、测试和调试代码时,AI 代码生成才是安全的。
它不适合初学者。它不适用于用您不懂的语言生成代码。为不熟悉的库或框架生成代码可能没问题,只要您至少熟悉到可以区分安全用法和不安全用法的程度。
如果您使用 AI 代码生成而不做任何尽职调查,您仍可能提高作为程序员的生产力。但是,您可能会编写出错误较多、效率较低的代码;换句话说,就是垃圾、垃圾、废物。
Visual Studio Code 内部
Visual Studio Code 是一款免费、轻量且功能强大的源代码编辑器,适用于 Windows、macOS、Linux 和 Raspberry Pi OS。
它内置对 JavaScript、 TypeScript和 Node.js的支持 ,并且拥有丰富的扩展生态系统,适用于其他编程语言(如C++、C#、Java、Python、PHP和Go)、运行时(如.NET和 Unity)、环境(如Docker和Kubernetes )和云(如 Amazon Web Services、Microsoft Azure 和 Google Cloud Platform)。
Microsoft 的Visual Studio Code (vscode) 存储库中的代码 在 MIT 许可下是开源的。Visual Studio Code 产品本身在标准 Microsoft 产品许可下发布,因为它包含少量 Microsoft 特定的自定义内容。尽管有商业许可,但它是免费的。vscode 存储库正式称为Visual Studio Code – 开源(“Code – OSS”)。
但是,核心 Code-OSS 仓库并不是全部。Code 项目由 vscode 仓库和一些项目组成。其中一个更重要的项目是语言服务器协议,它定义了编辑器或 IDE 与语言服务器之间使用的协议,语言服务器提供语言功能,如自动完成、转到定义、查找所有引用等。语言服务器索引格式(LSIF,发音为“else if”)的目标是支持开发工具或 Web UI 中的丰富代码导航,而无需源代码的本地副本。另一个重要的项目是独立的Monaco 编辑器,它是 Visual Studio Code 的功能齐全的代码编辑器。
由于 Visual Studio Code 是一款基于 Chromium 和 Node.js 构建的混合应用,运行在原生 Electron shell 中,因此它不如作为原生应用编写时那么小巧或快速。对于那些想要构建更小、更快的代码编辑器和 IDE 的人来说,这是一个机会。
受 Visual Studio Code 启发:概述
其他人构建了外观和行为都与 Visual Studio Code 类似的产品,甚至可能在桌面和云端使用 Code OSS 的部分功能,这并不奇怪。
Zed被誉为“专为与人类和人工智能的高性能协作而设计的下一代代码编辑器”。Zed看起来像 VS Code,并且具有它的许多功能,但它“用Rust从头编写,以有效利用多个 CPU 内核和 GPU”。它的大小约为 VS Code 的一半,在我的 M1 MacBook Pro 上运行速度更快。它甚至比Sublime Text还快。Zed 还可以访问许多大型语言模型(LLM),既可以内联也可以在单独的窗口中访问,这秉承了Tabnine的精神。
Zed 正在查看语义内核源代码。请注意中间一栏下拉菜单中的 Git 信息、右侧一栏中的 AI 聊天以及右下角的 GitHub Copilot 图标。
Eclipse Theia是一个用于构建 IDE 和其他开发工具的框架;Eclipse Theia IDE是基于 Theia 框架构建的云和桌面 IDE。Theia IDE 实际上使用了 Monaco 编辑器组件,并通过 Visual Studio Code 的 LSP(语言服务器协议)和 DAP(调试适配器协议)提供语言支持。此外,它可以托管 VS Code 扩展(它内置了 83 个扩展,尽管大多数都是非常基础的)并提供终端访问。大约有六种其他产品是基于 Theia 框架构建的。Theia IDE 既不比 VS Code 小,也不比它快,而且存在许多问题。
Theia IDE 查看和运行 Quicksort.cpp。虽然我能够安装 C++ 扩展,但无法安装允许 Python 项目从 IDE 运行的扩展。
Lite XL被宣传为“轻量级、简单、快速、功能齐全且扩展性极强的文本编辑器,用 C 和 Lua 编写,改编自 lite ”。它支持用于语言支持的LSP 插件和终端插件。(我可以安装终端插件,但无法在我的 M1 MacBook Pro 上运行它。)其他各种常见的编辑功能也以插件的形式实现。Lite XL 的大小约为 Visual Studio Code 的十分之一。它使用 MacPorts 安装在 macOS 上。它也应该使用其发布页面上的版本进行安装,但该版本无法在我的 M1 MacBook Pro 上启动。
Lite XL 显示和编辑我在生成式 AI 的帮助下使用 VS Code 和 Tabnine 编写的 Python 程序。请注意,没有终端(我无法安装它)、没有弹出窗口(同上),也没有运行命令(同上)。即使没有插件,Lite XL 也可以用作编辑器。
Cursor是 Visual Studio Code 的一个分支,旨在让你“极其高效”,并声称是“使用 AI 编码的最佳方式”。Cursor 内置了几种代码补全和聊天模型,还可以使用 Claude Opus 和高级模型 GPT-4、GPT-4o 和 Claude 3.5 Sonnet。在本次评测过程中,发布了更多模型,例如 o1-mini。具体可以调用哪些模型、调用频率和优先级取决于你的 Cursor 和 GitHub Copilot 订阅计划以及你提供的 API 密钥。Cursor 自己的代码补全功能比 GitHub Copilot 更强大。它可以编辑光标周围的代码并删除文本,而不仅仅是在光标位置插入文本。Cursor 的大小与 VS Code 差不多。
Cursor 调试 Quicksort.cpp 的测试。请注意完整的调试输出和编辑弹出窗口。如下所示,Cursor 具有广泛的生成 AI 功能。
竞争者比较
总体而言,我认为 Theia IDE 太慢,功能不够强大,不符合我的口味。目前我无法在 Lite XL 中运行许多插件,这意味着我只能将其用作基本的编程编辑器,尽管它是一款小巧、快速、理论上可扩展的编程编辑器。另外两个 Visual Studio Code 替代品 Zed 和 Cursor 更合我的口味。值得将这两个与 VS Code 进行比较,并相互比较。
Zed
Zed 编辑器是由编写 Atom、Electron 和 Tree-sitter 的团队开发的。他们不想再使用 JavaScript/Electron 框架的 Web 应用程序方法。相反,他们决定使用Rust和GPUI来提高速度。您可能知道,Rust 是一种快速、内存高效的编译型编程语言,具有确保内存安全和线程安全的功能。
我有没有提过 Zed很快?与 Visual Studio Code 相比,简直是天壤之别。我已经亲身体验过 VS Code 比 Sublime Text 慢,但我认为速度变慢是 VS Code 作为 IDE 而非编辑器的必然结果。Zed 证明了我的想法是错误的。
使用 Rust 而不是 JavaScript 只能部分解释 Zed 的速度。另一个主要因素是使用 GPU 加速,这有点令人惊讶,因为其他一些新编辑器在尝试使用 GPU 时无法实现任何明显的速度提升。
GPUI 是一个用于 Rust 的 GPU 加速 UI 框架,由 Zed 团队与 Zed 并行开发,目前是 Zed 存储库的一部分。在 macOS 上,GPUI 使用Metal,这是 Apple 特定的集成图形和计算 API,带有用于渲染的着色语言。Metal 的功能结合了OpenGL GPU 加速矢量图形和各种加速器的OpenCL并行编程。使用 Metal API 是我在实时游戏中期望的,但在编辑器中则不然。
在 Linux 上,Zed 需要 Vulkan 1.3 驱动程序;Vulkan 是通常用于实时游戏编程的 GPU 专用 API。Zed 可以使用 X11 窗口管理器或 Wayland(一种较新的组合窗口管理器和显示服务器),具体取决于 Linux 系统中存在哪种。如果两者都存在,Zed 将优先使用 Wayland,除非您告诉它不要使用。
Zed 如何知道是使用 Metal 还是 Vulkan?我没有找到明确的平台相关switch或if语句,正如我在 C/C++ 代码中预期的那样。当我在 Zed 中浏览 GPUI app.rs 文件时询问 Zed Assistant 时发现,GPUI 使用特征Platform 来抽象特定于平台的功能,并且在创建应用程序时注入实际的平台实现。
特征是 Rust 语言的一个特性;它们定义特定类型的功能或行为,有点像 Java 或 C# 中的接口。使用文件搜索“platform”,我#[cfg(target_os = …)]在 platform.rs 中找到了一个使用指令实现平台相关代码注入的实现。该 Rust 指令类似于 C/C++#ifdef预处理器指令。
我提到使用 Zed Assistant 来解释代码。Zed 的生成式 AI 集成有两个部分:内联助手和助手面板。助手面板不仅仅是一个 AI 聊天室,它还是一个上下文编辑器。
这需要解释一下。Zed 将助手面板称为上下文,并记录道:“上下文就像大多数助手类工具中的对话。上下文是一种协作工具,用于在您、您的项目和助手/模型之间共享信息。 ”这允许您在项目中的代码和您与模型的对话之间来回工作。一旦习惯了,就会养成习惯。(观看八分钟的介绍视频,了解这一切是如何运作的。)
斜线命令增强了您在上下文窗口中可以执行的操作。这些命令包括简单的插入,例如/now(时间和日期)和/tab(活动或打开的选项卡的内容),以及/workflow(为助手建立上下文以建议对您的代码进行编辑)。此外,Zed 会保留您的所有查询及其响应的历史记录,以便您随时可以再次查看它们。
Zed内联助手更接近于您对 Visual Studio Code 内联 GitHub Copilot 助手的期望,但仍有额外的变化。按 ctrl-enter 或单击编辑窗格右上角的助手图标,您可以将当前行或当前选择发送到模型以完成。内联助手使用助手面板提供上下文或指示,指导模型如何修改内联代码。你会很快掌握它,即使一开始可能会令人困惑。
Zed 可以使用 Anthropic、GitHub Copilot Chat、Google、Ollama 和 OpenAI 的模型。如果您提供相应的 API 密钥,或者在 GitHub Copilot 的情况下拥有 Zed 可以查找的订阅,则可以获得更多访问权限。要在 Ollama 中使用开源(或部分开源)模型(如Llama、Mistral 和 Gemma),您需要在计算机上运行Ollama,这会占用大量内存。
Zed 具有广泛的协作功能,包括特定主题的频道和指定联系人。由于我现在有点孤狼式,所以我很少使用这些东西。如果你和其他几个人一起做一个项目,这听起来应该很有用,但你必须信任任何你允许与你合作的人,因为该功能允许他们访问你的本地文件系统。
Zed 具有 VS Code、Sublime Text 和 BBEdit 中的大多数编辑功能。这些功能包括多缓冲区编辑、使用REPL和笔记本的交互式编程、对多种语言的支持、终端和任务运行器、完整的Vim绑定和远程开发(仍处于预览阶段)。Zed 目前缺少调试器支持,尽管它确实对解释语言具有很好的集成 REPL 支持。调试器支持已列入其路线图。
Zed 展示了 GPUI 板条箱和 Claude 3.5 Sonnet 对其工作原理的询问的回复。
Cursor
由于 Cursor AI 是 VS Code 的一个分支,因此它并不比 VS Code 快,也不如 Zed 快。它相对于 VS Code 的主要改进是处理代码完成和聊天。其中一些功能无法通过扩展来实现。
Cursor 的特色功能主要集中在 AI 方面。生成代码时,Cursor 可以看到您最近的更改,因此它可以预测您接下来要做什么。它可以一次建议多个编辑,这也是 Zed 的功能。如果您输入了错误代码,而该代码足以猜测您的意图,Cursor 会对其进行修复。Cursor 还可以预测您的下一个光标位置。
在聊天选项卡中,Cursor 可以回答有关您的代码库的问题、引用您引用的代码、使用图像作为输入,以及在您要求时引用网页。它可以将聊天中的代码建议应用到您的代码库中,并引用您提到的库或文档。
在代码上下文中,您可以弹出提示栏来向 Cursor 发出指令,并可选择提供突出显示的范围。您还可以从此栏中提出快速问题。最后,您可以在终端窗口中向 Cursor 寻求帮助,它会生成命令。
光标显示 Haystack 快速启动 Python 代码和聊天选项卡,其中 Claude 3.5 Sonnet 解释代码。
虽然我不会放弃 Visual Studio Code 或 Sublime Text,也不会放弃免费版的 Cursor,但我还是希望采用 Zed 作为我的主要代码开发环境。它目前是免费的。但是,如果他们要求的订阅价格超出我的预算,我不知道我会如何反应。
版权归原作者 网络研究观 所有, 如有侵权,请联系我们删除。