Zed: un editor rápido y moderno de código abierto#
zed es un editor de código y texto de código abierto, diseñado para ser rápido y fácil de usar. Está construido en Rust y utiliza una interfaz de usuario moderna e intuitiva. De momento es soportado de forma oficial en Linux y macOS, pero se está trabajando en su implementación para Windows (aunque existen versiones experimentales). Te contaré cómo instalarlo y algunas de sus características.
Instalación en Linux de Zed#
Si bien lo puedes instalar desde los repositorios de algunos gestores de paquetes, como sucede en mi caso que uso Manjaro, que puedo obtenerlo a través del AUR, mi método recomendado es usar el script de instalación oficial.
Respecto a las actualizaciones, si usas la versión instalada desde el script oficial, este se actualiza automáticamente.
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.
Características nativas de Zed#
Recientemente, Zed agregó el soporte nativo de Git, lo que permite equiparar contra VSCode en una de las características que podía ser un bloqueo para muchos desarrolladores. No es solo un soporte en la visualización de los cambios, historias o dirección a la versión web del cambio, sino también el soporte para la ejecución de acciones git con la interfaz de Zed.
También debo destacar como una parte vital de Zed, el algoritmo tree sitter, que es el analizador sintáctico usado en Zed de forma nativa con soporte incremental, lo que permite un mejor rendimiento posterior a la carga inicial.
El multibuffer es una característica que permite la edición de múltiples archivos al mismo tiempo, lo que permite una mayor eficiencia en la edición de código y se encuentra soportada de forma nativa. Para esto puedes hacer búsqueda general con Ctrl+Shift+F y hacer uso de la edición múltiple con Ctrl+Shift+L (desconozco si es un error, pero solo me funciona si tengo seleccionada la coincidencia de mayúsculas) o si deseamos en puntos específicos con Alt+Click (no es requerido que el punto seleccionado corresponda a la coincidencia de búsqueda).
También nos encontramos en Zed el soporte nativo de modelos LLM para la
asistencia por chat, permitiendo el paso de archivos de contextos, y en edición
directa en archivo. Mediante esta forma es posible usar distintos modelos de
LLM, incluyendo invocaciones a través de
Ollama y
LM Studio (lo que permite usar modelos locales como
qwen2.5:7b
, qwen2.5-coder:7b
o gemma3:4b
) o el soporte nativo de Claude,
Copilot y Gemini. También se puede usar la predicción en línea nativa con el
modelo Zeta que es un ajuste fino de qwen2.5-coder:7b
por Zed.
Por último, quiero destacar su soporte nativo de Notebook (soporte limitado a algunos lenguajes, pero incluye Python) a través de los kernels de Jupyter.
Extensiones recomendadas en Zed#
El sistema de extensiones de Zed se basa en elementos core en Rust y la
componente de interfaz con Zed en WASM (compilado con Rust). El directorio de
extensiones instaladas localmente se encuentra en
~/.local/share/zed/extensions
, y en caso de querer hacer pruebas de
versiones locales dispones para esto del directorio work
(si poseen
componente core en Rust) o solo installed
si es a nivel de interfaz y
WASM (esto lo revisé porque estaba probando cambios en el archivo de diccionario
de Codebook).
Si deseas instalar una extensión de Zed puedes usar el menú general con Ctrl+Shift+P y buscar zed: extensions, o directamente el atajo Ctrl+Shift+X.
Típicamente las extensiones se pueden configurar de forma global y por proyecto, con la gestión de configuración de Zed, pero algunas soportan archivos de configuración propios.
Extensiones de ortografía y gramática#
Codebook Spell checker: Ofrece LSP de corrección de ortografía basada en diccionarios hunspell a través de la implementación Rust de spellbook. Actualmente soporta inglés y español (tras un reporte que realicé), pero pronto soportará otros idiomas basados en los diccionarios de LibreOffice. Similar a Spell Right, la corrección puede ser en archivos de texto o de código. Está planeado el soporte de diccionarios locales. Posee configuración global y por proyecto (
codebook.toml
), pero es independiente de la configuración de Zed.LTex: Ofrece LSP de corrección gramatical basada en LanguageTool. La corrección se ofrece solo para archivos de texto. El modelo es instalado localmente.
Harper: Ofrece LSP de corrección gramatical en inglés tanto en archivos de texto como de código. Es una alternativa a LTex.
Extensiones para lenguajes de marcado#
En el caso de JSON, este es soportado de forma nativa en Zed. Para otros casos se recomiendan las siguientes extensiones:
Marksman: LSP para Markdown. Ofrece autocompletado de enlaces de Markdown, detección de enlaces rotos y direccionado a definiciones. Recomiendo complementarlo con mdformat como formateador. El formateado debe instalarse de forma independiente y configurarse en las opciones de Markdown.
Typst: LSP y gestión de compilado para Typst.
LaTeX: LSP y gestión de compilado para LaTeX.
reST: Soporte de resaltado de sintaxis. Se recomienda complementarlo con docstrfmt como formateador. Existe un LSP para reST, Esbonio, pero no es soportado por Zed.
Jinja2 Template Support: Resaltado de sintaxis y el LSP está en planeación.
XML: Soporte de resaltado de sintaxis. Se recomienda complementar con XML Pretty como formateador.
TOML: Soporte de resaltado y LSP.
Pest: Soporte de resaltado y LSP para el lenguaje de especificación de gramática de lenguaje Pest (PEG grammar en Rust).
Extensiones para lenguajes de programación#
Por defecto se incluye el soporte de LSP de algunos lenguajes de programación, mientras que otros pueden ser instalados por el usuario. También es posible mezclar LSP en un mismo lenguaje.
En mis casos de interés, Rust es soportado de forma nativa e incluye Rust Analyzer, y en el caso de Python por defecto se incluye el soporte de LSP con Pyright.
Extensiones de infraestructura#
Justfile: Ofrece resaltado de sintaxis y opción de ejecución de pasos.
env: Resaltado de sintaxis para archivos de entorno.
Dockerfile: Ofrece resaltado de sintaxis y LSP para archivos Dockerfile.
Docker Compose: resaltado de sintaxis.
Make: resaltado de sintaxis de Makefile.
Configuración de Zed#
Para ilustrar la configuración de Zed y su integración con herramientas de formateo y extensiones, vamos a instalar las herramientas necesarias para el formateo de MarkDown, reST y 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
También vamos a
instalar Ollama
y podemos disponer de un modelo local como qwen2.5:7b
(para efecto del ejemplo
del archivo de configuración).
Es importante que para la activación de la predicción de Zed, es necesario hacer login en Zed con nuestra cuenta de GitHub.
{
"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
}
}
}
}
}
Para la configuración del corrector hunspell de Codebook se dispone de un
archivo codebook.toml
en el directorio raíz del proyecto.
dictionaries = ["es"]
use_global = false
Para las herramientas de los lenguajes o externas que son estructuradas con sus
archivos de configuración ya conocidos, nos encontramos con el archivo de
ruff.toml
, pyproject.toml
o Cargo.toml
por poner un ejemplo. De estos no
voy a ilustrar por ser bien conocidos si requieres de estos lenguajes o
linters.