第10章 Zed 中的 REPL - Jupyter 内核
快速上手
Zed 内置的 REPL 基于 Jupyter kernels,允许你在常规编辑器文件中交互式地运行代码。
安装配置
Zed 支持多种语言的代码执行。要开始使用,你需要安装所使用语言的 kernel。
当前支持的语言:
安装完成后,你可以在相应语言的文件中,或其他支持该语言的地方(如 Markdown)开始使用 REPL。如果你刚刚添加 kernel,请运行 {#action repl::RefreshKernelspecs} 命令,使其在编辑器中可用。
使用 REPL
要启动 REPL,请打开你想使用的语言对应的文件,然后使用 {#action repl::Run} 命令(macOS 上默认为 ctrl-shift-enter)来执行代码块、选区或当前行。你也可以直接点击工具栏中的 REPL 图标。
{#action repl::Run} 命令将针对你选中的内容执行,结果会显示在选区下方。
你可以通过 {#action repl::ClearOutputs} 命令清除输出,也可以从工具栏的 REPL 菜单中操作。
Cell 模式
Zed 支持以脚本形式使用 notebook:Python 中用 # %%、TypeScript 中用 // %% 作为单元格分隔符。这样你就可以在单个文件里写代码,并像 notebook 一样逐单元格运行。
{#action repl::Run} 命令会把 # %% 标记之间的每段代码作为一个独立单元格来运行。
# %% Cell 1
import time
import numpy as np
# %% Cell 2
import matplotlib.pyplot as plt
import matplotlib.pyplot as plt
from matplotlib import style
style.use('ggplot')
各语言配置说明
Python
全局环境
要让当前的 Python 提供可用内核,请运行:
pip install ipykernel
python -m ipykernel install --user
Conda 环境
source activate myenv
conda install ipykernel
python -m ipykernel install --user --name myenv --display-name "Python (myenv)"
使用 pip 的 Virtualenv
source activate myenv
pip install ipykernel
python -m ipykernel install --user --name myenv --display-name "Python (myenv)"
注意:在 macOS 上,系统自带的 Python 是无法使用的。请配置 pyenv,或使用虚拟环境。Zed 对 Python toolchain 和 REPL 内核是分开选择的。如果诊断结果与 REPL 不一致,可用 {#action toolchain::Select} 让 toolchain 与内核保持一致。更多内容请参阅 Python 的 toolchain 选择器。
R(Ark 内核)
下载与你操作系统对应的发行版来安装 Ark。例如在 macOS 上,只需解压出 ark 二进制文件并放入 /usr/local/bin,然后运行:
ark --install
R(Xeus 内核)
- 安装 Xeus-R
- 为 Zed 安装 R 扩展(在 Zed 扩展中搜索
R)
TypeScript: Deno
- 安装 Deno,随后安装 Deno Jupyter 内核:
deno jupyter --install
Julia
- 从官方网站下载并安装 Julia。
- 为 Zed 安装 Julia 扩展(在 Zed 扩展中搜索
Julia)
Scala
- 使用
cs setup(Coursier)安装 Scala:brew install coursier/formulas/coursier && cs setup
- REPL(Almond)设置指南:
brew install --cask temurin(Eclipse 基金会官方 OpenJDK 二进制文件)brew install coursier/formulas/coursier && cs setupcoursier launch --use-bootstrap almond -- --install
按语言切换使用的内核
Zed 会自动检测可用的内核,并在内核选择器中列出:
- 推荐:与你当前激活的工具链匹配的 Python 环境(如果检测到)
- Python 环境:虚拟环境(venv, virtualenv, Poetry, Pipenv, Conda, uv 等)
- Jupyter 内核:已安装的 Jupyter kernelspecs
- 远程服务器:已连接的远程 Jupyter 服务器
安装 ipykernel
即使未安装 ipykernel,Python 环境也会出现在选择器中。缺少 ipykernel 的环境会变暗并显示“未安装 ipykernel”。选中该环境后,Zed 会自动在该环境中运行 pip install ipykernel,并在安装完成后将其激活。
Zed 如何推荐内核
运行代码时,Zed 会自动选择一个内核:
- 激活工具链匹配:如果某个 Python 环境与你当前激活的工具链匹配且已安装 ipykernel,Zed 将使用它
- 首个可用的 Python 环境:否则,选择第一个安装了 ipykernel 的 Python 环境
- 基于语言的备选方案:若没有 Python 环境就绪,Zed 将选择与代码块语言匹配的 Jupyter kernel
你可以从选择器中手动指定一个 kernel 来覆盖上述行为。
设置默认 Kernel
若要为特定语言配置不同的默认 kernel,可在 settings.json 中为任何支持的语言指定 kernel:
{
"jupyter": {
"kernel_selections": {
"python": "conda-env",
"typescript": "deno",
"javascript": "deno",
"r": "ark"
}
}
}
交互式输入
当代码执行需要用户输入时(例如调用 Python 的 input() 函数),REPL 会在代码单元的输出下方显示输入提示。
在文本框中输入响应并按下 Enter 键提交。Kernel 会接收该输入并继续执行。
对于密码输入,出于安全考虑,字符将以星号掩码显示。
如果在输入提示激活期间中断了执行,当 kernel 恢复空闲状态时,该提示将自动清除。
调试 Kernelspec
通过 {#action repl::Sessions} 命令可显示可用的 kernel。要刷新可用的 kernel,请使用 {#action repl::RefreshKernelspecs} 命令。
如果你已安装 jupyter,可以运行 jupyter kernelspec list 查看可用的 kernel。
$ jupyter kernelspec list
Available kernels:
ark /Users/z/Library/Jupyter/kernels/ark
conda-base /Users/z/Library/Jupyter/kernels/conda-base
deno /Users/z/Library/Jupyter/kernels/deno
python-chatlab-dev /Users/z/Library/Jupyter/kernels/python-chatlab-dev
python3 /Users/z/Library/Jupyter/kernels/python3
ruby /Users/z/Library/Jupyter/kernels/ruby
rust /Users/z/Library/Jupyter/kernels/rust
注意:Zed 会尽力利用
sys.prefix和CONDA_PREFIX在 Python 环境中查找 kernel。如果你想显式控制这一行为,可以在对应环境中运行python -m ipykernel install --user --name myenv --display-name "Python (myenv)"直接安装 kernel。