Samarbets-kodredigerare
Kodredigerare för samarbete i realtid. Dela en rumslänk och koda tillsammans med syntaxmarkering och live-markörvisning.
Readme
Vad är realtids-samarbetsredigering?
Realtids-samarbetsredigering gör det möjligt för flera personer att arbeta på samma dokument samtidigt, där varje persons ändringar är omedelbar synliga för alla andra. Tidiga system användes Operational Transformation (OT) — en teknik som ordnar om motstridiga redigeringar på farten — men OT kräver en central server för att godkänna varje ändring. Moderna system som Yjs använder Conflict-free Replicated Data Types (CRDTs): ett matematiskt ramverk där två repliker kan slås samman i vilken ordning som helst och alltid konvergerar till samma resultat, utan att behöva en central myndighet för att avgöra vem som "vinner".
CRDTs gör offline-redigering naturlig: användare kan fortsätta redigera även när de är frånkopplade, och deras ändringar slås samman smidigt när de återansluter. Det är därför realtids-samarbetsredigerare byggda på CRDTs känns omedelbar — redigeringar tillämpas lokalt först och synkroniseras med jämlikar efteråt, i stället för att vänta på en rundresa till en server innan de visas på skärmen.
Verktygsbeskrivning
Collaborative Code Editor är en realtids-multiplayer-kodredigerare driven av Yjs och CodeMirror 6. Dela rum-URL:en med dina lagkamrater och alla i rummet redigerar samma dokument tillsammans, med varje persons markör och markering visad i en märkt indikator.
Redigeraren stöder syntaxmarkering för dussintals programmeringsspråk, valbara via en delad språkrullgardin — att ändra språket i en webbläsare uppdaterar det för alla i rummet omedelbar. Filer kan laddas från din lokala disk med knappen Öppna fil och laddas ner igen med Spara fil.
Funktioner
- Live multi-user-markörer: Varje samarbetspartners markör och markering visas med en färgkodad, namngiven etikett; flera markörer på samma position slås samman till en enda "N användare"-indikator för att minska visuell brus.
- Delad språkval: Det aktiva programmeringsspråket sparas i rummet så alla deltagare alltid ser samma syntaxmarkering, och sena anslutare får omedelbar rätt tillstånd.
- Öppna och spara filer lokalt: Ladda vilken källfil som helst från disk direkt in i den delade redigeraren, eller ladda ner det aktuella dokumentet som en fil med rätt tillägg.
Hur det fungerar
När du ansluter till ett rum skapar redigeraren ett Yjs-dokument med en delad Y.Text-nod som representerar filinnehållet. Varje tangenttryckning kodas som en kompakt binär Yjs-uppdatering, serialiseras till Base64 och sänds över en WebSocket-rum. Alla anslutna jämlikar tillämpar uppdateringen på sin egen replik; på grund av CRDT-garantin konvergerar alla repliker till samma text oavsett i vilken ordning uppdateringar anländer.
Markör- och markeringspositionen delas genom ett lättviktigt Awareness-lager som dirigerar positionsdata genom samma WebSocket-rum. Det fullständiga dokumenttillståndet är dämpat och skrivs till beständig rumlagring varje sekund, så användare som ansluter efter att sessionen startade får det aktuella dokumentet omedelbar.
Alternativ förklarade
- Språkrullgardin — Väljer syntaxmarkeringsspråket för redigeraren. Valet sänds till alla rummedlemmar så alla ser konsekvent markering. Rullgardinen är inaktiverad tills du är ansluten till ett rum.
- Öppna fil — Öppnar en lokal filväljare och laddar den valda filens textinnehål in i det delade Yjs-dokumentet, vilket ersätter det aktuella innehållet för alla i rummet.
- Spara fil — Laddar ner det aktuella redigerarinnehållet som en fil. Filtillägget väljs automatiskt baserat på det valda språket.
- Tema — Redigeraren följer dina systemets mörk-/ljusönskemål (lagrat i
localStorage). Växla ditt operativsystem eller webbläsartema för att växla mellan VS Code–stil mörka och ljusa redigerareteman.
Begränsningar
- En aktiv WebSocket-anslutning till relä-servern krävs för synkronisering; om anslutningen bryts, synkroniseras redigeringar gjorda offline automatiskt när du återansluter.
- Det finns ingen beständig versionshistorik — när en session slutar och rummet stängs är dokumentet borta om du inte sparade det lokalt med knappen Spara fil.
- Binära filer (bilder, kompilerade binärer, etc.) kan inte laddas; redigeraren fungerar endast med vanlig text-källfiler.
- Det här verktyget är i betaversion; rumstabilitet och maximala samtidiga användare kan vara begränsade.
Tips
- Dela den fullständiga rum-URL:en från din webbläsares adressfält för att bjuda in samarbetspartner — rum-ID:t är kodat i URL:en.
- Spara en lokal kopia med Spara fil i slutet av en session; rumdata är inte garanterad att bestå på obestämd tid.
- Om en samarbetspartners markör-etikett täcker viktig kod, vänds etiketten automatiskt till vänster när den är nära höger kant av redigeraren.