FUNNY SOMETHING OR OTHER
Om iets op een computer gedaan te krijgen, heb je een manier nodig om tekst in bestanden te plaatsen, en een manier om tekst te wijzigen die zich reeds in bestanden bevindt. Dit kun je met een editor doen. Emacs is één van de populairste editors in omloop, deels omdat het erg makkelijk is voor een echte beginner om er het echte werk mee te doen. (De klassieke Unix-editor, vi, wordt behandeld in Aanhangsel A.)
Om emacs te leren, moet je op zoek gaan naar een gewoon tekstbestand (zoals een bestand met letters, getallen en dergelijke). Kopieer dit bestand naar je homedirectory[1] (we willen het oorspronkelijke bestand niet wijzigen, voor het geval er belangrijke informatie in staat), en roepen Emacs aan met de naam van het bestand als argument:
/home/larry# emacs README |
(Natuurlijk moet je de bestandsnaam README vervangen door het gekozen bestand als je besloot om /etc/rc, /etc/inittab of elk ander bestand te kopiëren. Gaf je bijvoorbeeld de opdracht cp /etc/rc ~/rc, dan wordt het emacs rc.)
Afhankelijk van waaruit kan een aanroep naar Emacs in andere effecten resulteren. Vanaf een console waarop alleen teksttekens worden weergegeven, zal Emacs de gehele console overnemen. Als je het vanuit X aanroept, zal Emacs een eigen venster naar voren brengen. Ik zal ervan uitgaan dat je het aanroept vanaf een tekstconsole, maar alles geldt logischerwijs tevens voor de X-Windowversie, vervang waar ik "scherm" heb geschreven gewoon door "venster". Denk er tevens aan dat je de muisaanwijzer in het Emacs venster moet verplaatsen voordat je er tekst in kunt typen!
Je scherm (of venster, als je gebruik maakt van X) zou nu moeten weerspiegelen. Het scherm bestaat voor het overgrote deel uit je tekstdocument, maar de laatste twee regels zijn vooral van belang als je Emacs probeert te leren. Twee regels voor de laatste regel (die met de lange reeks streepjes) wordt de modusregel genoemd.
Op mijn modusregel zie je "Top". In plaats daarvan kan het ook "All" zijn en er kunnen nog tal van andere kleine verschillen zijn. (Bij veel mensen wordt in de modusregel de huidige tijd weergegeven.) De regel onmiddellijk onder de modusregel wordt de minibuffer genoemd, of ook wel de echo area. Emacs gebruikt de minibuffer om meldingen weer te geven, en zo nu en dan wordt het gebruikt om door jou ingegeven invoer in te lezen, wanneer dit nodig is. In feite deelt Emacs je nu mee: "For information about the GNU Project and its goals, type C-h C-p." Negeer het nog even; we zullen nog niet zoveel gebruik maken van de minibuffer.
Voordat je daadwerkelijk enige tekst in het bestand wijzigt, moet je leren hoe je je kunt verplaatsen. De cursor hoort aan het begin van het bestand te staan, in de linkerbovenhoek van het scherm. Typ C-F om vooruit te gaan (dat wil zeggen dat je de Ctrl-toets ingedrukt moet houden onderwijl je de "f" indrukt). Je zult hierdoor één teken tegelijktijd voorwaarts gaan, en als je beide toetsen ingedrukt houdt, dan zou de automatische toetsherhaling van je systeem binnen een halve seconde of iets dergelijks het effect daarvan moeten laten zien. Let op hoe de cursor automatisch naar de volgende regel gaat zodra je het einde van een regel hebt bereikt. C-b (voor "backward") heeft het tegengesteld effect. C-n en C-p brengen je respectievelijk naar de volgende en voorgaande regels.[2]
Tijdens het bewerken is het gebruik van de control-toetsen de snelste manier om je te verplaatsen. Het doel van Emacs is je handen boven de alfanumerieke toetsen van het toetsenbord te houden, waar het meeste van het werk wordt verricht. Als je dit echter wilt, functioneren ook de pijltjestoetsen.
In feite kun je bij het werken onder X de muisaanwijzer positioneren en met de linkerknop klikken om de cursor te verplaatsen naar waar je wilt. Dit werkt echter erg langzaam; je moet je hand helemaal naar de muis verplaatsen! De meeste mensen die Emacs gebruiken, gebruiken primair het toetsenbord om door te tekst te manoeuvreren.
Gebruik C-p en C-b om helemaal terug te keren naar de bovenlinkerhoek. Houd C-b nu iets langer vast. Je moet nu een hinderlijk belgeluid te horen krijgen en in de minibuffer verschijnt de melding "Beginning of buffer". Nu vraag je je wellicht af, "Maar wat is een buffer?"
Wanneer Emacs aan een bestand werkt, werkt het in werkelijkheid niet aan het bestand zelf. In plaats daarvan kopieert het de inhoud van een bestand naar een speciaal werkgebied in Emacs genaamd een buffer, waarin je het naar wens kunt aanpassen. Wanneer je klaar bent met werken, vertel je Emacs de buffer op te slaan; met andere woorden, de inhoud van de buffer weg te schrijven naar het corresponderende bestand. Zolang je dit nog niet hebt gedaan, blijft het bestand ongewijzigd en bestaat de inhoud van de buffer alleen binnen Emacs.
Bereid je voor je eerste teken in de buffer in te voegen nu je dit weet. Tot op heden, was alles wat we deden "niet-destructief", dus dit is een groots moment. Je kunt elk teken kiezen dat je wilt, maar als je het in stijl wilt doen, raad ik je aan gebruik te maken van een fraaie, solide, hoofdletter "X". Kijk bij het typen ervan naar het begin van de modusregel onderaan het scherm. Wanneer je de buffer zodanig wijzigt dat de inhoud niet langer meer hetzelfde is als de inhoud van het bestand op disk, toont Emacs twee asterisken aan het begin van de modusregel, om je te laten weten dat de buffer is aangepast:
--**-Emacs: some_file.txt (Fundamental)--Top-------------------- |
Deze twee asterisken worden weergegeven zodra je de buffer aanpast, en blijven zichtbaar totdat je de buffer opslaat. Je kunt tijdens een bewerksessie de buffer meerdere malen opslaan. De opdracht hiervoor is C-x C-s (houd de Ctrl-toets ingedrukt en druk op "x" en "s" terwijl het is ingedrukt... ok, dus daar was je waarschijnlijk reeds achtergekomen!). Het is opzettelijk makkelijk te typen, omdat het opslaan van je buffers iets is dat je het beste vanaf het begin en vaak doet.
Ik geef je nu een opsomming van nog een paar opdrachten, met degenen die je reeds leerde, en je kunt ze oefenen zoals je dat wilt. Ik raad je aan er vertrouwd mee te raken voordat je verder gaat:
| C-f | Ga een teken naar rechts |
| C-b | Ga een teken naar links |
| C-n | Ga naar de volgende regel |
| C-p | Ga naar de vorige regel |
| C-a | Ga naar het begin van de regel |
| C-e | Ga naar het einde van de regel |
| C-v | Ga naar volgende pagina/scherm met tekst |
| C-l | Herschrijf het scherm, huidige regel in het midden |
| C-d | Verwijder dit teken (oefen deze) |
| C-k | Verwijder tekst vanaf huidige positie tot einde vd regel |
| C-x C-s | Sla inhoud buffer op in bestand |
| Backspace | Verwijder het voorgaande teken (dat je net typte). |
| [1] | Bijvoorbeeld cp /usr/src/linux/README ./README |
| [2] | Voor het geval je dit nog niet was opgevallen, veel van de verplaatsingsopdrachten onder Emacs bestaan uit een combinatie van de Ctrl-toets met een enkele letter. |