In wezen zijn deze toetsenbordkoppelingen die je hebt geleerd, allen shortcuts voor Emacs-functies. C-p is bijvoorbeeld een verkorte manier om Emacs te vertellen de interne functie previous-line uit te voeren. Deze interne functies kunnen echter met M-x via de naam worden aangeroepen. Als je bent vergeten dat previous-line is gekoppeld aan C-p, typ je gewoon M-x previous-line Return, waarmee je dan één regel omhoog gaat. Probeer dit nu uit, om te leren begrijpen dat M-x previous-line en C-p werkelijk een en dezelfde opdracht is.
De ontwerper van Emacs begon vanaf de grond af aan, als eerste een volledige set interne functies definiërend om vervolgens toetsenbordkoppelingen aan de meest gebruikekelijke functies te geven. Soms is het makkelijker een functie expliciet met M-x aan te roepen dan te onthouden aan welke toets deze is gekoppeld. De functie query-replace is in een aantal versies van Emacs bijvoorbeeld gekoppeld aan M-%. Maar wie kan een dergelijke vreemde toetsenbordkoppeling onthouden? Tenzij je query-replace nogal vaak gebruikt, is het makkelijker om het gewoon aan te roepen met M-x.
De meeste toetsen die je aanroept zijn letters, bedoeld om als tekst in de buffer te worden ingevoegd. Dus elk van die toetsen is gekoppeld aan de functie self-insert-command, welk niets anders doet dan die letter in de buffer invoegen. Combinaties die gebruik maken van de Ctrl-toets met een letter zijn gewoonlijk gekoppeld aan functies die iets anders doen, zoals manoeuvreren. C-v is bijvoorbeeld gekoppeld aan een functie met de naam scroll-up, waarmee de buffer een scherm omhoog gaat (wat betekent dat je positie in de buffer natuurlijk naar beneden gaat).
Hoe zou je een Control-teken in de buffer plaatsen, mocht je dit ooit willen? Uiteindelijk zijn de Control-tekens ASCII-tekens, alhoewel zeldzaam gebruikt, wil je ze wellicht in een bestand. Er bestaat een manier om te voorkomen dat Emacs Control-tekens interpreteert als opdrachten. De toets C-q[1] is gekoppeld aan een speciale functie met de naam quoted-insert. Het enige wat quoted-insert doet, is de volgende toets inlezen en het letterlijk in de buffer plaatsen, zonder het als een opdracht te interpreteren. Zo kun je onder Emacs Control-tekens in je bestanden plaatsen. De wijze waarop C-q in te voegen is dan natuurlijk het tweemaal opgeven van C-q!
Emacs kent tevens veel functies die niet zijn verbonden met een toets. Ben je bijvoorbeeld een lang bericht aan het schrijven, dan zul je vast niet bij elke regel aan het einde daarvan de Return toets in willen drukken. Je kunt dit door Emacs laten doen (je kunt Emacs alles voor je laten doen). De opdracht hiervoor wordt auto-fill-mode genoemd, maar standaard is het niet verbonden met een toetsaanslag. Voor de aanroep naar deze opdracht typ je "M-x auto-fill-mode". De toetsaanslag "M-x" wordt gebruikt om functies bij naam aan te roepen. Je zou het zelfs kunnen gebruiken om functies als next-line en previous-line aan te roepen, maar dat zou nogal inefficiënt zijn, aangezien ze reeds zijn gekoppeld aan C-n en C-p!
Tussen twee haakjes, mocht je na de aanroep van auto-fill-mode naar je modusregel kijken, dan zul je bemerken dat aan de rechterkant het woord "Fill" is toegevoegd. Zolang dit daar staat zal Emacs automatisch tekst omslaan. Je kunt het uitzetten door het nogmaals intikken van "M-x auto-fill-mode".
Het ongemak dat ontstaat door het typen van lange functienamen in de minibuffer neemt af omdat Emacs op dezelfde wijze voltooiing uitvoert op functienamen als dat het dit doet bij bestandsnamen. Daardoor zul je bemerken dat je zelden de volledige functienaam, letter voor letter, in zult hoeven tikken. Druk gewoon op de Tab-toets als je er niet zeker van bent of je gebruik kunt maken van voltooiing. Het kan geen kwaad: het ergste wat er kan gebeuren is dat je een gewoon tab-teken krijgt. Als je geluk hebt, dan zal het erop neerkomen, dat je wel gebruik kunt maken van voltooiing.
| [1] | We noemen C-q een "toets", ook al wordt het geproduceerd door de Ctrl-toets ingedrukt te houden en de "q" in te drukken, omdat het een enkel ASCII-teken is. |