Editor de Código Colaborativo
Editor de código colaborativo en tiempo real. Comparte un enlace de sala y codifica juntos con resaltado de sintaxis y visualización de cursor en vivo.
Leerme
¿Qué es la edición colaborativa en tiempo real?
La edición colaborativa en tiempo real permite que múltiples personas trabajen en el mismo documento simultáneamente, con los cambios de cada persona visibles instantáneamente para todos los demás. Los sistemas antiguos utilizaban Transformación Operacional (OT) — una técnica que reordena ediciones conflictivas sobre la marcha — pero OT requiere un servidor central para arbitrar cada cambio. Los sistemas modernos como Yjs utilizan Tipos de Datos Replicados sin Conflictos (CRDTs): un marco matemático donde dos réplicas cualesquiera pueden fusionarse en cualquier orden y siempre convergen al mismo resultado, sin necesidad de una autoridad central que decida quién "gana".
Los CRDTs hacen que la edición sin conexión sea natural: los usuarios pueden seguir editando incluso cuando están desconectados, y sus cambios se fusionan limpiamente cuando se reconectan. Por eso los editores colaborativos en tiempo real construidos sobre CRDTs se sienten instantáneos — las ediciones se aplican localmente primero y se sincronizan con los pares después, en lugar de esperar un viaje de ida y vuelta a un servidor antes de aparecer en pantalla.
Descripción de la herramienta
El Editor de Código Colaborativo es un editor de código multijugador en tiempo real impulsado por Yjs y CodeMirror 6. Comparte la URL de la sala con tus compañeros de equipo y todos en la sala editan el mismo documento juntos, con el cursor y la selección de cada persona mostrados en un indicador etiquetado.
El editor admite resaltado de sintaxis para docenas de lenguajes de programación, seleccionables mediante un menú desplegable de lenguaje compartido — cambiar el lenguaje en un navegador lo actualiza para todos en la sala instantáneamente. Los archivos se pueden cargar desde tu disco local con el botón Abrir Archivo y descargar nuevamente con Guardar Archivo.
Características
- Cursores en vivo multiusuario: El cursor y la selección de cada colaborador se muestran con una etiqueta codificada por color y nombrada; múltiples cursores en la misma posición se colapsan en un único indicador "N usuarios" para reducir el ruido visual.
- Selección de lenguaje compartido: El lenguaje de programación activo se persiste en la sala para que todos los participantes siempre vean el mismo resaltado de sintaxis, y los que se unen tarde obtienen inmediatamente el estado correcto.
- Abrir y guardar archivos localmente: Carga cualquier archivo fuente del disco directamente en el editor compartido, o descarga el documento actual como un archivo con la extensión correcta.
Cómo funciona
Cuando te unes a una sala, el editor crea un documento Yjs con un nodo Y.Text compartido que representa el contenido del archivo. Cada pulsación de tecla se codifica como una actualización Yjs binaria compacta, se serializa a Base64 y se transmite a través de una sala WebSocket. Todos los pares conectados aplican la actualización a su propia réplica; debido a la garantía CRDT, todas las réplicas convergen al mismo texto independientemente del orden en que lleguen las actualizaciones.
Las posiciones del cursor y la selección se comparten a través de una capa Awareness ligera que enruta datos de posición a través de la misma sala WebSocket. El estado del documento completo se amortigua y se escribe en el almacenamiento persistente de la sala cada segundo, para que los usuarios que se unan después de que la sesión haya comenzado reciban el documento actual inmediatamente.
Opciones explicadas
- Menú desplegable de lenguaje — Selecciona el lenguaje de resaltado de sintaxis para el editor. La opción se transmite a todos los miembros de la sala para que todos vean un resaltado consistente. El menú desplegable está deshabilitado hasta que te conectes a una sala.
- Abrir Archivo — Abre un selector de archivos local y carga el contenido de texto del archivo seleccionado en el documento Yjs compartido, reemplazando el contenido actual para todos en la sala.
- Guardar Archivo — Descarga el contenido actual del editor como un archivo. La extensión del archivo se elige automáticamente según el lenguaje seleccionado.
- Tema — El editor sigue tu preferencia de tema oscuro/claro del sistema (almacenada en
localStorage). Cambia tu tema del SO o navegador para alternar entre los temas del editor oscuro y claro estilo VS Code.
Limitaciones
- Se requiere una conexión WebSocket activa al servidor de retransmisión para sincronizar; si la conexión se interrumpe, las ediciones realizadas sin conexión se resincronizarán automáticamente cuando se reconecte.
- No hay historial de versiones persistente — una vez que una sesión termina y la sala se cierra, el documento desaparece a menos que lo hayas guardado localmente con el botón Guardar Archivo.
- Los archivos binarios (imágenes, binarios compilados, etc.) no se pueden cargar; el editor funciona solo con archivos de código fuente en texto plano.
- Esta herramienta está en beta; la estabilidad de la sala y el número máximo de usuarios concurrentes pueden ser limitados.
Consejos
- Comparte la URL completa de la sala desde la barra de direcciones de tu navegador para invitar colaboradores — el ID de la sala está codificado en la URL.
- Guarda una copia local con Guardar Archivo al final de una sesión; los datos de la sala no están garantizados que persistan indefinidamente.
- Si la etiqueta del cursor de un colaborador está cubriendo código importante, la etiqueta se voltea automáticamente hacia la izquierda cuando está cerca del borde derecho del editor.