{
// 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 }}
}
# 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
| 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 |
| 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 |
| 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 |
| 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 |
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.
// 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"
// settings.json — añadir provider key
"language_models": {
"anthropic": {
"api_key": "sk-ant-..."
}
}
// O via variable de entorno
export ANTHROPIC_API_KEY="sk-ant-..."
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).
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.
Follow mode activo
Ves exactamente el mismo archivo, posición de scroll y cursor. Ideal para code review remoto o onboarding.
Salir de follow mode
Mueve el cursor o escribe. Automáticamente vuelves al modo independiente sin interrumpir al otro.
Click en "Share" en la barra de título
O usa la paleta: Cmd+Shift+P → collaboration::ShareProject
Copiar el enlace de invitación
Envíalo por Slack/Discord. Los colaboradores abren el enlace y Zed se conecta automáticamente.
Edición simultánea sin conflictos
CRDT (similar a Yjs) resuelve edits concurrentes. Cada cursor tiene un color único. Diagnósticos LSP compartidos.
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.
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]
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"
# 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.
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.
Formatter por lenguaje, siempre
Prettier para TS/Astro, Ruff para Python, rustfmt para Rust. format_on_save: "on" evita discusiones de estilo en PRs.
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.
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.
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.
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.
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.
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.