Webbservern.se

Användararea  [inloggning krävs]

Ansökan

Om servern

 Användarnas www-sidor

 Loggbok

 Nyhetsbrev

 Om webbservern.se

 Senast ändrade filer

 Webbserverinfo (CV)

 Villkor

Webbapplikationer

 MD5/Jämför filer

 Väder

 Webbkamera

Handboken

 Backup
 Bandbredd
 CVS
 Databas (MySQL)
 E-post
 E-postlistor
 Lösenord
 Programmering
 Programvara
 Quota
 SFTP och SCP
 SSH
 VNC
 WWW


sök på webbservern.se

Handboken / Programmering / Emacs

Allmänt om Emacs

Emacs brukar liknas med en schweizisk armékniv, den är bra till mycket. Bland annat utgör Emacs en mycket kompetent utvecklingsmiljö för många programmeringsspråk och det är den aspekten vi ska titta närmare på i det här kapitlet. För att kunna utveckla effektivt måste ett antal kortkommandon sitta i ryggmärgen och det kräver viss övning. Dock går det fort att komma igång hjälpligt och sen får man lära sig mer och mer eftersom. Till slut ger du kortkommandona utan att tänka.

Vad alla inte vet är att Emacs och XEmacs är två olika program. XEmacs knoppas av Emacs när Emacs version 19 höll på att utvecklas. Du kan läsa mer om vad som skiljer XEmacs och Emacs åt.

Emacs på webbservern

På webbservern finns både XEmacs och Emacs installerat. När startar Emacs eller XEmacs från terminalen kommer dessa program att starta i egna fristående fönster om terminaln är medveten om en X-server Om man inte vill det så kan man använda växeln "-nw" som gör att XEmacs/Emacs startar i terminalfönstret.

Det är inga konstigheter med att starta Emacs eller XEmacs men så här kan det se ut.

#Startar Emacs i ett fristående fönster
emacs &

#Startar Emacs i terminalfönstret
emacs -nw

#Startar XEmacs i ett fristående fönster
xemacs &

#Startar XEmacs i terminalfönster
xemacs -nw

För närvarande är Emacs version 21.2.1 och XEmacs 21.4 installerade på webbservern. Detta kan du själv kontrollera genom emacs --version respektive xemacs --version.

Allt som kommer att gås igenom i detta kapitel fungerar i både XEmacs och Emacs. Vilken editor du väljer är en smaksak. Jag använder Emacs men det är mest en vanesak. I fortsättningen kommer jag alltså att använda benämningen Emacs även om det också gäller för XEmacs.

Grunderna i Emacs

Kortkommandonas uppbyggnad

Kortkommandona i Emacs är brukar skrivas på formen C-<chr> och M-<chr>. Som exempel kan vi ta kommandot för att öppna en fil, C-x C-f, där Control-tangenten hålls in samtidigt som x-tangenten och därefter Control-tangenten tillsammans med f-tangenten.

M symboliserar Meta-tangenten vilken inte brukar finnas på PC-tangentbord, då används Esc-tangenten istället.

Kortkommandona är bindningar till kommandon med ganska långa namn, exempelvis är C-x C-f knutet till find-file. Det går att använda dessa kommandon genom först använda kortkommandot M-x och sedan skriva kommandot. Detta kan vara ett bra sätt om man har glömt bort kortkommandot eftersom Emacs matchar vad du skriver mot de befintliga kommandona.

När du vill avbryta ett kommando är C-g din vän.

Några viktiga kommandon

Vi börjar med att gå igenom några riktiga viktiga kortkommandon. Det är egentligen inte många som behövs för att man ska komma igång och kunna använda Emacs.

Öppna, spara, spara som, ångra och stäng

Du har redan fått kortkommandot för att öppna en fil men vi tar det igen, C-x C-f. När du gett detta kortkommando får du skriva sökvägen till den fil du vill öppna. Tabbkompletteringen fungerar som i skalet. Om du ger en sökväg till en fil som inte finns kommer denna att skapas (om du har rättigheter till det förstås) och därmed finns inget behov av något speciellt kommando för att skapa en ny fil.

För att spara en fil ger du kortkommandot C-x C-s och för att spara med ett nytt filnamn används C-x C-w.

För att ångra din senaste handling används C-_ eller C-x u.

När det är dags att göra något annat och stänga av Emacs kommer C-x C-c (först Control och x samtidigt, sedan Control och c samtidigt) väl till pass.

Textmanipulering

Vi börjar med kommandon för att klippa och klistra. Det är naturligtvis inte Windows-standard som gäller.

BetydelseKortkommando
Klipp utC-w
KopieraM-w
Klistra inC-y

Ibland är det mer aktuellt att bara ta bort text. Naturligtvis finns ett gäng kommandon så att du ska kunna ta bort på en massa sätt.

BetydelseKortkommando
Ta bort ordM-d
Ta bort ord bakåtM-Delete
Ta bort meningM-k
Ta bort mening bakåtC-x Delete
Ta bort resten av radenC-k

Att söka och ersätta är även det centralt.

BetydelseKortkommando
Sök framåtC-s
Sök bakåtC-r
Regexpsökning framåtESC C-s
Regexpsökning bakåtESC C-r
ErsättM-x replace-string
Ersätt med regexpM-x replace-regexp
Interaktiv ersättningM-%

Navigering

Ofta går det bra att navigera med pilarna men av olika orsaker är det inte alltid som det räcker till. Vi tittar på några smidiga kortkommandon för att flytta runt.

BetydelseKortkommando
Uppåt en radC-p
Nedåt en radC-n
Ett tecken bakåtC-b
Ett tecken framåtC-f
Ett ord åt bakåtM-b
Ett ord åt framåtM-f
En mening bakåtM-a
En mening framåtM-e
Gå till början av radenC-a
Gå till slutet av radenC-e
En skärmbild uppåtC-v
En skärmbild nedåtM-v
Centrera kring aktuell radC-l

Att hantera buffertar

Hittills har vi inte diskuterat möjligheten att ha flera buffertar öppna samtidigt men det ska vi göra nu. I Emacsterminologin finns bland annat termerna frame, buffer och window. Det är nog mest dem termerna vi behöver för att förstå oss på kortkommandona.

TermBeskrivning
Ram (Frame)Motsvarar "fönster" i fönstersystemet.
Fönster (Window)En ram kan delas in i flera fönster.
Buffert (Buffer)Öppnade filer sparas i en buffert.

BetydelseKortkommando
Dela fönster vertikaltC-x 2
Dela fönster horisontaltC-x 3
Växla till nästa fönsterC-x o
Ta bort de andra fönstrenC-x 1
Lista buffertarX-x C-b
Växla till buffertC-x b
Stäng buffertC-x k

Modes ger Emacs kameleontegenskaper

Så kallade "modes" utökar funktionaliteten i Emacs till att ge stöd åt olika filer, bland annat en mängd programmeringsspråk. Du måste ge dina filer korrekta filändelser för att Emacs ska förstå vilken mode som är aktuell.

Kommandon för programmeraren

Det finns ett par behändiga kommandon som underlättar livet för programmeraren och gör att denna slipper lämna Emacs för att kompilera/provköra med mera.

Variabelnamnskomplettering

Det krävs ibland långa variabelnamn för att kunna beskriva variabeln väl men det kan vara jobbigt att skriva dessa variabelnamn upprepade gånger. Dessutom finns det en risk att man någonstans stavar fel.

Lösningen stavas M-/.

Matcha parenteser

Ofta indikerar Emacs att ett parentespar hör ihop när den matchande (högra) parentesen skrivs. Om man i efterhand funderar på vilka parenteser som hör samman är kortkommandot % användbart (lånat från Vi). Sätt markören över en parentes (eller måsvinge) och ge kommandot %. Detta är inget som följer med Emacs som standard men jag tyckte det var så smidigt att la till det för alla Emacsanvändare på webbservern.

Kompilera i Emacs

Ibland kan det säkert vara smidigare att ha ett terminalfönster brevid men många gånger går det lika bra inifrån Emacs

M-x compile
Ange kompileringskommandot

För en C++-fil kan lämpligt kompileringskommando vara:

g++ cpluspluskod.cpp -o programNamn

För att se eventuella fel lite mer utförligt är kortkommandot C-x `. Tangenten "backquote" gör jag genom att hålla inne Shift-tangenten och trycka två gånger på tagenten till vänster om "backspace".

Provkör

Beroende på vad du utvecklar kan det vara mer eller mindre lämpligt att köra programmet i Emacs. I vilket fall går det till så här:

M-! <Sökväg till programmet>;

Där <Sökväg till programmet> lämpligen ersätts med den faktiska sökvägen. Observera att M-! används för att köra godtyckligt shellkommando, till exempel mozilla &.

Debugga

Kanske blev det något fel när programmet exekverades. Det är då man kan få användning för debuggern gdb. Givetvis går den bra att köra i Emacs.

M-x gdb;
Ange programmet som ska avlusas.

Jobbet med att hitta buggen/buggarna har bara börjat men att använda gdb är lite utanför detta kapitels ramar. Läs mer om gdb på annat håll.

--------------
Den här filen ändrades senast Mittwoch, 07-Jun-2023 15:22:59 CEST. Exportera till pdf
Respons i någon form mailas till webmaster at webbservern.se