# Ed (editor)

De teksteditor ed was de oorspronkelijke standaard-editor op het UNIX-besturingssysteem. Het is oorspronkelijk geschreven door Ken Thompson, die tevens als eerste reguliere expressies in ed implementeerde. Voordat dit gebeurde waren reguliere expressies alleen bekend uit een wiskundig artikel dat Ken Thompson had gelezen. De editor ed zelf was beïnvloed door de teksteditor QED en heeft de editors ex en later vi beïnvloed. Ook veelgebruikte Unixprogramma's als grep en sed zijn door de syntaxis van ed beïnvloed, hetgeen later weer heeft doorgewerkt in awk en perl.

## Geschiedenis

Toen ed geschreven werd, werd er nog veel gewerkt met heel langzame verbindingen van 300 baud en schermen waarop het alleen mogelijk was om onderaan een regel toe te voegen; het was dus niet mogelijk om even met de cursor omhoog te gaan om daar wat te veranderen, zoals nu gewoon is. Omdat de verbindingen zo langzaam waren en de uitvoermogelijkheden zo beperkt, heeft ed een zeer bondige manier van meldingen geven. Indien er een fout is, of wanneer de gebruiker het programma wil afsluiten zonder de wijzigingen op te slaan, dan antwoordt ed met ?. Als het programma opgestart wordt, dan meldt het alleen hoeveel tekens er in het bestand staan, maar verder niet hoeveel regels het heeft, of wat de naam van het bestand is. Al deze kenmerken maakten het met de opkomst van grotere geheugens en visuele editors een vrij onhandige editor.

## Gebruik

Vanwege bovengenoemde redenen wordt ed nog vrij weinig interactief gebruikt door mensen als ze een bestand willen editen. In sommige noodsituaties kan het echter voorkomen dat ed de enig beschikbare editor is, bijvoorbeeld tijdens de installatie van OpenBSD, doch het is meestal noodgedwongen dat men ed gebruikt. De meeste gebruikers zijn al in de jaren 80 overgestapt naar vi, emacs of sam. Tegenwoordig zijn er uiteraard nog veel meer editors.
Waar ed wel nuttig voor is, is om te gebruiken in scripts. Ed biedt de mogelijkheid om een bestand zelf te veranderen, in plaats van sed te gebruiken, waarbij het invoer- en uitvoerbestand doorgaans niet hetzelfde kunnen zijn. De commando's worden dan naar de standaardinvoer van ed gestuurd en het te bewerken bestand wordt als parameter meegegeven.
Voor het interactieve gebruik geldt dat ed, net als vi, ook verschillende modi kent (– voor een uitgebreidere beschrijving hiervan, zie het artikel over vi). Het start op in de commandomodus, en om tekst toe of in te voegen zal de gebruiker eerst het commando 'a', 'c', of 'i' moeten geven. In vi wordt dit meestal gedaan door de cursor naar de goede plek te navigeren; in ed zal expliciet de regel moeten worden opgegeven waar in- of toegevoegd moet worden.
Om de invoermodus te beëindigen moet een "." op een lege regel worden getypt, een gewoonte die je ook nog in het Unixprogramma mail terugziet.

## Voorbeeld

Dit voorbeeld gaat ervan uit dat ed reeds opgestart is. Na het voorbeeld volgt de uitleg. De uitvoer die het programma geeft wordt met een cursief lettertype aangeduid.

## Uitleg

We beginnen met een nieuw bestand, dat standaard leeg is. Er wordt een 'a' ingevoerd als aanduiding dat we tekst willen toevoegen aan het bestand. Tot die tijd zitten we in invoegmodus. Dan kan er getypt worden totdat er een regel met alleen een "." ingevoerd wordt. Dan wordt de opdracht 2i gegeven, die vóór regel 2 tekst invoegt. In dit voorbeeld wordt alleen een lege regel ingevoegd. Het opgegeven cijfer correspondeert dus met het regelnummer waar de actie moet plaatsvinden.
Het volgende commando 1,$l verzoekt ed om de regels 1 tot en met $, ofwel de laatste regel, achter elkaar af te drukken. Dit gebeurt met een extra dollarteken aan het eind, zodat eventuele spaties aan het einde van de regel gezien kunnen worden.
Omdat we een regel hebben ingevoegd is de regel die de tweede was inmiddels de derde geworden, daarom moeten we op die regel een wijziging doorvoeren. Het zou mogelijk zijn deze hele regel te herschrijven (door 3c op te geven), maar het is handiger om het verkeerde te vervangen. We geven daartoe het commando 3s/tweede/derde/, wat 'tweede' door 'derde' vervangt. Als nu alle tekst weer wordt afgedrukt, zien we dat de regel nu wel de waarheid spreekt.
We proberen daarna de editor af te sluiten, ed waarschuwt ons echter met een '?' dat de tekst nog niet is opgeslagen. Daarom geven we het commando w tekst dat de tekst in de buffer naar een bestand schrijft. Het getal dat ed uitvoert correspondeert met het aantal karakters dat het weggeschreven heeft. Het commando 'q' beëindigt de editsessie.

## Trivia

De maker van vi, Bill Joy, heeft ooit gezegd dat hij liever ed gebruikte dan vi, want vi, daar maakte iedereen zijn eigen versie van, zodat hij nooit wist of vi wel deed wat hij wilde. Ed daarentegen werd zo abstruus gevonden, dat hij daarvan tenminste zeker wist dat niemand eraan had gezeten als hij op een vreemde computer een editor nodig had.