Göm menyn

Emacs

I det här steget får du stifta bekantskap med textredigeraren Emacs. Vi kommer även presentera några inställningar som kan göra Emacs mer användbart för er när ni programmerar i det.

Viktigt Det finns en lathund som PDF med en lista över vanliga kommandon och funktioner i Emacs.

Vad är Emacs?

Emacs är en programvara som vanligtvis används för att skriva och redigera text i olika former. Det går dock att göra betydligt mer saker, t.ex. spela tetris. Anledningen till att Emacs kan göra så många saker är att programmet går att utöka med Emacs egna språk Emacs Lisp, en variant av Lisp. Med hjälp av Emacs Lisp kan du anpassa och bygga ut funktionerna i Emacs och detta gör att Emacs är särskilt väl anpassat för att skriva programkod eftersom textredigeraren kan förändras för olika programspråk.

Starta Emacs

När du startar Emacs från skalet utan att ange vilken fil du vill arbeta med, så dyker en informationstext upp som bl.a. talar om vilken version av Emacs du använder. För att börja redigera en fil kan du öppna den genom att klicka på ikonen med ett + -tecken uppe i vänstra hörnet. Alternativt kan du när du startar Emacs ange vilken fil du vill arbeta med genom att istället skriva emacs filnamn &.


Emacs vid uppstart. Här syns bland annat vilken version som körs.

Övning Starta Emacs och öppna en ny fil och prova att skriva några rader text. Placera Emacs-fönstret bredvid det fönster som du läser denna text i, så att du lätt kan fortsätta övningen.

Frame, Window och Buffer

I Emacs finns det tre olika delar av det grafiska gränssnittet som är grundläggande för hur man använder Emacs. De är frame, window och buffer. Frame är, förvirrande nog, ett grafiskt fönster som Emacs använder sig av. Window är en grafisk del av en frame i vilken man kan visa olika buffers. En buffer är, till skillnad från de övriga, inte något grafiskt utan ett logiskt utrymme där olika filer kan visas, editeras eller köras (till exempel är de Python-filer som ni skriver i en buffer per fil och tetrisspelet är även det en buffer). Utöver de buffers som har ens textfiler finns det även en minibuffer vilken används för att ge indata till Emacs-kommandon (t.ex. M-x som beskrivs nedan) och ge information till användaren.

Det hela kan enkelt bli lite bökigt när man beskriver det med ord, men ta en titt på bilden nedan så klarnar det förhoppningsvis.


Frame, window och buffer i Emacs

Kortkommandon

Det finns två olika sätt att använda Emacs: menyer och kortkommandon. Emacs är ett gammalt program och förr i tiden använde man enbart tangentbordet. Eftersom Emacs dessutom är väldigt kraftfullt har det utvecklats en uppsjö av mer eller mindre komplicerade kortkommandon. För att underlätta för moderna användare har man på senare tid även lagt till en del menyer, vilka dock inte innehåller ens en bråkdel av de funktioner som Emacs har. Kortkommandon har den ergonomiska fördelen att man slipper flytta handen mellan tangentbordet och musen. Dessutom är de ofta snabbare och mer kraftfulla. Menyerna som du kommer åt med hjälp av musen kan dock vara enklare att använda i början men de är inte på något sätt kompletta.

I Emacs finns det väldigt många olika kortkommandon för att utföra olika funktioner. Det gör att man som användare kan utföra saker mycket effektivt när man väl har lärt sig de olika kommandona. Tyvärr gör det även att Emacs kan vara ganska långsamt innan man har lärt sig var kortkommandona finns. Men när man har tagit sig förbi den tröskeln går det istället väldigt fort.

Kortkommandona i Emacs bygger på att man använder metaknappen (M) (i våra datorsalar är det vänstra Alt-knappen), och kontrollknappen (C) i kombination med andra bokstäver på tangentbordet. Vidare kan ett kortkommando bestå av en sekvens av dem. Ett exempel är kortkommandot för att spara den aktuella filen i Emacs: C-x C-s. Vilket betyder håll ner ctrl och tryck på x följt av håll ner ctrl och tryck på s.

Skulle man glömma bort ett kommando i Emacs kan man använda sig av M-x kommandot vilket öppnar en prompt i minibuffern. Där kan man skriva in namnet på kommandot man vill använda. Ett exempel är M-x replace-string , vilket är en search-and-replace funktion.

Nedan är ett par tabeller med några av de vanligare kommandona man kan tänkas vilja använda i Emacs:

Spara och öppna

Kortkommando Beskrivning
C-x C-f Öppna en fil (skapar filen om den inte finns) i det aktuella fönstret.
C-x C-s Sparar filen i den aktuella buffern.
C-x C-w Spara som.
C-x C-m f Sätter vilken teckenkodning (eng. charset) som ska användas i den aktuella buffern.
C-x C-c Avsluta Emacs.

Förflyttning av markör

Kortkommando Beskrivning
C-f Flytta markören ett steg åt höger.
C-b Flytta markören ett steg till vänster.
C-n Flytta markören ett steg ner.
C-p Flytta markören ett steg upp.
C-a Flytta markören till början av raden.
C-e Flytta markören till slutet av raden.
M-g M-g Flytta markören till raden som du ger som indata.
M-< Flytta markören till början av filen.
M-> Flytta markören till slutet av filen.

Övning Pröva att skriva in lite mer text och flytta runt markören tills du känner dig säker på hur Emacs fungerar. Spara sedan texten som du har skrivit.

Frame, Window och Buffer

Kortkommando Beskrivning
C-x 3 Dela aktuellt window vertikalt i två.
C-x 2 Dela aktuellt window horisontellt i två.
C-x o Byt vilket window som är aktivt.
C-x 0 Stäng aktuellt window.
C-x 1 Stäng alla andra window.
C-x b Byt buffer genom att skriva in namnet.
C-x -> Byt buffer ett steg till höger i bufferlistan.
C-x <- Byt buffer ett steg till vänster i bufferlistan.
C-x k Stäng ner buffer.

Övning Prova att dela upp fönstret i flera windows samt skapa en ny frame. Prova att växla mellan buffertar med kortkommandon.

Copy, cut, paste och edit

Kortkommando Beskrivning
C-blankspace Sätt början av markering (markör ej på början av markering) eller avsluta markering (markör på början av markering).
C-w Klipp markerad text.
C-y Klistra in markerad text.
M-w Kopiera markerad text.
C-k Klipp ut allt på raden från markörens position.
C-d Ta bort tecknet som markören står på.
C-m Ett annat kommando för radbrytning.
C-_ eller C-/ eller C-u Ångra.
C-g Avbryt kommando.

Övning Starta Emacs. Tryck C-h t. Detta startar en inbyggd Emacs-tutorial. Följ anvisningarna på skärmen. Det är bra att ha gått igenom den här minst en gång.

Söka och ersätta

Kortkommando Beskrivning
C-s Söker efter förekomster av en textsträng i bufferten. Tryck C-s igen för att gå till nästa förekomst.
C-r Söker baklänges efter förekomster av en textsträng i bufferten. Tryck C-r igen för att gå till nästa förekomst.
M-% Byter ut en textsträng mot en annan. Går igenom alla förekomster och frågar för varje om den ska bytas ut eller ej. Svara med Yes/No. Enter/Q för att avbryta. ! för att ersätta alla utan att fråga.
M-x replace-string Byter ut alla förkomster av en textsträng mot en annan utan att fråga.

För att söka efter texten Hej kan du använda följande exempel. C-r fungerar likadant fast baklänges.

  1. Tryck C-s. Texten I-search: dyker upp i minibufferten och markerar att du har påbörjat en sökning.
  2. Skriv "Hej" i minibufferten. Emacs söker medan du skriver med början där markören stod. Om texten Hej inte finns i bufferten piper Emacs och visar texten Failing I-search: i minibufferten.
  3. När du hittat den första förekomsten av Hej kan du söka efter nästa genom att trycka C-s igen.
  4. För att avbryta sökningen kan du trycka C-g. Då förflyttar sig markören tillbaka till det ställe där den var innan sökningen. Om du däremot vill ha markören kvar där du hittat den senaste förekomsten kan du trycka Enter.

Övning Öppna Emacs. Skriv en liten textfil på ett par rader. Använd de kommandon som du lärt dig i den här delen för att söka och ersätta vissa ord. Testa också ångra-kommandot.

Statusraden och minibufferten

Längst ner i Emacs-fönstret finns statusraden och minibufferten. Statusraden är den mörka raden näst längst ner i fönstret och den ger en del information om vad Emacs håller på med. Minibufferten är den rad längst ner i fönstret som normalt är tom. Den används när Emacs vill meddela något särskilt, eller för att mata in saker som till exempel filnamn.


Statusrad i Emacs

  • Ändringsmarkering
    Om det finns två asterisker (stjärnor) här innebär det att de senaste ändringarna i filen inte är sparade. Om det istället är två procenttecken innebär det att du enbart får läsa filen, men inte ändra innehållet.

  • Namn på buffer
    Här anges namnet på den fil som du för närvarande arbetar med.

  • Läge
    I detta fält anges vilket läge som Emacs arbetar i. Emacs är inställt för att fungera lite olika beroende på vilken typ av fil du bearbetar. Detta kommer vi att gå in på närmare längre ner i dokumentet.

  • Rad
    Här anges vilken rad markören står på.

Konfigurering

Som nämnt innan kan Emacs användas till väldigt mycket och på olika sätt. Det beror på att Emacs kan utökas med egenskriven kod (i Emacs lisp), men då uppstår frågan om hur Emacs vet vilken kod som ska läsas in? För att lösa det här problemet har man i Emacs en reserverad fil som kallas för .emacs som är placerad i hemkatalogen (precis som för bashterminalen, .bashrc, och Macs OS X terminal, .profile). Om den filen inte existerar kan du skapa den i terminalen genom att skriva touch .emacs när du står i din hemkatalog (~). Den här filen är en textfil med Emacs lisp-kod som körs varje gång Emacs startas. Vi kommer inte gå in djupare på hur man skriver Emacs lisp-koden här för närvarande, men det är viktigt att känna till .emacs filen för att göra några mindre modifikationer som gör livet lättare när man kodar i Emacs. Några exempel på modifikationer tas upp nedan (Modes).

Modes

En texteditor kan användas för att skriva i många olika programmeringsspråk, markupspråk eller rena datafiler. Naturligtvis vill man som användare att färgkodningen ska fungera för alla språk som man använder editorn för att skriva i. Men eftersom varje språk inte har samma syntax måste editorn konfigureras för de olika språken. I Emacs sköts det här genom så kallade modes. Ett mode är mer eller mindre en funktionalitet som är aktiv för en eller flera buffers. För att göra det lite mer komplicerat har Emacs två typer av modes, major mode och minor mode.

Ett major mode är det övergripande modet som beskriver hur själva redigeringen går till i buffern. Det tillåts enbart, och krävs, att varje buffer har ett major mode aktiverat. Vanligtvis kommer Emacs automatiskt att välja vilket major mode som ska vara aktivt för en buffer från filändelsen. Ett exempel på ett major mode är python-mode vilket sköter inställningar för indentering, färgsättning av koden, med mera när du redigerar en pythonfil.

Ett minor mode hanterar en väl avgränsad del av redigeringen. För de här modesen finns det ingen begränsning för hur många som får vara aktiva per buffer. Det finns inte ens en begränsning för hur många buffers som ett minor mode är aktivt för. Några exempel på minor modes är linum-mode (radnumrering), aspell-/ispell-mode (rättstavning) och whitespace-mode (radlängd, onödiga tecken och tab-visualisering).

För att aktivera ett mode (minor eller major) använder man sig av kommandot M-x och skriver in namnet på modet. Om man t.ex. vill aktivera linum-mode skriver man M-x linum-mode och trycker på enter. Vill man stänga av ett mode kör man samma kommando igen.

Kommando Beskrivning
M-x mode Aktivera/inaktivera mode
C-h m Få en beskrivning av det aktuella modet

Det finns en uppsjö av olika modes som kan användas men de som man vanligtvis använder är redan installerade i Emacs. För att ge en inblick i några modes som man kan tänkas vilja använda när man använder Emacs (i den här kursen och andra sammanhang) kommer vi att gå igenom ett par små men användbara minor modes. Vi kommer även visa lite Emacs lisp kod som man kan lägga in i sin .emacs-fil för att moden automatiskt ska startas när Emacs startas eller när ett major mode startas.

Autoindentering

För att underlätta inskrivning och redigering av programkod i Emacs erbjuder flera av lägena i Emacs autoindentering och färgkodning. Autoindentering innebär att man anpassar texten så att det som hör ihop eller befinner sig på samma nivå i koden, hamnar lika långt in på raderna i bufferten.

Som exempel ska vi ta den välkända fakultetsfunktionen och definiera den i språken Lisp och Python. (Det är inte nödvändigt att förstå exakt vad exemplen gör.)

Lisp:

	
(defun fakultet (n)
	(if (= n 0)
	    1
	  (* n (fakultet (1- n)))))
  	

Python:

	
def fakultet(n):
	if (n==0):
	    return 1
	else:
	    return n*fakultet(n-1)
    

För båda dessa språk (och flera andra) finns det källkodslägen i Emacs som gör att nästa rad automatiskt fylls ut med med rätt antal mellanslag när du trycker på Enter. Du kan också trycka på TAB för att indentera den aktuella raden. Källkodslägena analyserar den kod du skriver och har flera extra funktioner för att kunna hoppa mellan olika delar i programmet, göra ändringar m.m.

Om du namnger dina filer med rätt filnamnsändelse kommer Emacs känna igen dem och automatiskt ladda rätt källkodsläge. För Lisp är det .lsp, och för Python är det .py. Om du av någon anledning inte lyckats få rätt källkodsläge kan du tvinga Emacs att byta läge med olika kommandon. För att tvinga Emacs att byta till Python-läge använder du kommandot M-x python-mode. Motsvarande kommandon för andra källkodslägen är c-mode, lisp-mode, html-mode, o.s.v.

Övning Kopiera någon av filerna i tabellen nedan till ditt konto och öppna den i Emacs för att se hur källkodslägen fungerar. För de flesta källkodslägen har en extra rullgardinsmeny lagts till. Undersök vilka alternativ som finns i den.

Lisp C Python
fak.lsp fak.c fak.py

Färgkodning

Ett annat sätt att göra programkoden mer överskådlig är färgkodning. Det innebär att olika element i språket får olika färg när du skriver in dem. På så sätt blir det lättare att upptäcka syntaktiska fel. T.ex. kan alla kommentarer bli röda, alla fördefinierade ord lila och funktionsnamn blå.

Öppna någon av filerna i den förra uppgiften igen. Skriv därefter M-x font-lock-mode för att aktivera färgkodning och se vad som händer.

I figuren nedan visas ett exempel på hur Emacs kan se ut när man redigerar källkod i Ada:


Fakultetsfunktionen i språket Ada

Grundläggande färginställningar

De grundläggande färginställningarna i Emacs gör du genom att lägga till några av följande kommandon i din .emacs-fil:

Kommando Förklaring
(set-background-color "färg") Ändrar bakgrundsfärgen i Emacs
(set-foreground-color "färg") Ändrar förgrundsfärgen i Emacs (bör inte vara samma som bakgrundsfärgen)
(set-cursor-color "färg") Ändrar färg på markören i Emacs

Ställa in specialfärger

När du använder Emacs för att skriva programkod kan du aktivera färgning så att olika delar av koden färgas på olika sätt. Detta gör dels att det är lättare att läsa koden, dels att man snabbare ser om man har råkat skriva fel.

De olika delarna av programkoden kallas för element (eng. faces) och du kan ställa in färgningen genom att ange vilka färger som ska användas för olika sådana element.

M-x list-faces-display visar en lista över alla tillgängliga faces.

Vi går igenom några av de vanligaste elementen här nedan. De element som börjar med font-lock- märks bara om man har aktiverat färgmärkning (M-x font-lock-mode).

Element Förklaring
'modeline Statusraden längst ner i fönstret
'region Markerad text
'font-lock-comment-face Kommentarer
'font-lock-function-name-face Funktionsnamn
'font-lock-string-face Strängar, dvs text inom citationstecken
'font-lock-keyword-face Nyckelord

Exempel på användning:

Kommando Beskrivning
(set-face-foreground 'font-lock-comment-face "Red") Ändrar textfärgen på kommentarer till röd.
(set-face-background 'font-lock-comment-face "Black") Ändrar bakgrundsfärgen på kommentarer till svart.
(make-face-bold 'face) Elementet 'face blir fetstilt.
(set-face-underline-p 'face t) Elementet 'face blir understruket.

Testa att skriva in några av dessa kommandon i din .emacs-fil och starta om Emacs för att se resultatet. Kom ihåg att aktivera färgkodning med (font-lock-mode) först.

Anpassa statusraden med mera

Man kan ändra en hel del saker i Emacs, t.ex. utseendet på statusraden. Här kommer några exempel på vad du kan lägga i .emacs:

Kommando Förklaring
(column-number-mode t) Visar i statusraden vilken kolumn markören står på.
(setq display-time-24hr-format t)
(setq display-time-day-and-date t)
(display-time)
Lägger till en klocka som visar dagens datum och tiden mitt på statusraden.
(menu-bar-mode -1) Döljer menyer.
(scroll-bar-mode -1) Döljer rullningslister(eng. scroll bars).
(setq inhibit-startup-message t) Döljer uppstartsmeddelandet.

Man kan också skriva t.ex. M-x column-number-mode när man har startat Emacs för att göra precis samma sak. Fast det senare måste man göra varje gång man startar Emacs för att man ska se kolumnräknaren.

Radlängd och onödiga tecken

En vanlig sak som man vill hålla koll på när man skriver kod är hur långa raderna är så att man undviker att de blir för långa. För att slippa behöva anpassa storleken på framen man använder kan man istället låta Emacs markera alla tecken som är efter den radlängden som man vill ha. Det är en av sakerna som whitespace-mode sköter åt en.

Whitespace-mode visar (lite beroende på inställningarna) alla tecken som är längre än den angivna radlängden, tab-tecken och så kallade trailing whitespaces (whitespaces som är på slutet av raden utan några icke speciella tecken, likt radbrytning, efter dem).

För att starta whitespace-mode när man startar Emacs kan man lägga till följande kod i sin .emacs fil:

	
(require 'whitespace)
(setq whitespace-style '(face empty tabs lines-tail trailing))
(setq whitespace-line-column 79)
(global-whitespace-mode t)
	

För att starta whitespace-mode när python-mode körs kan man lägga till följande kod i sin .emacs fil:

	
(require 'whitespace)
(add-hook 'python-mode
    (lambda ()
        (setq whitespace-style '(face empty tabs lines-tail trailing))
        (setq whitespace-line-column 79)
        (global-whitespace-mode t)))
    

Tänk på att aldrig ha bredare fönster än 80 tecken. Det är lättare att läsa kod på höjden än på bredden.

Radnumrering

Ytterligare en mindre sak som man kan vilja se när man skriver sin kod är radnumrering av koden. Dels för att man ofta får ut felmeddelanden från interpretatorn (eller kompilatorn) med angivningar till vilken rad som det har gått fel på. För att Emacs ska visa radnumrering kan man använda sig av linum-mode.

För att starta linum-mode när man startar Emacs kan man lägga till följande kod i sin .emacs fil:

	
(require 'linum)
(global-linum-mode 1)
	

För att starta linum-mode när python-mode körs kan man lägga till följande kod i sin .emacs fil:

	
(require 'linum)
(add-hook 'python-mode
    (lambda ()
        (global-linum-mode 1)))
    

Exempelfiler

Här finner du några exempel på hur .emacs kan se ut. Spara dessa filer i din hemkatalog (~) och kalla dem för .emacs. Starta sedan Emacs och se vad som har hänt. Om du temporärt vill ta bort en inställning, placera ett eller flera semikolon först på raden och starta om Emacs.

emacs-kalle.el Ett bra exempel på hur .emacs kan se ut. Innehåller lite av varje och ska förhoppningsvis inte vara allt för svår att förstå sig på som nybörjare.
emacs-ingemar.el Ytterligare ett exempel som innehåller ganska många olika inställningar.
emacs-ingemar2.el Exempel med enbart färginställningar.

Få hjälp i Emacs

Ibland kan man behöva göra saker som man inte riktigt vet hur man ska göra. Det kan röra sig om inställningar eller okända kortkommandon eller liknande. Då är hjälpen, C-h till stor nytta. Där kan man nämligen hitta det mesta som har med Emacs att göra. För att starta hjälpen kan man trycka C-h eller klicka på Help i menyn.

Om man letar efter något speciellt kan det vara lite knöligt att leta reda på det genom att gå igenom hjälpen tills man hittar det. För att underlätta lite grann har man därför skapat M-x apropos eller C-h a. Om man använder det kommandot och skriver in det man letar efter kommer man få upp en ny buffert med alla sökträffar. Man kan antingen klicka med musen eller flytta markören över ordet och trycka enter för att få se lite mer information om det man sökte efter.

Olika sätt att få hjälp

Det finns ett par olika kortkommandon som är bra att kunna när det gäller att få hjälp i Emacs. Man kan t.ex. få korta beskrivningar vad ett kortkommando gör eller vilka kortkommando det finns. Vill man ha en beskrivning vad ett kortkommando gör kan man använda två olika korkommandon, C-h c och C-h k. Det första kommandot ger bara en kortare beskrivning medan det andra ger en lite mer utförlig beskrivning.

Man kan också lista alla kortkommandon som är bundna just nu. Då visas en buffert med respektive tangentkombination och vad den är bunden till. För att få upp denna buffert trycker man C-h b. Där listas dels bindningar som gäller det läge som man använder samt de bindningar som gäller i alla lägen(eng. modes). Exempel på bindningar som brukar gälla i alla lägen är C-e, C-a och C-x o etc.

Om man vill ha mer information om hur man kan få hjälp i Emacs och vad man kan få hjälp om ska man trycka C-h C-h så får man upp en liten lista med kortkommandon som är associerade med olika hjälpfunktioner.

Infoläsare

Ett annat sätt att få information om Emacs är att öppna infosidorna om Emacs. Detta kan man göra i Emacs eller i ett skalfönster. För att göra det i Emacs skriver man C-h i. Då kommer en buffert som innehåller en lista över alla manualsidor upp. Man kan också klicka sig in via menyn. För att använda info krävs att man kan använda en del tangenter. Man hoppar nämligen mellan olika fönster med hjälp av olika tangenter. Det kan kännas lite ovant i början. Nedan följer en tabell med tangenter man kan använda för att navigera infosidorna

h Visar en introduktion till infosidorna. Går igenom hur infosidorna är uppbyggda samt vilka kommandon man använder för att bläddra bland infosidorna.
q Avslutar infoläsaren. Visar bufferten som man stod i när man anropade infoläsaren.
n Hoppar till nästa sida om det finns någon. Fungerar bara inom ett och samma avsnitt.
p Hoppar till föregående sida. Fungerar bara inom ett och samma avsnitt.
u Hoppar en nivå upp. Ibland vill man hoppa till ett avsnitt som ligger på en högre nivå.
l Hoppa till den sida du var på senast. Info sparar i vilken ordning du besöker en sida. Tillskillnad från p så hoppar den även till sidor som inte ligger inom samma avsnitt.
m Öppna en meny. Används om man vill välja något på en meny.
s Sök efter ett ord i resten av avsnittet.

Läsa manualsidor i Emacs

Man kan öppna manualsidorna i en Emacsbuffert. Detta gör man med kommandot M-x man. Då frågar Emacs om vilken manualsida som öppnas. Man kan då enkelt ange vilken sida man vill se.

Manual entry: Intro

Tänk på om det ska vara stora eller små bokstäver, annars kan man få se saker som inte är de som man har tänkt sig. Ibland finns det olika kapitel i manualsidorna. Då kan man ange vilket kapitel som man vill se genom att skriva den siffran före ordet som man vill se manualsidorna för.

Manual entry: 6 Intro

Det tolkas alltså som man -s 6 Intro och vet man inte vad det finns för kapitel till ett ord kan man ange -k innan ordet. Då kommer alla rubriker som matchar det ordet att visas i en buffert.

Manual entry: -k intro

Det är nämligen så att när man anropar man i Emacs så sker det på samma sätt som i ett skalfönster. Man kan alltså använda exakt samma argument och växlar som man kan göra i ett skalfönster med enda skillnaden att man ska byta ut man mot M-x man istället.

Eftersom manualsidan som man öppnar öppnas i ett fönster brevid det aktuella fönstret så kan man enkelt scrolla texten i det fönstret med C-M-v.

Övning Pröva nu de olika Emacs-kommandon som du har lärt dig. Skriv in lite text i Emacs, kopiera den, sök och ersätt, etc. Pröva också att navigera runt i hjälpsystemet.

Sammanfattning

  • Emacs är en programvara som vanligtvis används för att skriva och redigera text i olika former.
  • Du kan starta Emacs som en bakgrundsprocess genom att skriva emacs & i ett skalfönster.
  • En frame är ett grafiskt fönster som Emacs använder sig av.
  • Window är en grafisk del av en frame i vilken man kan visa olika buffers.
  • En buffer är ett logiskt utrymme där olika filer kan visas, editeras eller köras.
  • Kortkommandona i Emacs bygger på att man använder metaknappen (M)(Windows-knappen), och kontrollknappen (C) i kombination med andra bokstäver på tangentbordet.
  • Statusraden är den mörka raden näst längst ner i fönstret och den ger en del information om vad Emacs håller på med.
  • Minibufferten är den rad längst ner i fönstret. Den används när Emacs vill meddela något särskilt, eller för att mata in saker.
  • Ett mode är mer eller mindre en funktionalitet som är aktiv för en eller flera buffers och delas in i major modes respektive minor modes.
  • .emacs är en konfigurationsfil var i man kan skräddarsy och spara sina inställningar.
Spara och öppna
C-x C-f Öppna en fil (skapar filen om den inte finns) i det aktuella fönstret.
C-x C-s Sparar filen i den aktuella buffern.
C-x C-c Avsluta Emacs.
Förflyttning av markör
C-f Flytta markören ett steg åt höger.
C-b Flytta markören ett steg till vänster.
C-n Flytta markören ett steg ner.
C-p Flytta markören ett steg upp.
C-a Flytta markören till början av raden.
C-e Flytta markören till slutet av raden.
Frame, Window och Buffer
C-x 2 Dela aktuellt window horisontellt i två.
C-x o Byt vilket window som är aktivt.
C-x 0 Stäng aktuellt window.
C-x -> Byt buffer ett steg till höger i bufferlistan.
C-x <- Byt buffer ett steg till vänster i bufferlistan.
C-x k Stäng ner buffer.
Copy, cut, paste och edit
C-blankspace Sätt början av markering eller avsluta markering.
C-w Klipp markerad text.
C-y Klistra in markerad text.
M-w Kopiera markerad text.
C-k Klipp ut allt på raden från markörens position.
C-d Ta bort tecknet som markören står på.
C-_ eller C-/ eller C-u Ångra.
C-g Avbryt kommando.
Söka och ersätta
C-s Söker efter förekomster av en textsträng i bufferten. Tryck C-s igen för att gå till nästa förekomst.
M-% Byter ut en textsträng mot en annan. Går igenom alla förekomster och frågar för varje om den ska bytas ut eller ej.
M-x replace-string Byter ut alla förkomster av en textsträng mot en annan utan att fråga.

Diagnos

När du har läst detta avsnitt är det dags att göra diagnos D10. Emacs . Gå till kursrummet i Lisam och klicka på Test i vänstermenyn.


Sidansvarig: Peter Dalenius
Senast uppdaterad: 2023-08-21