2024 Rust 首款编辑器 Zed 开源,速度极快、干掉 VS Code?
bigegpt 2024-09-25 14:30 3 浏览
大家好,很高兴又见面了,我是"高级前端?进阶?",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!
1. 什么是 Zed
Code at the speed of thought – Zed is a high-performance, multiplayer code editor from the creators of Atom and Tree-sitter.
Zed 是一款新型开源代码编辑器,由 Atom 和 Tree-sitter 的创建者开发,旨在让开发者可快速定制和协作。 Zed 采用 Rust 构建,与许多其他编辑器相比,提供卓越的速度和性能。
- 快速高效:得益于 Rust,Zed 提供了流畅的编码体验,即使对于大文件也是如此
- 实时协作:无论身在何处都可以与团队实时协作
- 广泛可定制:通过主题、插件和可调整的设置,Zed 可以根据工作流程进行定制。
- 完全开源:Zed 于 2023 年推出,并于 2024 年开源,邀请世界各地的开发者做出贡献
- 跨平台:目前可用于 Mac,并计划支持 Linux、Windows、Web
对于 macOS 用户,还可以从 Homebrew 安装 Zed:
brew install zed
对于 Linux 可以通过下面命令快速开始:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
git clone https://github.com/zedapp/zed
cd zed
cargo build --release
// 构建完成后可以从 ./target/release/ 目录运行 Zed
目前 Zed 在 Github 开源,有超过 26.5k 的 star、1k 的 fork,是一个值得关注的开源项目。
2. 什么让 Zed 能脱颖而出
实时协作
Zed 让开发者可以与团队成员同时编写代码,即可以立即看到其他人正在输入的内容,就像一起编辑同一个文档一样。
- 使每个人的更改保持同步。
- 可以看到不同颜色的光标来了解谁在哪里输入
- 更改发生时会被共享,因此不会发生混淆。
- 可以直接在 Zed 中与团队讨论代码
- 启动群组会话就像共享链接一样简单
此功能非常适合:
- 一起修复代码
- 快速讨论想法并寻找解决方案
- 帮助新团队成员加快结对编程的速度
- 在 Zed 中一起工作可以使与他人的编码变得更加顺畅和直接
编程语言支持
Zed 对许多编程语言都很友好,包括:
- JavaScript 和 TypeScript
- Python
- JAVA
- C++
对于这些语言,Zed 提供:
- 突出显示代码,使其更易于阅读
- 关于如何完成代码的建议
- 检查代码是否有错误
- 设置代码格式使其看起来整洁
- 帮助调试的工具
- 更快编码的特殊快捷键
而且开发者只需要针对特定语言添加简单配置即可,比如:
{
"languages": {
"TypeScript": {
"code_actions_on_format": {
"source.organizeImports": true
}
},
"TSX": {
"code_actions_on_format": {
"source.organizeImports": true
}
}
}
}
同时,由于 Zed 是开源的,任何人都可以添加对更多语言的支持,Zed 的目标是让开发者用最喜欢的语言进行编码变得轻而易举。
可扩展性和插件
Zed 允许开发者添加新功能或更改其插件系统的工作方式。 这非常重要,因为这意味着任何人都可以让 Zed 做更酷的事情。
以下是为 Zed 制作插件的工作原理:
- 使用 Rust 和一个特殊的工具包 (zed_plugin) 来创建插件。
- 插件可以改变 Zed 的工作方式,例如添加新工具或更改编辑器。
- Zed 确保插件能够很好地协同工作
- 使用 Rust 工具来共享插件。
- 此设置允许开发者创建许多不同的东西,例如:对更多编程语言的支持、检查代码的工具,甚至新主题。
以下是人们制作的一些很酷的插件:
- Python LSP
- Code Minimap
- Vim Mode
- Output Panel
其他特性
除了以上突出特性外,Zed 还包括很多开发者特别关心的问题:
- 安全:当与其他人合作时,Zed 通过使用 Rust 的内置安全功能和加密消息来确保使用安全。
- 加密:当在 Zed 中一起编码时,它会使用强加密来保护工作私密性,比如:WebRTC
- 沙盒和权限:Zed 限制了它的用途
3. 为何 Zed 如此快
Zed 速度非常快,因为其用 Rust 构建,Rust 是一种以速度而闻名的编程语言。
得益于 Rust 语言
Rust 是 Zed 速度背后的秘密武器,与其他一些使用 Electron 的代码编辑器不同,Zed 可以直接在计算机硬件上运行, 这意味着打开文件或打字等常见任务几乎是即时的。
// This is a comment, and is ignored by the compiler.
// You can test this code by clicking the "Run" button over there ->
// or if you prefer to use your keyboard, you can use the "Ctrl + Enter"
// shortcut.
// This code is editable, feel free to hack it!
// You can always return to the original code by clicking the "Reset" button ->
// This is the main function.
fn main() {
// Statements here are executed when the compiled binary is called.
// Print text to the console.
println!("Hello World!");
}
Rust 也非常擅长管理内存,这有助于 Zed 顺利运行,即使打开大量文件或处理大型项目时也是如此。
多线程
Zed 可以同时执行许多操作,因为它将任务分配给 CPU 中的不同内核。 这样,代码建议和自动保存等功能就不会互相拖慢速度。
当开发者打字时,这种多任务处理尤其明显。 Zed 可以提供提示并检查代码,而不会妨碍开发者。
GPU 加速与设计权衡
Zed 还使用 GPU(计算机中处理图形的部分)来显示文本和滚动, 即使正在处理大文件,从而使得代码移动变得非常顺畅。
Zed 背后的团队选择让事情变得简单,同时专注于对编码最重要的内容。 这意味着 Zed 不仅速度快而且非常易于使用。
而且针对未来,Zed 团队希望更多地利用 Rust 和现代计算机的强大功能。 目标是保持 Zed 的快速运行,即使添加了实时协作代码等新功能。
对于任何编码并关心不浪费时间的人来说,Zed 的速度和同时处理大量任务的能力使其成为一个不错的选择。
4.本文总结
本文主要和大家介绍 Zed ,其是一款新型开源代码编辑器,由 Atom 和 Tree-sitter 的创建者开发,旨在让开发者可快速定制和协作。因为篇幅问题,关于 Zed 只是做了一个简短的介绍,但是文末的参考资料提供了大量优秀文档以供学习,如果有兴趣可以自行阅读。如果大家有什么疑问欢迎在评论区留言。
参考资料
https://github.com/zed-industries/zed
https://daily.dev/blog/zed-learn-everything-about-the-open-source-code-editor-built-in-rust
https://www.youtube.com/watch?v=ejRdLq1fk6U
https://www.youtube.com/watch?v=zHRcz5G04fk
https://blog.stackademic.com/reviewing-zed-the-ide-of-the-future-305d681d990c
相关推荐
- C#.NET Autofac 详解(c# autoit)
-
简介Autofac是一个成熟的、功能丰富的.NET依赖注入(DI)容器。相比于内置容器,它额外提供:模块化注册、装饰器(Decorator)、拦截器(Interceptor)、强o的属性/方法注...
- webapi 全流程(webapi怎么部署)
-
C#中的WebAPIMinimalApi没有控制器,普通api有控制器,MinimalApi是直达型,精简了很多中间代码,广泛适用于微服务架构MinimalApi一切都在组控制台应用程序类【Progr...
- .NET外挂系列:3. 了解 harmony 中灵活的纯手工注入方式
-
一:背景1.讲故事上一篇我们讲到了注解特性,harmony在内部提供了20个HarmonyPatch重载方法尽可能的让大家满足业务开发,那时候我也说了,特性虽然简单粗暴,但只能解决95%...
- C# 使用SemanticKernel调用本地大模型deepseek
-
一、先使用ollama部署好deepseek大模型。具体部署请看前面的头条使用ollama进行本地化部署deepseek大模型二、创建一个空的控制台dotnetnewconsole//添加依赖...
- C#.NET 中间件详解(.net core中间件use和run)
-
简介中间件(Middleware)是ASP.NETCore的核心组件,用于处理HTTP请求和响应的管道机制。它是基于管道模型的轻量级、模块化设计,允许开发者在请求处理过程中插入自定义逻辑。...
- IoC 自动注入:让依赖注册不再重复劳动
-
在ASP.NETCore中,IoC(控制反转)功能通过依赖注入(DI)实现。ASP.NETCore有一个内置的依赖注入容器,可以自动完成依赖注入。我们可以结合反射、特性或程序集扫描来实现自动...
- C#.NET 依赖注入详解(c#依赖注入的三种方式)
-
简介在C#.NET中,依赖注入(DependencyInjection,简称DI)是一种设计模式,用于实现控制反转(InversionofControl,IoC),以降低代码耦合、提高可...
- C#从零开始实现一个特性的自动注入功能
-
在现代软件开发中,依赖注入(DependencyInjection,DI)是实现松耦合、模块化和可测试代码的一个重要实践。C#提供了优秀的DI容器,如ASP.NETCore中自带的Micr...
- C#.NET 仓储模式详解(c#仓库货物管理系统)
-
简介仓储模式(RepositoryPattern)是一种数据访问抽象模式,它在领域模型和数据访问层之间创建了一个隔离层,使得领域模型无需直接与数据访问逻辑交互。仓储模式的核心思想是将数据访问逻辑封装...
- C#.NET 泛型详解(c# 泛型 滥用)
-
简介泛型(Generics)是指在类型或方法定义时使用类型参数,以实现类型安全、可重用和高性能的数据结构与算法为什么需要泛型类型安全防止“装箱/拆箱”带来的性能损耗,并在编译时检测类型错误。可重用同一...
- 数据分析-相关性分析(相关性 分析)
-
相关性分析是一种统计方法,用于衡量两个或多个变量之间的关系强度和方向。它通过计算相关系数来量化变量间的线性关系,从而帮助理解变量之间的相互影响。相关性分析常用于数据探索和假设检验,是数据分析和统计建模...
- geom_smooth()函数-R语言ggplot2快速入门18
-
在每节,先运行以下这几行程序。library(ggplot2)library(ggpubr)library(ggtext)#用于个性化图表library(dplyr)#用于数据处理p...
- 规范申报易错要素解析(规范申报易错要素解析)
-
为什么要规范申报?规范申报是以满足海关监管、征税、统计等工作为目的,纳税义务人及其代理人依法向海关如实申报的行为,也是海关审接单环节依法监管的重要工作。企业申报的内容须符合《中华人民共和国海关进出口货...
- 「Eurora」海关编码归类 全球海关编码查询 关务服务
-
海关编码是什么? 海关编码即HS编码,为编码协调制度的简称。 其全称为《商品名称及编码协调制度的国际公约》(InternationalConventionforHarmonizedCo...
- 9月1日起,河南省税务部门对豆制品加工业试行新政7类豆制品均适用投入产出法
-
全媒体记者杨晓川报道9月2日,记者从税务部门获悉,为减轻纳税人税收负担,完善农产品增值税进项税额抵扣机制,根据相关规定,结合我省实际情况,经广泛调查研究和征求意见,从9月1日起,我省税务部门对豆制品...
- 一周热门
- 最近发表
- 标签列表
-
- mybatiscollection (79)
- mqtt服务器 (88)
- keyerror (78)
- c#map (65)
- xftp6 (83)
- bt搜索 (75)
- c#var (76)
- xcode-select (66)
- mysql授权 (74)
- 下载测试 (70)
- linuxlink (65)
- pythonwget (67)
- androidinclude (65)
- libcrypto.so (74)
- linux安装minio (74)
- ubuntuunzip (67)
- vscode使用技巧 (83)
- secure-file-priv (67)
- vue阻止冒泡 (67)
- jquery跨域 (68)
- php写入文件 (73)
- kafkatools (66)
- mysql导出数据库 (66)
- jquery鼠标移入移出 (71)
- 取小数点后两位的函数 (73)