Zed: A fast and modern open source editor#
zed is an open-source code and text editor, designed to be fast and easy to use. It is built in Rust and uses a modern and intuitive user interface. It is currently officially supported on Linux and macOS, but work is underway for Windows implementation (although experimental versions exist). I will tell you how to install it and some of its features.
Installing Zed on Linux#
Although you can install it from the repositories of some package managers, as is my case using Manjaro where I can get it through AUR, my recommended method is to use the official installation script.
Regarding updates, if you use the version installed from the official script, it updates automatically.
Si como yo dispones de un GPU híbrida, te recomiendo seguir la entrada Problemas con Wayland y NVIDIA para solucionar los problemas que puedas tener. El uso de la GPU es lo que permite un rápido renderizado de Zed.
If, like me, you have a hybrid GPU, I recommend following the post Issues with Wayland and NVIDIA to solve any problems you may have. GPU usage is what allows Zed’s fast rendering.
Native features of Zed#
Recently, Zed added native Git support, allowing it to match VSCode in one of the features that could be a blocker for many developers. It is not just support for visualizing changes, history, or directing to the web version of the change, but also support for executing git actions with the Zed interface.
I must also highlight as a vital part of Zed, the tree sitter algorithm, which is the parser used in Zed natively with incremental support, allowing better performance after initial load.
The multibuffer is a feature that allows editing multiple files at the same time, allowing greater efficiency in code editing and is supported natively. For this you can do general search with Ctrl+Shift+F and make use of multiple editing with Ctrl+Shift+L (I don’t know if it’s a bug, but it only works for me if I have match case selected) or if we want specific points with Alt+Click (it is not required that the selected point corresponds to the search match).
We also find in Zed native support for LLM models for chat assistance, allowing
context files to be passed, and direct editing in file. Through this way it is
possible to use different LLM models, including invocations through
Ollama and
LM Studio (which allows using local models like
qwen2.5:7b, qwen2.5-coder:7b or gemma3:4b) or native support for Claude,
Copilot and Gemini. You can also use native inline prediction with the Zeta
model which is a fine-tune of qwen2.5-coder:7b by Zed.
Finally, I want to highlight its native Notebook support (support limited to some languages, but includes Python) through Jupyter kernels.
Recommended extensions in Zed#
The Zed extension system is based on core elements in Rust and the interface
component with Zed in WASM (compiled with Rust). The directory of locally
installed extensions is found in ~/.local/share/zed/extensions, and in
case you want to test local versions you have the work directory (if
they possess core component in Rust) or just installed if it is at the
interface and WASM level (I checked this because I was testing changes in the
Codebook dictionary file).
If you want to install a Zed extension you can use the general menu with Ctrl+Shift+P and search zed: extensions, or directly the shortcut Ctrl+Shift+X.
Typically extensions can be configured globally and per project, with Zed configuration management, but some support their own configuration files.
Spelling and grammar extensions#
Codebook Spell checker: Offers spelling correction LSP based on hunspell dictionaries through the Rust implementation of spellbook. Currently supports English and Spanish (after a report I made), but will soon support other languages based on LibreOffice dictionaries. Similar to Spell Right, correction can be in text or code files. Local dictionary support is planned. Possesses global and per-project configuration (
codebook.toml), but is independent of Zed configuration.LTex: Offers grammar correction LSP based on LanguageTool. Correction is offered only for text files. The model is installed locally.
Harper: Offers grammar correction LSP in English in both text and code files. It is an alternative to LTex.
Extensions for markup languages#
In the case of JSON, this is supported natively in Zed. For other cases the following extensions are recommended:
Marksman: LSP for Markdown. Offers autocomplete of Markdown links, detection of broken links and addressing to definitions. I recommend complementing it with mdformat as a formatter. The formatter must be installed independently and configured in Markdown options.
Typst: LSP and compilation management for Typst.
LaTeX: LSP and compilation management for LaTeX.
reST: Syntax highlighting support. It is recommended to complement it with docstrfmt as a formatter. There is an LSP for reST, Esbonio, but it is not supported by Zed.
Jinja2 Template Support: Syntax highlighting and LSP is in planning.
XML: Syntax highlighting support. It is recommended to complement with XML Pretty as a formatter.
TOML: Highlighting and LSP support.
Pest: Highlighting and LSP support for the Pest grammar specification language (PEG grammar in Rust).
Extensions for programming languages#
By default, LSP support for some programming languages is included, while others can be installed by the user. It is also possible to mix LSP in the same language.
In my cases of interest, Rust is supported natively and includes Rust Analyzer, and in the case of Python by default LSP support is included with Pyright.
Infrastructure extensions#
Justfile: Offers syntax highlighting and step execution option.
env: Syntax highlighting for environment files.
Dockerfile: Offers syntax highlighting and LSP for Dockerfile files.
Docker Compose: syntax highlighting.
Make: Makefile syntax highlighting.
Zed Configuration#
To illustrate Zed configuration and its integration with formatting tools and extensions, we are going to install the necessary tools for formatting MarkDown, reST and XML.
uv tool install mdformat \
--with mdformat-gfm \
--with mdformat-frontmatter \
--with mdformat-footnote \
--with mdformat-gfm-alerts \
--with mdformat-myst \
--with mdformat-admon
uv tool install docstrfmt --with sphinx
cargo install xml-pretty
We are also going to
install Ollama
and we can have a local model like qwen2.5:7b (for the purpose of the
configuration file example).
It is important that for the activation of Zed prediction, it is necessary to login to Zed with our GitHub account.
{
"assistant": {
"default_model": {
"provider": "ollama",
"model": "qwen2.5:7b"
},
"version": "2"
},
"features": {
"edit_prediction_provider": "zed"
},
"ui_font_size": 16,
"buffer_font_size": 16,
"theme": {
"mode": "system",
"light": "One Light",
"dark": "One Dark"
},
"languages": {
"Markdown": {
"format_on_save": "on",
"formatter": {
"external": {
"command": "mdformat",
"arguments": ["--number", "--wrap", "80", "--extensions", "myst", "-"]
}
}
},
"XML": {
"format_on_save": "on",
"formatter": {
"external": {
"command": "xml-pretty",
"arguments": ["-i", "2"]
}
}
},
"reST": {
"format_on_save": "on",
"formatter": {
"external": {
"command": "docstrfmt",
"arguments": ["-"]
}
}
},
"Python": {
"language_servers": ["pyright", "ruff"],
"format_on_save": "on",
"formatter": [
{
"code_actions": {
"source.organizeImports.ruff": true,
"source.fixAll.ruff": true
}
},
{
"language_server": {
"name": "ruff"
}
}
]
}
},
"lsp": {
"ltex": {
"settings": {
"ltex": {
"language": "es", // en-us
"enabled": true,
"completionEnabled": false
}
}
}
}
}
For the configuration of the Codebook hunspell corrector, a codebook.toml file
is available in the project root directory.
dictionaries = ["es"]
use_global = false
For language or external tools that are structured with their already known
configuration files, we find the ruff.toml, pyproject.toml or Cargo.toml
file to give an example. I am not going to illustrate these because they are
well known if you require these languages or linters.