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

第140章 如何从 PyCharm 迁移到 Zed

本文介绍了从 PyCharm 迁移到 Zed 时如何配置 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 键盘映射

如果你从 PyCharm 迁移过来,使用 JetBrains 键盘映射是最快找回熟悉感的方式。在引导设置中,你可以将其选为基础键盘映射。如果当时漏了,之后随时可以更改:

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

这将映射熟悉的快捷键,例如用 Shift Shift 执行全局搜索,用 Cmd+O 跳转到类,用 Cmd+Shift+A 查找操作。

在编辑器中,JetBrains 键盘映射还让 Alt+Left / Alt+RightShift+Alt+Left / Shift+Alt+Right 能按单词片段移动和选词,使 camelCasesnake_case 等标识符表现得像 PyCharm 的驼峰导航一样。

配置编辑器偏好设置

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

PyCharm 用户通常会首先配置的设置:

Zed 设置项 作用
format_on_save 保存时自动格式化。设为 "on" 即可启用。
soft_wrap 自动换行。可选值:"none""editor_width""preferred_line_length"
preferred_line_length 换行和标尺的列宽。默认是 80,PEP 8 推荐的是 79。
inlay_hints 在代码中内联显示参数名和类型提示,类似 PyCharm 的提示功能。
relative_line_numbers 如果你是从 IdeaVim 转过来的,这个功能很有用。

Zed 还支持按项目单独配置。在项目根目录创建一个 .zed/settings.json 文件,即可覆盖该项目的全局设置,作用类似于 PyCharm 里的 .idea 文件夹。

提示:如果你加入的是一个已有项目,第一次提交前先检查一下 format_on_save 的配置。否则你可能只想改一行代码,结果整个文件都被重新格式化了。

打开或创建项目

完成初始设置后,按 Cmd+Shift+O(JetBrains 键位方案)即可打开文件夹,它就成为你在 Zed 中的工作区。和 PyCharm 不同,这里没有项目配置向导、没有解释器选择对话框,也不需要设置项目结构。

要新建项目,用终端或文件管理器创建一个目录,然后在 Zed 中打开它即可,编辑器会把该文件夹当作项目根目录。

你也可以在任意文件夹的终端里用以下命令启动 Zed: zed .

进入项目后:

  • Cmd+Shift+OCmd+E 在文件之间快速跳转(类似 PyCharm 的"Recent Files")
  • Cmd+Shift+AShift Shift 打开命令面板(类似 PyCharm 的"Search Everywhere")
  • Cmd+O 搜索符号(类似 PyCharm 的"Go to Symbol")

打开的文件以标签页的形式显示在顶部。项目面板展示文件树和 Git 状态,用 Cmd+1 切换显示(和 PyCharm 的 Project 工具窗口一样)。

快捷键差异

如果你在初始设置时选择了 JetBrains 键位方案,大部分快捷键应该已经让你感到熟悉了。下面是 Zed 与 PyCharm 的快捷键对照速查表。

通用快捷键

操作 快捷键
全局搜索 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

键位差异(PyCharm → Zed)

操作 PyCharm 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+AShift Shift
  • 执行 {#action zed::OpenKeymap}

这将打开所有可用快捷键的列表。你可以覆盖单个快捷键,或移除冲突项。

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

用户界面差异

无索引过程

如果你在大型项目中用过 PyCharm,肯定熟悉那种等待:"正在建立索引..."的时间从 30 秒到几分钟不等,具体取决于项目规模和依赖项。PyCharm 会为整个代码库构建全面索引以支持代码智能功能,并且在依赖项变更或安装新包时重新建立索引。

Zed 不进行索引。你只需打开文件夹即可立即开始工作,无论项目多大,文件搜索和导航始终快速响应,无需等待索引暂停。

PyCharm 的索引功能支撑着跨整个代码库查找所有用法、理解类层次结构以及检测未使用的导入等功能。Zed 将这些工作委派给语言服务器,它们可能无法进行如此深入或广泛的分析。

适应建议:

  • 进行项目范围符号搜索时,使用 Cmd+O / 转到符号(依赖语言服务器)
  • 按名称查找文件时,使用 Cmd+Shift+O / 转到文件
  • 跨文件文本搜索时,使用 Cmd+Shift+F——即使在大型代码库中也很快
  • 进行深度静态分析时,考虑在终端中运行 mypypylintruff check 等工具

LSP 与原生语言智能

PyCharm 拥有专为 Python 构建的语言分析引擎。该引擎能深刻理解你的代码:它能在无注解的情况下解析类型、跟踪数据流、识别 Django 模型和 Flask 路由,并提供专门的代码重构功能。

Zed 使用语言服务器协议(LSP)实现代码智能。对于 Python,Zed 默认提供多个语言服务器:

  • basedpyright(默认)—— 快速的类型检查和自动补全
  • Ruff(默认)—— 代码检查和格式化
  • ty—— 来自 Astral 的新兴语言服务器,专为速度打造
  • Pyright—— 微软的类型检查器
  • PyLSP — 基于插件的服务器,可集成各种工具

Python 的 LSP 体验相当成熟。basedpyright 能提供准确的代码补全、类型检查和跳转导航;Ruff 则以出色的性能负责格式化和代码检查。

可能让你感到不同的地方:

  • 没有内置针对特定框架的智能支持(如 Django ORM、Flask 路由)
  • 一些复杂的重构操作(比如带作用域分析的提取方法)可能没那么精细
  • 自动导入建议取决于语言服务器对你环境的了解程度

如何适应:

  • Alt+Enter 触发可用的代码操作——具体列表取决于语言服务器
  • 确保已选中虚拟环境,这样语言服务器才能正确解析依赖
  • 用 Ruff 做快速、统一的格式化(默认已启用)
  • 想要类似 PyCharm「Inspect Code」的代码检查,可以运行 ruff check . 或查看诊断面板(Cmd+6)——basedpyright 和 Ruff 组合起来能查出大部分同类问题

虚拟环境与解释器

在 PyCharm 里,你通过图形界面选择 Python 解释器,由 PyCharm 负责维护项目和解释器之间的关联:显示已安装的包、帮你安装新包,并记录每个项目使用的环境。

Zed 通过工具链(toolchain)系统来管理虚拟环境:

  • Zed 会自动发现常见位置的虚拟环境(.venvvenv.envenv
  • 检测到虚拟环境后,终端会自动激活它
  • 语言服务器会自动配置为使用发现的环境
  • 如果自动检测选错了,可以手动切换工具链

如何适应:

  • python -m venv .venvuv sync 创建虚拟环境
  • 在 Zed 中打开项目文件夹,它会自动检测环境
  • 需要切换环境时,使用工具链选择器
  • 使用 conda 环境时,先在 shell 中激活环境再启动 Zed

提示:如果 basedpyright 报告已安装包的导入错误,请检查 Zed 是否选中了正确的虚拟环境。使用工具链选择器确认或切换当前活动的环境。

没有项目模型

PyCharm 通过包含 XML 配置文件、解释器分配和运行配置的 .idea 文件夹来管理项目。这种模式让 PyCharm 能够记住你的解释器选择,通过 UI 管理依赖项,并持久化复杂的运行/调试设置。

Zed 没有项目模型。一个项目就是一个文件夹。没有向导,没有解释器选择界面,也没有项目结构配置。

这意味着:

  • 不存在运行配置。你需要定义任务或使用终端。你现有的 PyCharm 运行配置在 .idea/ 中不会被读取——你需要在 tasks.json 中重新创建所需的那些。
  • 解释器管理是外部的。Zed 可以发现环境,但不创建它们。
  • 依赖项通过 pip、uv、poetry 或 conda 管理——而不是通过编辑器。
  • 没有 Python 控制台(交互式 REPL)面板。请改用终端中的 pythonipython

如何适应:

  • 在项目根目录创建一个 .zed/settings.json 用于特定于项目的设置
  • tasks.json 中定义常用命令(通过命令面板打开:{#action zed::OpenTasks}):
[
  {
    "label": "run",
    "command": "python main.py"
  },
  {
    "label": "test",
    "command": "pytest"
  },
  {
    "label": "test current file",
    "command": "pytest $ZED_FILE"
  }
]
  • 使用 Ctrl+Alt+R 快速运行任务
  • 对于任务未涵盖的功能,依赖终端(Alt+F12

没有框架集成

PyCharm Professional 对 Web 开发的价值很大程度上来自于其框架集成。Django 模板可被理解并导航。Flask 路由已被索引。SQLAlchemy 模型获得特殊处理。模板变量支持自动补全。

Zed 没有这些限制。语言服务器将 Python 代码视为纯粹的 Python 代码——它不理解 @app.route 定义了一个端点,也不了解 Django 模型类会创建数据库表。

如何适应:

  • 灵活使用 grep 和文件搜索。Cmd+Shift+F 配合正则表达式可以查找路由定义、模型类或模板使用位置。
  • 依赖语言服务器的“查找引用”功能(Alt+F7)进行导航——它是有效的,只是缺少框架上下文。
  • 考虑在 Zed 的终端中使用框架特定的 CLI 工具(如 python manage.pyflask routes)。

提示: 进行数据库工作时,可以选用 DataGrip、DBeaver 或 TablePlus 等专用工具。许多转向 Zed 的开发者会专门保留 DataGrip 用于 SQL 操作。

工具窗口与停靠面板

PyCharm 将辅助视图组织为编号的工具窗口(如 Project = 1, Python Console = 4, Terminal = Alt+F12 等)。Zed 使用类似的概念,称为“停靠面板”(docks):

PyCharm 工具窗口 Zed 对应功能 快捷键 (JetBrains 键位)
Project (1) 项目面板 Cmd + 1
Git (9 或 Cmd+0) Git 面板 Cmd + 0
Terminal (Alt+F12) 终端面板 Alt + F12
Structure (7) 大纲面板 Cmd + 7
Problems (6) 诊断 Cmd + 6
Debug (5) 调试面板 Cmd + 5

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

调试

PyCharm 和 Zed 都提供集成调试功能,但体验有所不同:

  • Zed 使用 debugpy(即 VS Code 使用的同一调试适配器)。
  • 使用 Ctrl+F8 设置断点。
  • 使用 Alt+Shift+F9 开始调试,或按 F4 并选择一个调试目标。
  • 使用 F7(单步进入)、F8(单步跳过)和 Shift+F8(单步跳出)逐步执行代码。
  • 使用 F9 继续执行。

Zed 能自动检测可调试的入口点。按下 F4 即可查看可用选项,包括:

  • Python 脚本
  • 模块
  • pytest 测试

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

[
  {
    "label": "Debug Current File",
    "adapter": "Debugpy",
    "program": "$ZED_FILE",
    "request": "launch"
  },
  {
    "label": "Debug Flask App",
    "adapter": "Debugpy",
    "request": "launch",
    "module": "flask",
    "args": ["run", "--debug"],
    "env": {
      "FLASK_APP": "app.py"
    }
  }
]

运行测试

PyCharm 有专门的测试运行器,用可视化界面展示每个测试的通过/失败状态。Zed 提供以下几种运行测试的方式:

  • Gutter 图标——点击测试函数或类旁边的播放按钮
  • Tasks——在 tasks.json 中定义 pytest 或 unittest 命令
  • 终端——直接运行 pytest

测试输出会显示在终端面板中。运行 pytest 时,可以用 --tb=short 获得简洁的 traceback,或用 -v 输出详细信息。

扩展与插件

PyCharm 拥有庞大的插件目录,覆盖语言支持、数据库工具、部署集成等方方面面。

Zed 的扩展目录规模更小,也更聚焦:

  • 语言支持与语法高亮
  • 主题
  • Context server

PyCharm 中一些需要装插件才能实现的功能,在 Zed 里都是内置的:

  • 带语音聊天的实时协作
  • AI 编程辅助
  • 内置终端
  • 任务运行器
  • 基于 LSP 的代码智能
  • Ruff 格式化与代码检查

Zed 缺少的功能

先把预期说清楚,以下是 PyCharm 有而 Zed 没有的功能:

  • 科学模式 / Jupyter 集成——如果需要 notebook 和数据科学工作流,可以搭配 JupyterLab 或带 Jupyter 扩展的 VS Code,与 Zed 配合进行 Python 编辑
  • 数据库工具——可以使用 DataGrip、DBeaver 或 TablePlus
  • Django/Flask 模板导航 — 使用文件搜索和 grep
  • 可视化包管理器 — 在终端使用 pip、uv 或 poetry
  • 远程解释器 — Zed 支持远程开发,但机制不同
  • Profiler 集成 — 在外部使用 cProfile、py-spy 或类似工具

Zed 与 PyCharm 中的协作功能对比

PyCharm 通过独立的 Code With Me 插件提供协作功能。Zed 则将协作直接整合到核心体验中。

连接成功后,你可以实时看到彼此的光标、选区和编辑操作。系统内置了语音聊天功能,无需依赖单独的工具或第三方登录。

在 Zed 中使用 AI

如果你习惯在 PyCharm 中使用 AI 助手(如 GitHub Copilot 或 JetBrains AI Assistant),Zed 也提供类似功能,且具备更高的灵活性。

配置 GitHub Copilot

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

登录后,只需开始输入,Zed 就会提供内联建议供你接受。

其他 AI 选项

若想在 Zed 中使用其他 AI 模型,你有以下几种选择:

高级配置与生产力优化

Zed 为希望精细调整环境的高级用户提供了详细的设置选项。

以下是一些实用的调整建议:

保存时格式化:

"format_on_save": "on"

启用 direnv 支持(适用于使用 direnv 的 Python 项目):

"load_direnv": "shell_hook"

自定义虚拟环境检测(需手动编辑 JSON):

{
  "terminal": {
    "detect_venv": {
      "on": {
        "directories": [".venv", "venv", ".env", "env"],
        "activate_script": "default"
      }
    }
  }
}

配置 basedpyright 类型检查严格程度:

如果觉得 basedpyright 过于严格或过于宽松,可在项目根目录的 pyrightconfig.json 中配置:

{
  "typeCheckingMode": "basic"
}

可选值包括 "off""basic""standard"(默认)、"strict""all"

后续步骤

配置完成后,借助以下资源充分发挥 Zed 的潜力:

  • 全部设置 — 自定义设置、主题和编辑器行为
  • 快捷键绑定 — 学习和自定义键盘映射
  • 任务 — 为项目设置构建和运行命令
  • AI 功能 — 探索 Zed 在代码补全之外的 AI 能力
  • 协作 — 实时共享项目和代码进行协同开发
  • Zed 中的 Python — Python 专用设置和配置

评论 (0)