第139章 从 IntelliJ IDEA 迁移至 Zed:安装、快捷键配置与编辑器偏好设置指南
安装 Zed
Zed 支持 macOS、Windows 和 Linux 系统。
在 macOS 上,你可以从 zed.dev/download 下载,或者通过 Homebrew 安装:
brew install --cask zed
在 Windows 上,从 zed.dev/download 下载安装包,或者使用 winget 安装:
winget install Zed.Zed
对于大多数 Linux 用户,使用安装脚本是最简单的方式:
curl -f https://zed.dev/install.sh | sh
安装完成后,你可以从应用程序文件夹(macOS)、开始菜单(Windows)启动 Zed,或在终端中直接运行 zed .,这将用 Zed 打开当前目录。
配置 JetBrains 快捷键方案
如果你习惯 IntelliJ,启用 JetBrains 快捷键方案能让你迅速上手。在新手引导阶段,你可以选择它作为基础按键映射。如果错过了这一步,之后也可以随时更改:
- 按
Cmd+,(macOS)或Ctrl+,(Linux/Windows)打开设置 - 搜索
Base Keymap - 选择
JetBrains
该方案映射了熟悉的快捷键,例如使用 Shift Shift 触发“查找所有”,Cmd+O 跳转到类,Cmd+Shift+A 查找操作。
在编辑器中,JetBrains 方案还让 Alt+Left / Alt+Right 以及 Shift+Alt+Left / Shift+Alt+Right 支持按子词移动和选择。因此,camelCase 和 snake_case 等标识符的行为与 IntelliJ 的驼峰导航逻辑一致。
设置编辑器偏好
你可以在设置编辑器中配置大多数选项({#kb zed::OpenSettings})。如需高级配置,通过命令面板运行 {#action zed::OpenSettingsFile} 来直接编辑设置文件。
IntelliJ 用户通常最先配置的选项包括:
| Zed 设置项 | 功能说明 |
|---|---|
format_on_save |
保存时自动格式化。设置为 "on" 以启用。 |
soft_wrap |
自动换行。可选值:"none"、"editor_width"、"preferred_line_length" |
preferred_line_length |
换行和标尺的列宽,默认为 80。 |
inlay_hints |
在代码中内联显示参数名和类型提示,类似 IntelliJ 的 hints。 |
relative_line_numbers |
如果你是从 IdeaVim 转过来的,这个会很有用。 |
Zed 还支持项目级设置。在项目根目录创建 .zed/settings.json 文件,即可覆盖该项目的全局设置,类似于 IntelliJ 中的 .idea 文件夹。
提示:如果你要加入一个已有项目,在第一次提交前先检查
format_on_save的设置。否则你本来只想改一行代码,结果可能不小心把整个文件重新格式化了。
打开或创建项目
设置完成后,按 Cmd+Shift+O(JetBrains 键位方案)即可打开一个文件夹,它会成为你在 Zed 中的工作区。与 IntelliJ 不同,这里没有项目配置向导、没有 .iml 文件,也不需要配置 SDK。
要新建项目,先用终端或文件管理器创建一个目录,然后在 Zed 中打开它。编辑器会将该文件夹视为项目根目录。
你也可以在任意文件夹下通过终端启动 Zed:
zed .
进入项目后:
- 使用
Cmd+Shift+O或C了md+E在文件间快速跳转(类似 IntelliJ 的“最近文件”) - 使用
Cmd+Shift+A或Shift Shift打开命令面板(类似 IntelliJ 的“随处搜索”) - 使用
Cmd+O搜索符号(类似 IntelliJ 的“跳转到类”)
打开的文件会以标签页形式显示在顶部。Project Panel 展示文件树和 Git 状态,用 Cmd+1 切换显示(就像 IntelliJ 的 Project 工具窗口)。
快捷键差异
如果你在引导过程中选择了 JetBrains 键位方案,大部分快捷键应该已经觉得很熟悉了。下面快速对比一下 Zed 和 IntelliJ 的快捷键。
相同的常用快捷键(Zed JetBrains 键位方案 ↔ IntelliJ)
| 操作 | 快捷键 | |
|---|---|---|
| 随处搜索(Search Everywhere) | Shift Shift
| |
| 查找动作 / 命令面板 | Cmd + Shift + A |
|
| 跳转到文件 | Cmd + Shift + O |
|
| 跳转到符号 / 类 | Cmd + O |
|
| 最近文件 | Cmd + E |
|
| 跳转到定义 | Cmd + B |
|
| 查找用法 | Alt + F7 |
|
| 重命名符号 | Shift + F6 |
|
| 格式化代码 | Cmd + Alt + L |
|
| 切换项目面板 | Cmd + 1 |
|
| 切换终端 | Alt + F12 |
|
| 复制当前行 | Cmd + D |
|
| 删除当前行 | Cmd + Backspace |
|
| 上移/下移行 | Shift + Alt + 上/下箭头 |
|
| 扩展/收缩选区 | Alt + 上/下箭头 |
|
| 按子词移动 | Alt + 左/右箭头 |
|
| 按子词选择 | Shift + Alt + 左/右箭头 |
|
| 注释当前行 | Cmd + / |
|
| 后退 / 前进 | Cmd + [ / Cmd + ] |
|
| 切换断点 | Ctrl + F8 |
快捷键差异(IntelliJ → Zed)
| 操作 | IntelliJ | Zed(JetBrains 按键映射) |
|---|---|---|
| 文件结构 | Cmd + F12 |
Cmd + F12(大纲) |
| 跳转到下一个错误 | F2 |
F2 |
| 运行 | Ctrl + R |
Ctrl + Alt + R(任务) |
| 调试 | Ctrl + D |
Alt + Shift + F9 |
| 停止 | Cmd + F2 |
Ctrl + F2 |
Zed 独有功能
| 操作 | 快捷键 | 备注 |
|---|---|---|
| 切换右侧停靠面板 | Cmd + R |
Agent 面板、通知 |
| 分屏 | Cmd + K,然后按方向键 |
可任意方向创建分屏 |
如何自定义快捷键
- 打开命令面板(
Cmd+Shift+A或Shift Shift) - 运行 {#action zed::OpenKeymap}
这将列出所有可用的按键绑定。你可以覆盖单个快捷键或移除冲突。
Zed 还支持按键序列(多键快捷键)。
界面差异
没有索引构建
如果你曾在大型项目中使用过 IntelliJ,你就熟悉那种等待:“正在索引……”根据项目大小不同,耗时可能从 30 秒到 15 分钟不等。IntelliJ 会构建整个代码库的全面索引,以支撑其代码智能功能,并在依赖变更或构建后重新索引。
Zed 不做索引。打开文件夹即可立即开始工作,无论项目多大,文件搜索和导航都是即时的。
IntelliJ 的索引支撑着查找全代码库用法、理解类层次结构以及检测死代码等功能。Zed 将这些工作委派给语言服务器,而这些服务器可能无法达到同等分析深度。
如何适应:
- 项目范围的符号搜索:使用
Cmd+O/ 转到符号(依赖你的语言服务器) - 按文件名查找:使用
Cmd+Shift+O/ 转到文件 - 跨文件文本搜索:使用
Cmd+Shift+F——即使在大型代码库上也很快速 - 若需要对 JVM 代码进行深度静态分析,可考虑将 IntelliJ 的检查作为独立步骤运行,或使用 Checkstyle、PMD、SpotBugs 等独立工具
LSP 与原生语言智能
IntelliJ 为每种支持的语言从零构建了专属语言分析引擎。对于 Java、Kotlin 及其他 JVM 语言,该引擎能深入理解代码:解析类型、跟踪数据流、识别框架注解,并提供数十种专用重构功能。
Zed 使用 Language Server Protocol(LSP)提供代码智能。每种语言都有独立的服务器:Java 用 jdtls,Rust 用 rust-analyzer,等等。
对某些语言而言,LSP 体验非常出色。TypeScript、Rust 和 Go 拥有成熟的语言服务器,能提供快速、精准的补全、诊断和重构。但就 JVM 语言而言,差距可能更明显。基于 Eclipse 的 Java 语言服务器能力足够,但在以下方面无法与 IntelliJ 的深度相媲美:
- Spring 和 Jakarta EE 注解处理
- 复杂重构(提取接口、上移成员、修改签名并更新所有调用方)
- 感知框架的代码检查
- 按自定义排序规则自动优化 import
如何适应:
- 使用
Alt+Enter调出可用的代码操作,具体列表取决于语言服务器 - 对于 Java,需要在设置中正确配置
jdtls的 JDK 路径
没有项目模型
IntelliJ 通过 .idea 文件夹(内含 XML 配置文件)、.iml 模块定义、SDK 配置和运行配置来管理项目。这套模型让 IntelliJ 能够理解多模块项目、自动管理依赖,并保存复杂的运行/调试配置。
Zed 没有项目模型。项目就是一个文件夹,没有向导、没有 SDK 选择界面、也没有模块配置。
这意味着:
- 构建命令要手动执行,Zed 不会自动识别 Maven 或 Gradle 项目。
- 没有运行配置,你需要自定义任务或直接用终端。
- SDK 管理在 Zed 之外,语言服务器用的是 PATH 里的 JDK。
- 没有模块边界,Zed 看到的只是文件夹,而不是项目结构。
如何适应:
- 在项目根目录创建
.zed/settings.json来配置项目级设置 - 在
tasks.json中定义常用命令(通过 Command Palette 打开:{#action zed::OpenTasks}):
[
{
"label": "build",
"command": "./gradlew build"
},
{
"label": "run",
"command": "./gradlew bootRun"
},
{
"label": "test current file",
"command": "./gradlew test --tests $ZED_STEM"
}
]
- 用
Ctrl+Alt+R快速运行任务 - 任务覆盖不到的操作,就用终端(
Alt+F12)解决 - 多模块项目可以把每个模块作为独立的 Zed 窗口打开,也可以打开根目录后通过文件查找器导航
没有框架集成
IntelliJ 在企业级 Java 开发中的价值,很大程度上归功于其框架集成能力。它能理解并导航 Spring Bean,对 JPA 实体有专门处理,端点可被索引和搜索,Jakarta EE 注解也会改变 IDE 分析代码的方式。 Zed 没有这些功能。语言服务器只把 Java 当作普通的 Java 代码,因此它不会识别 `@Autowired` 的特殊含义,也不会意识到某个类是 REST 控制器。
其他技术栈也类似:没有 Rails 集成,没有 Django 支持,除了 TypeScript 语言服务器提供的功能外,也没有 Angular 或 React 的专属工具。
如何适应:
利用 grep 和文件搜索。用正则表达式配合 Cmd+Shift+F,可以查找端点定义、Bean 名称或注解的使用位置。
依赖语言服务器的“查找引用”功能(Alt+F7)进行导航。它可用,只是缺少框架上下文。
对于 Spring Boot,保留 Actuator 端点或使用其他工具来理解 Bean 的装配过程。
考虑在 Zed 的终端里使用框架特定的命令行工具,如 Spring CLI 或 Rails 生成器。
提示:对于数据库操作,建议选用 DataGrip、DBeaver 或 TablePlus 等专用工具。许多转向 Zed 的开发者仍会保留 DataGrip 专门用于 SQL 处理,因为它能与现有的 JetBrains 许可证良好集成。
如果日常工作高度依赖框架感知的导航和重构,你会明显感觉到缺失。当你习惯通过搜索而非专用工具导航代码,或当你的语言拥有强大的 LSP 支持并能覆盖大多数需求时,Zed 的表现最好。
工具窗口与停靠区
IntelliJ 将辅助视图组织为编号的工具窗口(项目=1,Git=9,终端=Alt+F12 等)。Zed 使用类似的概念,称为“停靠区”:
IntelliJ 工具窗口 | Zed 对应项 | 快捷键(JetBrains 键位映射)
项目(1) | 项目面板 | Cmd + 1
Git(9 或 Cmd+0) | Git 面板 | Cmd + 0
终端(Alt+F12) | 终端面板 | Alt + F12
结构(7) | 大纲面板 | Cmd + 7
问题(6) | 诊断
Cmd + 6Cmd + 5Zed 支持三种停靠位置:左侧、底部和右侧。你可以通过拖拽或在设置中将面板移动至不同的停靠位置。
提示:IntelliJ 有一个“覆盖 IDE 快捷键”的设置,允许
Ctrl+Left/Right等终端快捷键正常工作。在 Zed 中,终端的键位映射是独立的——如果熟悉的快捷键在终端面板中失效,请检查你的键位映射配置。
调试
IntelliJ 和 Zed 都提供集成的调试功能,但体验有所不同:
- Zed 的调试器使用 Debug Adapter Protocol (DAP),支持多种语言
- 使用
Ctrl+F8设置断点 - 使用
Alt+Shift+F9启动调试 - 使用
F7(单步进入)、F8(单步跳过)和Shift+F8(单步跳出)逐步执行代码 - 使用
F9继续执行
调试面板(Cmd+5)显示变量、调用栈和断点——与 IntelliJ 的 Debug 工具窗口类似。
扩展与插件
IntelliJ 拥有庞大的插件目录,涵盖从语言支持到数据库工具再到部署集成的各个方面。
Zed 的扩展目录规模较小,但更加专注:
- 语言支持和语法高亮
- 主题
- 上下文服务器
其他编辑器需要插件才能使用的多项功能,在 Zed 中已内置:
- 支持语音聊天的实时协作
- AI 编码辅助
- 内置终端
- 任务运行器
- 基于 LSP 的代码智能
你无法为每个 IntelliJ 插件找到一对一的替代品,尤其是针对特定框架的工具、数据库客户端或应用服务器集成。对于这些工作流,你可能需要在 Zed 之外使用外部工具。
Zed 与 IntelliJ 中的协作
IntelliJ 通过独立的插件 Code With Me 提供协作功能。Zed 则将协作功能集成在核心体验中。
- 在左侧停靠栏中打开 Collab Panel
- 创建一个频道并邀请协作者加入
- 直接共享你的屏幕或代码库
连接成功后,双方的光标、选区和编辑内容都会实时可见,还自带语音通话功能,无需额外的工具或第三方登录。
在 Zed 中使用 AI
如果你习惯在 IntelliJ 里用 AI 助手(如 GitHub Copilot 或 JetBrains AI),Zed 也提供类似能力,而且更灵活。
配置 GitHub Copilot
- 用
Cmd+,(macOS)或Ctrl+,(Linux/Windows)打开设置 - 进入 AI → Edit Predictions
- 点击 "Configure Providers" 旁边的 Configure
- 在 GitHub Copilot 下点击 Sign in to GitHub
登录后直接开始输入即可,Zed 会内联给出建议,你只需选择接受。
其他 AI 选项
在 Zed 中使用其他 AI 模型,有几种方式:
- 使用 Zed 官方托管模型,速率限制更宽松。需要完成身份验证,并通过 Zed Pro 订阅访问。
- 自带 API 密钥,无需身份验证
- 使用 External Agents,如 Claude Agent
高级配置与效率调优
Zed 为追求极致体验的用户提供了丰富的高级设置,方便微调开发环境。
下面是几个实用的配置项:
保存时自动格式化:
"format_on_save": "on"
启用 direnv 支持:
"load_direnv": "shell_hook"
配置语言服务器(需手动编辑 JSON):做 Java 开发时,可以在设置中配置 Java 语言服务器:
{
"lsp": {
"jdtls": {
"settings": {
"java_home": "/path/to/jdk"
}
}
}
}
下一步
环境搭建完成后,以下资源可以帮你更好地发挥 Zed 的潜力: