Capitulo 6: Git, Terminal y Depuracion en Zed
Capitulo 6: Git, Terminal y Depuracion
Zed integra Git, terminal y un depurador basado en DAP para que trabajes de principio a fin sin salir del editor.
Anterior: Capitulo 5: Colaboracion | Siguiente: Capitulo 7: Extensiones y Personalizacion
Git Integrado
Panel de Git
Abre el panel de Git con Ctrl+G G o desde la paleta de comandos > “git panel: toggle focus”.
El panel muestra:
- Archivos modificados: Con indicador de estado (modified, added, deleted, untracked)
- Area de staging: Archivos preparados para commit
- Campo de mensaje: Para escribir el mensaje de commit
Staging de Archivos
Hay varias formas de hacer staging:
- Individual: Haz click en la casilla junto a cada archivo
- Todo: Usa la paleta de comandos > “git: stage all”
- Por hunks: En el diff, haz staging de cambios individuales dentro de un archivo
Crear Commits
- Prepara los archivos en staging
- Escribe el mensaje de commit en el campo de texto
- Presiona
Cmd+Enter/Ctrl+Enterpara confirmar
Mensajes de Commit con IA
Zed puede generar mensajes de commit usando IA:
- Prepara tus cambios en staging
- Enfoca el campo de mensaje de commit
- Haz click en el icono de lapiz o ejecuta “git: generate commit message”
- El modelo analiza los diffs y propone un mensaje descriptivo
Requiere un proveedor de IA configurado (ver Capitulo 4).
Gestion de Ramas
| Accion | Comando |
|---|---|
| Crear rama | Paleta > “git: branch” |
| Cambiar rama | Paleta > “git: switch” |
| Eliminar rama | Desde el selector de ramas |
El selector de ramas muestra todas las ramas locales y remotas con busqueda fuzzy.
Diffs
Diff Inline
Los cambios se muestran directamente en el editor con indicadores en el margen:
- Verde: Lineas añadidas
- Rojo: Lineas eliminadas
- Amarillo: Lineas modificadas
Haz click en el indicador del margen para expandir el hunk y ver el cambio completo.
Project Diff
Abre una vista completa de todos los cambios del repositorio con Ctrl+G D o “project diff: deploy”.
El Project Diff muestra:
- Todos los archivos modificados en un multibuffer editable
- Resaltado de palabras cambiadas dentro de cada linea
- Opciones para hacer staging/unstaging por hunk o archivo completo
- Navegacion rapida entre cambios
Inline Blame
Zed muestra la informacion de git blame en la linea actual: quien hizo el ultimo cambio, cuando y el mensaje del commit.
Historial de Archivo
Accede al historial de commits de un archivo individual desde la paleta > “file history”. Muestra autor, fecha y mensaje de cada commit. Selecciona un commit para ver su diff filtrado.
Resolucion de Conflictos
Cuando hay conflictos de merge, Zed muestra las regiones conflictivas con colores:
- Verde: Cambios de tu rama (current)
- Azul: Cambios entrantes (incoming)
Tres opciones de resolucion:
- Aceptar actual: Mantener tus cambios
- Aceptar entrante: Usar los cambios que llegan
- Aceptar ambos: Combinar ambos bloques
Stashing
| Accion | Comando |
|---|---|
| Stash all | Paleta > “git: stash all” |
| Stash pop | Paleta > “git: stash pop” |
| Ver stashes | Desde el panel de Git |
Operaciones Remotas
| Accion | Comando |
|---|---|
| Fetch | Paleta > “git: fetch” |
| Push | Paleta > “git: push” |
| Pull | Paleta > “git: pull” |
Si tienes multiples remotos, Zed te permite seleccionar cual usar.
Permalinks
Genera enlaces permanentes al codigo en servicios Git (GitHub, GitLab):
- Click derecho > “Copy Permalink”
- Comparte la URL con el contexto exacto de linea y commit
Terminal Integrada
Abrir la Terminal
| Accion | macOS | Linux/Windows |
|---|---|---|
| Toggle terminal | Ctrl+` | Ctrl+` |
| Nueva terminal | Paleta > “terminal: new” | Paleta > “terminal: new” |
Configuracion de Terminal
{
"terminal": {
"shell": {
"program": "/bin/zsh"
},
"font_family": "JetBrains Mono",
"font_size": 13,
"line_height": "comfortable",
"working_directory": "current_project_directory",
"blinking": "on",
"env": {
"EDITOR": "zed --wait"
}
}
}
Funcionalidades de la Terminal
- Multiples terminales: Abre varias instancias y navega entre ellas
- Splits: Divide la terminal horizontal o verticalmente
- Deteccion de paths: Haz
Cmd+Click/Ctrl+Clicken rutas para abrir archivos - Integracion con el inline assistant: Selecciona un comando y pide ayuda a la IA
Usar Zed como Editor por Defecto
Configura Zed como tu editor de terminal para git y otros comandos:
# En .bashrc o .zshrc
export EDITOR="zed --wait"
export VISUAL="zed --wait"
Esto permite que git commit (sin -m) abra Zed para escribir el mensaje.
Depuracion con DAP
Zed incluye un depurador basado en el Debug Adapter Protocol (DAP) que soporta multiples lenguajes.
Lenguajes Soportados
Soporte nativo (incluido)
- C, C++, Go, JavaScript, PHP, Python, Rust, TypeScript
Via extensiones
- Java, Ruby, Swift
Configuracion del Depurador
Crea un archivo .zed/debug.json en la raiz de tu proyecto:
Ejemplo para Rust
[
{
"label": "Debug binary",
"adapter": "codelldb",
"request": "launch",
"program": "${workspaceFolder}/target/debug/mi-app",
"cwd": "${workspaceFolder}",
"build": {
"task_name": "cargo build"
}
}
]
Ejemplo para Python
[
{
"label": "Debug Python",
"adapter": "debugpy",
"request": "launch",
"program": "${workspaceFolder}/main.py",
"cwd": "${workspaceFolder}"
}
]
Ejemplo para Node.js
[
{
"label": "Debug Node",
"adapter": "js-debug",
"request": "launch",
"program": "${workspaceFolder}/src/index.ts",
"cwd": "${workspaceFolder}"
}
]
Ejemplo para Go
[
{
"label": "Debug Go",
"adapter": "go",
"request": "launch",
"program": "${workspaceFolder}",
"cwd": "${workspaceFolder}"
}
]
Iniciar una Sesion de Debug
- Configura tu archivo
.zed/debug.json - Presiona
F4o ejecuta “debugger: start” desde la paleta - Selecciona la configuracion de debug
- El depurador inicia y se detiene en los breakpoints
Breakpoints
| Tipo | Descripcion |
|---|---|
| Normal | Click en el margen del editor para añadir/quitar |
| Condicional | Se activa solo si una condicion es verdadera |
| Log point | Imprime un mensaje sin detener la ejecucion |
| Hit count | Se activa despues de N ejecuciones |
| Exception | Se detiene cuando ocurre una excepcion |
Controles de Ejecucion
| Accion | Atajo |
|---|---|
| Continuar | F5 |
| Step Over (siguiente linea) | F10 |
| Step Into (entrar en funcion) | F11 |
| Step Out (salir de funcion) | Shift+F11 |
| Detener | Shift+F5 |
Inspeccion de Variables
Durante la depuracion, Zed muestra:
- Inline hints: Los valores de las variables aparecen junto al codigo
- Panel de variables: Vista estructurada de variables locales, globales y de cierre
- Watch expressions: Añade expresiones para monitorear valores especificos
- Call stack: Navega la pila de llamadas para ver el flujo de ejecucion
Launch vs Attach
- Launch: Inicia un nuevo proceso. Ideal para desarrollo y tests unitarios.
- Attach: Se conecta a un proceso en ejecucion. Util para depurar servidores o procesos que no puedes reiniciar.
[
{
"label": "Attach to Node",
"adapter": "js-debug",
"request": "attach",
"port": 9229
}
]
Anterior: Capitulo 5: Colaboracion | Siguiente: Capitulo 7: Extensiones y Personalizacion