docs/src/repl.md
Zed's built-in REPL uses Jupyter kernels so you can run code interactively in regular editor files.
<figure style="width: 100%; margin: 0; overflow: hidden; border-top-left-radius: 2px; border-top-right-radius: 2px;"> <video loop controls playsinline> <source src="https://customer-snccc0j9v3kfzkif.cloudflarestream.com/aec66e79f23d6d1a0bee5e388a3f17cc/downloads/default.mp4" type='video/webm; codecs="vp8.0, vorbis"' /> <source src="https://customer-snccc0j9v3kfzkif.cloudflarestream.com/aec66e79f23d6d1a0bee5e388a3f17cc/downloads/default.mp4" type='video/mp4; codecs="avc1.4D401E, mp4a.40.2"' /> <source src="https://zed.dev/img/post/repl/typescript-deno-kernel-markdown.png" type="image/png" /> </video> </figure>Zed supports running code in multiple languages. To get started, you need to install a kernel for the language you want to use.
Currently supported languages:
Once installed, you can start using the REPL in the respective language files, or other places those languages are supported, such as Markdown. If you recently added the kernels, run the repl: refresh kernelspecs command to make them available in the editor.
To start the REPL, open a file with the language you want to use and use the repl: run command (defaults to ctrl-shift-enter on macOS) to run a block, selection, or line. You can also click on the REPL icon in the toolbar.
The repl: run command will be executed on your selection(s), and the result will be displayed below the selection.
Outputs can be cleared with the repl: clear outputs command, or from the REPL menu in the toolbar.
Zed supports notebooks as scripts using the # %% cell separator in Python and // %% in TypeScript. This allows you to write code in a single file and run it as if it were a notebook, cell by cell.
The repl: run command will run each block of code between the # %% markers as a separate cell.
# %% 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')
On macOS, your system Python will not work. Either set up pyenv or use a virtual environment.
</div>To setup your current Python to have an available kernel, run:
pip install ipykernel
python -m ipykernel install --user
source activate myenv
conda install ipykernel
python -m ipykernel install --user --name myenv --display-name "Python (myenv)"
source activate myenv
pip install ipykernel
python -m ipykernel install --user --name myenv --display-name "Python (myenv)"
Install Ark by downloading the release for your operating system. For example, for macOS just unpack ark binary and put it into /usr/local/bin. Then run:
ark --install
R in Zed Extensions)deno jupyter --install
Julia in Zed Extensions)cs setup (Coursier):
brew install coursier/formulas/coursier && cs setupbrew install --cask temurin (Eclipse foundation official OpenJDK binaries)brew install coursier/formulas/coursier && cs setupcoursier launch --use-bootstrap almond -- --installZed automatically detects available kernels and organizes them in the kernel picker:
Python environments appear in the picker even if ipykernel is not installed. Environments missing ipykernel are dimmed and labeled "ipykernel not installed." When you select one, Zed automatically runs pip install ipykernel in that environment and activates it once installation completes.
When you run code, Zed selects a kernel automatically:
You can override this by explicitly selecting a kernel from the picker.
To configure a different default kernel for a language, you can assign a kernel for any supported language in your settings.json:
{
"jupyter": {
"kernel_selections": {
"python": "conda-env",
"typescript": "deno",
"javascript": "deno",
"r": "ark"
}
}
}
When code execution requires user input (such as Python's input() function), the REPL displays an input prompt below the cell output.
Type your response in the text field and press Enter to submit. The kernel receives your input and continues execution.
For password inputs, characters appear masked with asterisks for security.
If execution is interrupted while an input prompt is active, the prompt automatically clears when the kernel returns to idle state.
Available kernels are shown via the repl: sessions command. To refresh the kernels you can run, use the repl: refresh kernelspecs command.
If you have jupyter installed, you can run jupyter kernelspec list to see the available kernels.
$ 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
Note: Zed makes best effort usage of
sys.prefixandCONDA_PREFIXto find kernels in Python environments. If you want explicitly control runpython -m ipykernel install --user --name myenv --display-name "Python (myenv)"to install the kernel directly while in the environment.