Editor de Código Colaborativo
Editor de código colaborativo em tempo real. Compartilhe um link da sala e codifique junto com destaque de sintaxe e exibição de cursor ao vivo.
Leia-me
O que é edição colaborativa em tempo real?
A edição colaborativa em tempo real permite que múltiplas pessoas trabalhem no mesmo documento simultaneamente, com as alterações de cada pessoa visíveis instantaneamente para todos os outros. Os primeiros sistemas usavam Transformação Operacional (OT) — uma técnica que reordena edições conflitantes em tempo real — mas OT requer um servidor central para arbitrar cada alteração. Sistemas modernos como Yjs usam Tipos de Dados Replicados Sem Conflito (CRDTs): um framework matemático onde quaisquer duas réplicas podem ser mescladas em qualquer ordem e sempre convergem para o mesmo resultado, sem precisar de uma autoridade central para decidir quem "vence".
CRDTs tornam a edição offline natural: usuários podem continuar editando mesmo quando desconectados, e suas alterações se mesclam perfeitamente quando se reconectam. É por isso que editores colaborativos em tempo real construídos em CRDTs parecem instantâneos — as edições são aplicadas localmente primeiro e sincronizadas com os pares depois, em vez de esperar por uma viagem de ida e volta a um servidor antes de aparecer na tela.
Descrição da ferramenta
O Editor de Código Colaborativo é um editor de código multiplayer em tempo real alimentado por Yjs e CodeMirror 6. Compartilhe a URL da sala com seus colegas de equipe e todos na sala editam o mesmo documento juntos, com o cursor e a seleção de cada pessoa mostrados em um indicador rotulado.
O editor suporta destaque de sintaxe para dezenas de linguagens de programação, selecionáveis através de um dropdown de linguagem compartilhado — alterar a linguagem em um navegador a atualiza para todos na sala instantaneamente. Arquivos podem ser carregados do seu disco local com o botão Abrir Arquivo e baixados novamente com Salvar Arquivo.
Recursos
- Cursores multi-usuário ao vivo: O cursor e a seleção de cada colaborador são mostrados com um rótulo codificado por cor e nomeado; múltiplos cursores na mesma posição são recolhidos em um único indicador "N usuários" para reduzir ruído visual.
- Seleção de linguagem compartilhada: A linguagem de programação ativa é persistida na sala para que todos os participantes sempre vejam o mesmo destaque de sintaxe, e os que chegam depois recebem imediatamente o estado correto.
- Abrir e salvar arquivos localmente: Carregue qualquer arquivo de origem do disco diretamente no editor compartilhado, ou baixe o documento atual como um arquivo com a extensão correta.
Como funciona
Quando você entra em uma sala, o editor cria um documento Yjs com um nó Y.Text compartilhado representando o conteúdo do arquivo. Cada pressionamento de tecla é codificado como uma atualização Yjs binária compacta, serializada em Base64 e transmitida por uma sala WebSocket. Todos os pares conectados aplicam a atualização à sua própria réplica; por causa da garantia CRDT, todas as réplicas convergem para o mesmo texto independentemente da ordem em que as atualizações chegam.
Posições de cursor e seleção são compartilhadas através de uma camada Awareness leve que roteia dados de posição através da mesma sala WebSocket. O estado completo do documento é debounced e escrito no armazenamento persistente da sala a cada segundo, para que usuários que entrem após o início da sessão recebam o documento atual imediatamente.
Opções explicadas
- Dropdown de linguagem — Seleciona a linguagem de destaque de sintaxe para o editor. A escolha é transmitida a todos os membros da sala para que todos vejam destaque consistente. O dropdown fica desabilitado até que você esteja conectado a uma sala.
- Abrir Arquivo — Abre um seletor de arquivo local e carrega o conteúdo de texto do arquivo selecionado no documento Yjs compartilhado, substituindo o conteúdo atual para todos na sala.
- Salvar Arquivo — Baixa o conteúdo atual do editor como um arquivo. A extensão do arquivo é escolhida automaticamente com base na linguagem selecionada.
- Tema — O editor segue sua preferência de tema escuro/claro do sistema (armazenada em
localStorage). Alterne seu tema do SO ou navegador para alternar entre os temas de editor escuro e claro estilo VS Code.
Limitações
- Uma conexão WebSocket ativa com o servidor de retransmissão é necessária para sincronização; se a conexão cair, as edições feitas offline serão ressincronizadas automaticamente quando reconectadas.
- Não há histórico de versão persistente — uma vez que uma sessão termina e a sala é fechada, o documento desaparece a menos que você o tenha salvo localmente com o botão Salvar Arquivo.
- Arquivos binários (imagens, binários compilados, etc.) não podem ser carregados; o editor funciona apenas com arquivos de código-fonte em texto simples.
- Esta ferramenta está em beta; a estabilidade da sala e o máximo de usuários simultâneos podem ser limitados.
Dicas
- Compartilhe a URL completa da sala da barra de endereços do seu navegador para convidar colaboradores — o ID da sala é codificado na URL.
- Salve uma cópia local com Salvar Arquivo ao final de uma sessão; dados da sala não têm garantia de persistência indefinida.
- Se o rótulo do cursor de um colaborador estiver cobrindo código importante, o rótulo automaticamente se vira para a esquerda quando perto da borda direita do editor.