Zed

Zed Editor — Guía Experta

Configuración avanzada, atajos, IA integrada y colaboración en tiempo real

Rust + WASM IA Nativa Colaboración CRDT GPU-accelerated
preparado para
CULTIVA IA
Stack: TS / Python / Rust / Astro
settings.json — Stack CULTIVA IA
Configuración JSON lista para el entorno de desarrollo TypeScript + Python + Rust + Astro de CULTIVA.
⚙️
~/.config/zed/settings.json
Configuración principal — CULTIVA IA
{
  // Apariencia
  "theme": "One Dark",
  "ui_font_size": 14,
  "buffer_font_family": "JetBrains Mono",
  "buffer_line_height": { "custom": 1.6 },

  // Vim mode
  "vim_mode": true,
  "vim": {
    "use_system_clipboard": "always",
    "use_smartcase_find": true
  },

  // IA → Claude Sonnet
  "assistant": {
    "enabled": true,
    "default_model": {
      "provider": "anthropic",
      "model": "claude-sonnet-4-20250514"
    },
    "version": "2"
  },

  // No completar en .env ni claves
  "inline_completions": {
    "disabled_globs": [
      ".env", ".env.*", "*.pem", "*.key"
    ]
  },

  // Formatters por lenguaje
  "languages": {
    "TypeScript": {
      "tab_size": 2,
      "formatter": { "external": {
        "command": "prettier",
        "arguments": ["--stdin-filepath", "{buffer_path}"]
      }}
    },
    "Python": {
      "tab_size": 4,
      "formatter": { "external": {
        "command": "ruff",
        "arguments": ["format", "--stdin-filename", "{buffer_path}"]
      }}
    },
    "Rust": {
      "tab_size": 4,
      "formatter": "language_server"
    }
  },

  // Git inline blame
  "git": {
    "inline_blame": { "enabled": true, "delay_ms": 500 },
    "git_gutter": "tracked_files"
  },

  "autosave": { "after_delay": { "milliseconds": 1000 }}
}
📊
Rendimiento vs VS Code
Zed en el stack CULTIVA IA
Arranque del editor
~200ms
Autocompletado LSP
<50ms
Búsqueda en proyecto (10K archivos)
~80ms
Latencia colaboración
<50ms
Uso RAM (proyecto Next.js)
~180MB
🛠️
Instalación macOS
Setup inicial para el equipo
# 1. Instalar Zed
brew install --cask zed

# 2. CLI en PATH
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

# 3. Abrir proyecto CULTIVA
zed ~/cultivaia-next

# 4. Instalar tools de formateo
npm i -g prettier
pip install ruff
# rustfmt viene con rustup
Atajos de teclado optimizados
keymap.json configurado para el workflow CULTIVA IA: modo Vim + atajos de productividad + acciones de IA rápidas.
🌐
Workspace global
Disponibles en todo momento
Cmd+P Abrir archivo rápido (fuzzy) Nav
Cmd+Shift+P Paleta de comandos Nav
Cmd+Shift+F Búsqueda en proyecto Buscar
Cmd+B Toggle panel lateral (árbol) UI
Cmd+J Toggle terminal integrado UI
Cmd+Shift+A Panel de asistente IA (Claude) IA
Cmd+Shift+I Toggle completado inline IA IA
✏️
Editor — edición y selección
Con foco en un buffer
Cmd+D Seleccionar siguiente coincidencia (multi-cursor) Selección
Cmd+Shift+L Seleccionar todas las ocurrencias Selección
Alt+ / Mover línea arriba/abajo Editar
Cmd+Shift+K Eliminar línea actual Editar
Cmd+/ Comentar / descomentar línea Editar
Ctrl+L Inline Assist IA en selección IA
F12 Ir a definición (LSP) LSP
🔰
Modo Vim — atajos con Space
Lider key: <Space>
Space f File finder (fuzzy) Nav
Space g Búsqueda global en proyecto Buscar
Space e Árbol de archivos UI
Space a Panel asistente IA IA
Space t Terminal panel Terminal
gc (visual) Comentar bloque seleccionado Editar
gd Go to definition LSP
Navegación rápida
Flujo sin ratón
Cmd+T Buscar símbolo en proyecto Nav
Cmd+R Símbolos en archivo actual Nav
Ctrl+G Ir a línea número Nav
Cmd+[ / ] Anterior / siguiente tab Tabs
Cmd+W Cerrar tab actual Tabs
Cmd+K Cmd+ Split editor arriba Layout
Cmd+K Cmd+ Split editor derecha Layout
IA integrada con Claude
Workflows prácticos de IA para el equipo CULTIVA IA usando Claude Sonnet como modelo por defecto en Zed.

Inline Assist — edición IA en cursor (Ctrl+L)

Selecciona código → Ctrl+L → escribe la instrucción. El modelo edita directamente el buffer. Ideal para refactors rápidos sin salir del flujo.

Prompts frecuentes para CULTIVA IA
Instrucciones con Ctrl+L en selección
// TypeScript / Next.js
"Add TypeScript types to this function"
"Refactor to use async/await"
"Add Zod validation schema"
"Convert to a React Server Component"
"Add error boundary handling"

// Python / Agentes
"Add type hints and docstring"
"Rewrite with async def"
"Add LangChain tool decorator"
"Add retry logic with tenacity"

// Rust / WASM
"Add error handling with Result<>"
"Implement the Display trait"
"Add serde Serialize/Deserialize"
🔑
Configurar API key de Anthropic
Una vez, en settings.json
// settings.json — añadir provider key
"language_models": {
  "anthropic": {
    "api_key": "sk-ant-..."
  }
}

// O via variable de entorno
export ANTHROPIC_API_KEY="sk-ant-..."
💬
Panel Asistente (Cmd+Shift+A)
Slash commands disponibles
/file Incluye un archivo específico como contexto
/tab Incluye todos los tabs abiertos como contexto
/diagnostics Incluye errores/warnings del LSP activos
/selection Incluye el código seleccionado actualmente
/terminal Incluye el output reciente del terminal

Workflow recomendado para PR review

1. Abre el panel IA (Cmd+Shift+A)
2. Escribe /tab para añadir todos los archivos cambiados
3. Pregunta: "Review these changes for bugs, type errors and missing edge cases"
4. Claude revisará con contexto completo del diff

Contexto multi-archivo para agentes CULTIVA

Arrastra agent/tools.py + agent/chain.py + agent/config.py al panel IA. Luego pregunta cambios arquitecturales. Zed mantiene el contexto completo en la conversación.

Tip: modelo por conversación

En el panel IA puedes cambiar el modelo para una conversación específica. Usa Claude Sonnet para la mayoría; cambia a Haiku para tareas rápidas/baratas (generar tipos, docstrings masivos).

Colaboración en tiempo real
Sesiones de pair programming y code review para el equipo CULTIVA IA (3 devs + diseñador). CRDT nativo, sin conflictos, <50ms de latencia.
👥
Sesión activa — cultivaia-next
3 colaboradores conectados ahora
AL
Álvaro — Lead Dev
editando: app/api/agents/route.ts
● editando
MR
Marta — Backend
siguiendo cursor de Álvaro
◎ siguiendo
JC
Jorge — Diseñador-Dev
viendo: components/ui/Button.tsx
○ inactivo
🎯
Follow mode — code review
Ver exactamente lo que ve otro colaborador
1

Click en el avatar del colaborador

En la barra superior, haz click en el avatar de quien quieres seguir. Tu vista se sincroniza con la suya.

2

Follow mode activo

Ves exactamente el mismo archivo, posición de scroll y cursor. Ideal para code review remoto o onboarding.

3

Salir de follow mode

Mueve el cursor o escribe. Automáticamente vuelves al modo independiente sin interrumpir al otro.

🚀
Arrancar una sesión nueva
Compartir proyecto con el equipo
1

Click en "Share" en la barra de título

O usa la paleta: Cmd+Shift+Pcollaboration::ShareProject

2

Copiar el enlace de invitación

Envíalo por Slack/Discord. Los colaboradores abren el enlace y Zed se conecta automáticamente.

3

Edición simultánea sin conflictos

CRDT (similar a Yjs) resuelve edits concurrentes. Cada cursor tiene un color único. Diagnósticos LSP compartidos.

4

Voice chat integrado

Canal de voz en la sesión, sin Zoom ni Discord. Todos en el mismo contexto, hablando y codificando.

Terminal compartido

El host puede compartir su terminal. Los colaboradores ven el output en tiempo real — útil para mostrar errores de build, tests corriendo o logs del servidor de desarrollo.

Tecnica: pair programming asíncrono

Inicia sesión → deja la URL en Notion/Linear del ticket → otro dev se une cuando puede. El historial de cambios persiste en git. Sin coordinación de horarios.

Extensión Rust — cultiva-lsp-tools
Extensión WASM personalizada para automatizar tareas internas de CULTIVA IA: generación de tipos, templates y snippets de agentes LangChain.
🦀
src/lib.rs — Extensión CULTIVA IA
Rust compilado a WASM, sandboxed
use zed_extension_api::{self as zed, Result};

struct CultivaToolsExtension;

impl zed::Extension for CultivaToolsExtension {
  fn new() -> Self {
    CultivaToolsExtension
  }

  fn language_server_command(
    &mut self,
    _lsp_id: &zed::LanguageServerId,
    worktree: &zed::Worktree,
  ) -> Result<zed::Command> {
    // Detectar tipo de proyecto CULTIVA
    let is_next = worktree
      .read_text_file("next.config.ts")
      .is_ok();

    let binary = if is_next {
      "cultiva-ts-tools"
    } else {
      "cultiva-py-tools"
    };

    Ok(zed::Command {
      command: binary.to_string(),
      args: vec!["--stdio".to_string()],
      env: Default::default(),
    })
  }
}

zed::register_extension!(CultivaToolsExtension);
📋
extension.toml — Manifest
Definición de la extensión
[extension]
id = "cultiva-tools"
name = "Cultiva IA Tools"
version = "0.1.0"
schema_version = 1
authors = ["CULTIVA IA <dev@cultivaia.com>"]
description = "Custom LSP tools for CULTIVA IA projects"

[language_servers.cultiva-ts]
language = "TypeScript"

[language_servers.cultiva-py]
language = "Python"
🔨
Build y desarrollo
Comandos de compilación
# Instalar target WASM
rustup target add wasm32-wasi

# Compilar extensión
cargo build --release \
  --target wasm32-wasi

# Instalar localmente para testing
mkdir -p ~/.config/zed/extensions/cultiva-tools
cp target/wasm32-wasi/release/*.wasm \
  ~/.config/zed/extensions/cultiva-tools/

# Reload extensiones en Zed
# Cmd+Shift+P → "zed: reload extensions"

Seguridad: sandbox WASM

Las extensiones corren en un sandbox WebAssembly aislado. No tienen acceso al sistema de archivos ni red directamente — todo pasa por la API de Zed. Actualiza el hash en extension.toml al publicar.

Buenas prácticas para CULTIVA IA
8 principios para sacar el máximo a Zed en el día a día del equipo. Extraídos de las guidelines oficiales adaptadas al stack CULTIVA.
01

Vim mode es first-class

La emulación de Vim de Zed es excelente y activa por defecto en esta config. Combina los motions de Vim con los Space-bindings propios para máxima velocidad.

02

Formatter por lenguaje, siempre

Prettier para TS/Astro, Ruff para Python, rustfmt para Rust. format_on_save: "on" evita discusiones de estilo en PRs.

03

Contexto IA = mejor output

Arrastra archivos relevantes al panel IA antes de preguntar. /tab para incluir todo lo abierto. Más contexto → respuestas más precisas de Claude.

04

Inline assist para edits rápidos

Selecciona código + Ctrl+L es 10x más rápido que copiar-pegar en un chat. El modelo edita directamente el buffer con el contexto del archivo completo.

05

Follow mode en code reviews

Click en el avatar del autor del PR para ver exactamente lo que ve. Mejor que compartir pantalla: ambos pueden editar en tiempo real.

06

Autosave con 1000ms de delay

Evita writes constantes a disco mientras escribes. El archivo se guarda al dejar de teclear por 1 segundo — el LSP recoge los cambios sin interrupciones.

07

Extensiones en WASM/Rust

Las extensiones corren sandboxed en WebAssembly. Para la extensión cultiva-tools: rustup target add wasm32-wasi y cargo build --target wasm32-wasi.

08

Keyboard-first, sin ratón

Cmd+P (archivos), Cmd+Shift+P (comandos), Cmd+T (símbolos). En 3 semanas el equipo navega más rápido que en cualquier editor con ratón.