入门 Zed Industries 2026-09-14 17:42:20 · 0 阅读

第142章 指南:如何从 RustRover 迁移到 Zed

本指南涵盖按键映射、设置配置,以及 Rust 开发者从 RustRover 切换时需注意的差异。

安装 Zed

Zed 支持 macOS、Windows 和 Linux。

macOS 用户可从 zed.dev/download 下载,或通过 Homebrew 安装:

brew install --cask zed

Windows 用户可从 zed.dev/download 下载安装程序,或通过 winget 安装:

winget install Zed.Zed

对于大多数 Linux 用户,通过官方安装脚本安装 Zed 最为简便:

curl -f https://zed.dev/install.sh | sh

安装完成后,你可以通过应用程序文件夹(macOS)、开始菜单(Windows)启动 Zed,或在终端中直接输入 zed . 来打开当前目录。

配置 JetBrains 按键映射

如果你来自 RustRover,要最快获得熟悉的手感,建议使用 JetBrains 按键映射。在新手引导期间,你可以将其选为基准按键映射。如果跳过了该步骤,也可以随时更改:

  1. Cmd+,(macOS)或 Ctrl+,(Linux/Windows)打开设置
  2. 搜索 Base Keymap
  3. 选择 JetBrains

此映射保留了熟悉的快捷键,例如:使用 Shift Shift 执行“搜索所有”(Search Everywhere),Cmd+O 跳转至类(Go to Class),Cmd+Shift+A 查找操作(Find Action)。

在编辑器中,JetBrains 按键映射还支持 Alt+Left / Alt+RightShift+Alt+Left / Shift+Alt+Right 按子单词移动和选择。这样,camelCasesnake_case 等标识符的行为将类似于 RustRover 的 CamelHumps 导航方式。

配置编辑器偏好

大多数设置可在设置编辑器({#kb zed::OpenSettings})中配置。如需高级设置,请通过命令面板运行 {#action zed::OpenSettingsFile} 直接编辑设置文件。

RustRover 用户通常会首先配置以下设置:

Zed 设置项 功能说明
format_on_save 保存时自动格式化。设置为 "on" 即可启用(默认使用 rustfmt)。
soft_wrap 长行自动换行。选项:"none""editor_width""preferred_line_length"
preferred_line_length 换行和标尺使用的列宽。Rust 约定通常为 100。
inlay_hints 内联显示类型提示、参数名称及方法链提示。
relative_line_numbers 如果你之前使用 IdeaVim,这个选项会很实用。

Zed 还支持按项目设置。在项目根目录创建 .zed/settings.json 文件,即可针对该项目覆盖全局设置。

提示:如果你正在加入一个现有项目,首次提交代码前请先检查 format_on_save 设置。否则,当你只想修改一行时,可能会不小心重新格式化整个文件。

打开或创建项目

完成初始设置后,按下 Cmd+Shift+O(假设使用 JetBrains 键位)即可打开一个文件夹。在 Zed 中,这就是你的工作区。

若要启动新项目,请在终端中使用 Cargo:

cargo new my_project
cd my_project
zed .

如果是创建库:

cargo new --lib my_library

你也可以在任意现有的 Cargo 项目内部,通过终端运行 zed . 来启动 Zed。

进入项目后:

  • 使用 Cmd+Shift+OCmd+E 在文件间快速跳转(类似 RustRover 的“最近文件”)
  • 使用 Cmd+Shift+A 或双击 Shift 打开命令面板(类似 RustRover 的“随处搜索”)
  • 使用 Cmd+O 搜索符号(类似 RustRover 的“转到符号”)

打开的缓冲区会以标签页形式显示在顶部。项目面板展示文件树和 Git 状态,可通过 Cmd+1 切换显示(就像 RustRover 的项目工具窗口)。

按键绑定的差异

如果在入门向导中选择了 JetBrains 键位,你大多数快捷键应该已经感觉很熟悉了。以下是 Zed 与 RustRover 的快速对照参考。

常见的通用按键绑定

操作 快捷键
随处搜索 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 + Up/Down
扩大/缩小选区 Alt + Up/Down
按子词移动 Alt + Left/Right
按子词选中 Shift + Alt + Left/Right
注释当前行 Cmd + /
后退 / 前进 Cmd + [ / Cmd + ]
切换断点 Ctrl + F8

不同的快捷键(RustRover → Zed)

操作 RustRover Zed(JetBrains 键位方案)
文件结构 Cmd + F12 Cmd + F12(大纲)
跳转到下一个错误 F2 F2
运行 Ctrl + R Ctrl + Alt + R(任务)
调试 Ctrl + D Alt + Shift + F9
停止 Cmd + F2 Ctrl + F2
展开宏 Alt+Enter Cmd + Shift + M

Zed 独有的快捷键

操作 快捷键 说明
切换右侧面板 Cmd + R Agent 面板、通知
拆分窗格 Cmd + K,然后按方向键 可朝任意方向拆分

自定义快捷键的方法

  • 打开命令面板(按 Cmd+Shift+A 或连续按两次 Shift
  • 运行 {#action zed::OpenKeymap}

这会列出所有可用的快捷键映射。你可以覆盖单个快捷键或解决冲突。

Zed 还支持按键序列(多键快捷键)。

界面差异

不同的分析引擎

RustRover 使用自有的 Rust 智能代码分析引擎。Zed 则通过 Language Server Protocol (LSP) 使用 rust-analyzer。

这意味着:

  • 自动补全、跳转定义、查找引用、类型推断 — 均通过 rust-analyzer 在 Zed 中提供
  • 宏展开 — 两者均支持(在 Zed 中按 Cmd+Shift+M
  • Inlay hints(内嵌提示) — 两者均支持类型、参数及链式调用提示

你可能注意到的差异:

  • RustRover 中的某些重构操作在 rust-analyzer 中可能没有对应功能
  • RustRover 特有的代码检查(除 Clippy 外)在 Zed 中不存在
  • 在 Zed 中,rust-analyzer 通过 JSON 配置,而非 GUI 界面

适应建议:

  • Alt+Enter 触发可用的代码操作,rust-analyzer 提供了很多选项
  • 在项目特定的 .zed/settings.json 中配置 rust-analyzer 设置
  • 运行 cargo clippy 进行代码检查(它与 rust-analyzer 诊断功能集成)

项目配置

两款编辑器都将每个项目的配置存储在隐藏文件夹中。RustRover 使用 .idea(包含 XML 文件),Zed 使用 .zed(包含 JSON 文件)。

运行配置无法自动迁移。 RustRover 将运行/调试配置存储在 .idea 中,没有自动迁移路径。你需要在 .zed/tasks.json 中将其重新创建为 Zed tasks(任务),并在 .zed/debug.json 中配置调试设置。

没有 Cargo 工具窗口。 RustRover 提供工作区成员、目标、特性及依赖项的可视化树。Zed 没有此功能,你需要直接操作 Cargo.toml 和 Cargo CLI。

工具链管理是外部化的。 RustRover 允许你在设置界面中选择和切换工具链。在 Zed 中,你需要通过 rustup 来管理工具链。

配置是可选的。 打开项目时,RustRover 会自动生成 .idea 目录。Zed 不会生成任何文件。你需要按需手动创建 .zed/settings.jsontasks.jsondebug.json

如何适应:

  • 在项目根目录创建一个 .zed/settings.json 文件,用于配置项目专属设置
  • tasks.json 中定义常用命令(可通过命令面板打开:{#action zed::OpenTasks}):
[
  {
    "label": "cargo run",
    "command": "cargo run"
  },
  {
    "label": "cargo build",
    "command": "cargo build"
  },
  {
    "label": "cargo test",
    "command": "cargo test"
  },
  {
    "label": "cargo clippy",
    "command": "cargo clippy"
  },
  {
    "label": "cargo run --release",
    "command": "cargo run --release"
  }
]
  • 使用 Ctrl+Alt+R 快速运行任务
  • 对于任务未覆盖的操作,请充分利用终端(Alt+F12

无 Cargo 集成界面

RustRover 的 Cargo 工具窗口提供了可视化界面,让你可以访问项目的构建目标、依赖项以及常用 Cargo 命令。你只需点击即可运行构建、测试和基准测试。

Zed 没有提供 Cargo 图形界面。你可以通过以下方式与 Cargo 交互:

  • 终端 — 直接运行任何 Cargo 命令
  • 任务 — 为常用命令定义快捷方式
  • 边缘图标 — 通过可点击的图标运行测试和二进制文件

如何适应:

  • 熟悉 Cargo CLI 命令:cargo buildcargo runcargo testcargo clippycargo doc
  • 为你频繁使用的命令创建任务
  • 对于依赖管理,直接编辑 Cargo.toml(rust-analyzer 会为 crate 名称和版本提供自动补全)

工具窗口与停靠栏

RustRover 把各种辅助视图组织成带编号的工具窗口(Project = 1,Cargo = Alt+1,Terminal = Alt+F12 等)。Zed 也有类似的概念,叫做"docks"(停靠面板):

RustRover 工具窗口 Zed 对应面板 快捷键(JetBrains 键位)
Project (1) Project Panel Cmd + 1
Git (9 或 Cmd+0) Git Panel Cmd + 0
Terminal (Alt+F12) Terminal Panel Alt + F12
Structure (7) Outline Panel Cmd + 7
Problems (6) Diagnostics Cmd + 6
Debug (5) Debug Panel Cmd + 5

Zed 有三个停靠位置:左侧、底部和右侧。面板可以通过拖拽或在设置中移动到不同位置。

注意,Zed 中没有专门的 Cargo 工具窗口。常用 Cargo 命令可以直接在终端执行,或者定义为任务(task)。

调试

RustRover 和 Zed 都支持 Rust 集成调试,但底层实现不同:

  • RustRover 使用自带的调试器集成
  • Zed 使用 CodeLLDB(VS Code 中广受欢迎的那个调试适配器)

在 Zed 中调试 Rust 代码:

  • Ctrl+F8 设置断点
  • Alt+Shift+F9 开始调试,或按 F4 选择调试目标
  • F7(单步进入)、F8(单步跳过)、Shift+F8(单步跳出)逐行调试
  • F9 继续执行

Zed 能自动检测 Cargo 项目中可调试的目标,按 F4 即可查看可用选项。

如需更精细的控制,可以创建一个 .zed/debug.json 文件:

[
  {
    "label": "Debug Binary",
    "adapter": "CodeLLDB",
    "request": "launch",
    "program": "${workspaceFolder}/target/debug/my_project"
  },
  {
    "label": "Debug Tests",
    "adapter": "CodeLLDB",
    "request": "launch",
    "cargo": {
      "args": ["test", "--no-run"],
      "filter": {
        "kind": "test"
      }
    }
  },
  {
    "label": "Debug with Arguments",
    "adapter": "CodeLLDB",
    "request": "launch",
    "program": "${workspaceFolder}/target/debug/my_project",
    "args": ["--config", "dev.toml"]
  }
]

运行测试

RustRover 拥有专用的测试运行器,通过可视化界面显示每个测试的通过/失败状态。Zed 则通过以下方式运行测试:

  • 侧边栏图标 — 点击 #[test] 函数或测试模块旁边的播放按钮
  • 任务 — 在 tasks.json 中定义 cargo test 命令
  • 终端 — 直接运行 cargo test

测试输出会显示在终端面板中。若需更详细的输出,请使用:

  • cargo test -- --nocapture 以查看 println! 的输出
  • cargo test -- --test-threads=1 以串行执行测试
  • cargo test specific_test_name 以运行单个测试

扩展与插件的区别

RustRover 提供了完整的 JetBrains 插件目录。

Zed 的扩展目录规模较小,但更专注于以下领域:

  • 语言支持与语法高亮
  • 主题
  • 上下文服务器(Context servers)

在其他编辑器中可能需要插件实现的若干功能,在 Zed 中已内置:

  • 带语音聊天的实时协作
  • AI 编码辅助
  • 内置终端
  • 任务运行器
  • rust-analyzer 集成
  • rustfmt 格式化

Zed 中尚未具备的功能

以下是 RustRover 提供而 Zed 目前尚未支持的功能:

  • 性能分析器集成 — 需使用 cargo flamegraphperf 或其他外部性能分析工具
  • 数据库工具 — 使用 DataGrip、DBeaver 或 TablePlus
  • HTTP 客户端 — 使用 curlhttpie 或 Postman 等工具
  • 覆盖率可视化 — 在外部使用 cargo tarpaulincargo llvm-cov

关于许可与遥测说明

关于许可与遥测:

  • Zed 是开源的(主要为 GPL 许可,部分组件采用 Apache 许可)
  • 遥测功能是可选的,可在入职引导期间或在设置中禁用

Zed 与 RustRover 的协作对比

RustRover 将“Code With Me”作为独立功能提供协作服务。Zed 则将协作功能直接集成在核心体验中。

连接后,你可以实时看到彼此的鼠标指针、选中和编辑操作。系统包含语音聊天功能。无需额外工具或第三方登录。

在 Zed 中使用 AI

Zed 内置了 AI 功能。如果你之前使用过 JetBrains AI Assistant,以下是设置方法。

配置 GitHub Copilot

  1. Cmd+,(macOS)或 Ctrl+,(Linux/Windows)打开设置
  2. 导航至 AI → 编辑预测
  3. 在“配置提供商”旁点击 配置
  4. GitHub Copilot 下,点击 登录 GitHub

登录完成后,直接开始输入即可。Zed 会在行内提供建议供你接受。

其他 AI 选项

要在 Zed 中使用其他 AI 模型,你有以下选择:

高级配置与生产力优化

Zed 为高级用户提供了丰富的设置项,方便精细化调整开发环境。

以下是一些对 Rust 开发者很实用的配置:

保存时格式化(默认使用 rustfmt):

"format_on_save": "on"

配置 Rust 的 inlay hints:

{
  "inlay_hints": {
    "enabled": true,
    "show_type_hints": true,
    "show_parameter_hints": true,
    "show_other_hints": true
  }
}

配置 rust-analyzer(需要手动编辑 JSON):

{
  "lsp": {
    "rust-analyzer": {
      "initialization_options": {
        "checkOnSave": {
          "command": "clippy"
        },
        "cargo": {
          "allFeatures": true
        },
        "procMacro": {
          "enable": true
        }
      }
    }
  }
}

为 rust-analyzer 使用独立的 target 目录(加快构建速度):

{
  "lsp": {
    "rust-analyzer": {
      "initialization_options": {
        "rust-analyzer.cargo.targetDir": true
      }
    }
  }
}

这样 rust-analyzer 会使用 target/rust-analyzer 而不是 target,IDE 的分析就不会和你手动执行的 cargo build 冲突了。

启用 direnv 支持(对使用 direnv 的 Rust 项目很有用):

"load_direnv": "shell_hook"

为工作区配置 linked projects:

如果你有多个不在同一 workspace 里的 Cargo 项目,可以把它们告诉 rust-analyzer:

{
  "lsp": {
    "rust-analyzer": {
      "initialization_options": {
        "linkedProjects": ["./project-a/Cargo.toml", "./project-b/Cargo.toml"]
      }
    }
  }
}

接下来做什么

环境搭建完成后,可以参考以下资源,充分发挥 Zed 的潜力:

  • 所有设置 — 自定义设置、主题及编辑器行为
  • 按键绑定 — 学习如何自定义和扩展键盘映射
  • 任务 — 为项目配置构建和运行命令
  • AI 功能 — 探索 Zed 超越代码补全的 AI 能力
  • 协作 — 实时共享项目并共同编写代码
  • Zed 中的 Rust — Rust 专用的配置与设置

评论 (0)