Detta dokument är baserat på den engelska handledningen, som har Copyright (c) 1985, 1996 Free Software Foundation, Inc. Se slutet av dokumentet för villkor och förutsättningar. Detta är den Svenska användarhandledningen till Emacs. Emacs-kommandon innebär ofta användning av kontrolltangenten (oftast märkt CTRL eller CTL) eller META-tangenten. På vissa tangentbord är META-tangenten märkt ALT eller EDIT eller något annat. På Suns tangentbord, till exempel, är det rutertangenten till vänster om mellanslagstangenten. Om du inte har någon META-tangent kan du använda ESC. Istället för att skriva META eller KONTROLL kommer vi här att använda följande förkortningar: C- betyder att du skall hålla ner kontrolltangenten samtidigt som du skriver bokstaven . Alltså betyder C-f: håll ner kontrolltangenten och tryck f. M- betyder att du skall hålla ned META-, EDIT- eller ALT-tangenten samtidigt som du skriver . Om du inte har någon META-, EDIT- eller ALT-tangent kan du trycka , släppa tangenten och sedan trycka bokstaven . När vi skriver avser vi ESC-tangenten. Viktigt: För att avsluta Emacs trycker du C-x C-c (två tecken). Tecknen ">>" i vänstermarginalen anger att du kan prova ett kommando. Till exempel: <> >> Tryck C-v (View next screen) för att hoppa till nästa skärmbild. Prova nu. Håll ned kontrolltangenten och tryck v. Från och med nu bör du göra detta när du är färdig med en skärmbild. Notera att det är ett överlapp på två rader när du byter från skärmbild till skärmbild. Detta är för att behålla sammanhanget när du bläddrar framåt i filen. Det första du behöver veta är hur du manövrerar från plats till plats i texten. Du har redan lärt dig hur du flyttar en skärmbild framåt, med C-v. För att flytta dig en skärmbild bakåt trycker du M-v. (Håll ned META-tangenten och tryck v eller tryck v om du inte har META-, EDIT- eller ALT-tangent.) >> Prova att trycka M-v och C-v några gånger. * SAMMANFATTNING ---------------- Följande kommandon är bra för att se hela skärmbilder: C-v Flytta en skärmbild framåt. M-v Flytta en skärmbild bakåt. C-l Rita om skärmen och placera texten där markören står mitt på skärmbilden. (Det är KONTROLL-L, inte KONTROLL-1.) >> Leta reda på markören och se vad som står där. Tryck sedan C-l. Hitta markören igen och notera att det är samma text som står kring markören nu. * GRUNDLÄGGANDE MARKÖRRÖRELSER ------------------------------ Att flytta sig från skärmbild till skärmbild kan vara bra, men hur förflyttar man sig till en speciell plats på skärmen? Det finns flera sätt att göra detta på. Det vanligaste är att använda kommandona C-p, C-b, C-f och C-n. Vart och ett av dessa kommandon flyttar markören en rad eller en kolumn i en bestämd riktning på skärmen. Här visas dessa fyra kommandon och i vilken riktning de flyttar markören: Föregående rad, C-p : : Bakåt, C-b .... Nuvarande markörposition .... Framåt, C-f : : Nästa rad, C-n >> Flytta markören till linjen mitt i diagrammet genom att använda C-n och C-p. Använd sedan C-l för att centrera diagrammet på skärmbilden. Detta är säkert lite enklare att förstå om du tänker på dessa förkortningar: P för föregående (previous), N för nästa (next), B för bakåt (backward) och F för framåt (forward). Detta är de grundläggande kommandona för att flytta markören och du kommer säkert att använda dem hela tiden, så det är en stor fördel om du lär dig dem nu. >> Gör några C-n så att du kommer ned till den här raden. >> Flytta dig in i raden med hjälp av några C-f och sedan uppåt med några C-p. Lägg märke till vad C-p gör när markören står mitt på en rad. Textrader är åtskilda med radslutstecken. Den sista raden i filen avslutas också vanligtvis med ett radslut men Emacs kräver inte att den gör det. >> Prova med C-b i början av en rad. Detta gör att markören flyttas till slutet av den tidigare raden. Detta är för att den flyttar markören över radslutstecknet. C-f flyttar också över radslut, precis som C-b. >> Gör några fler C-b så att du får en känsla för var markören är. Tryck sedan några C-f tills du kommer till slutet av raden. Tryck ytterligare en C-f så att du flyttar markören till nästa rad. När du flyttar markören förbi toppen eller botten av skärmbilden kommer texten utanför skärmen att komma fram. Detta kallas "rullning" och gör det möjligt för Emacs att flytta markören utan att den försvinner ut ur skärmbilden. >> Prova att flytta markören förbi skärmbildens nederkant med hjälp av C-n och se vad som händer. Om det går för sakta att flytta markören ett tecken i taget kan du flytta den ett ord. M-f flyttar markören ett ord framåt och M-b flyttar den ett ord bakåt. >> Prova några M-f och M-b. Om markören står mitt i ett ord kommer M-f att flytta markören till slutet av ordet. Om du står mitt emellan två ord kommer M-f att flytta markören till slutet av nästa ord. M-b fungerar på samma sätt men i motsatt riktning. >> Tryck M-f och M-b några gånger och skifta markörposition med några C-f och C-b så att du ser hur M-f och M-b uppför sig vid olika placeringar av markören både i och mellan ord. Lägg märke till likheten mellan C-f och C-b å ena sidan och M-f och M-b å den andra. Ofta används META-kommandon till språkrelaterade operationer (ord, stycken, avsnitt), medan kontrollkommandon används till grundläggande operationer som inte beror av vad man redigerar (bokstäver, rader, etc.). Denna likhet finns också mellan rader och stycken: C-a och C-e flyttar markören till början av en rad eller till slutet av en rad, medan M-a och M-e flyttar den till början respektive slutet av ett stycke. >> Prova några C-a och sedan några C-e. Prova också några M-a och sedan några M-e. Se hur efterföljande C-a efter varandra inte gör något, medan flera M-a fortsätter att flytta markören till nästa stycke. Även om detta inte verkar självklart är det ganska naturligt. Platsen där markören är i texten kallas också för "arbetspunkt" (point). Eller omskrivet: Markören visar på skärmen var arbetspunkten är i texten. Här är en kort sammanfattning av de enklaste markörförflyttnings- kommandona, inklusive ord- och styckesförflyttningskommandon: C-f Flytta markören ett steg framåt C-b Flytta markören ett steg bakåt M-f Flytta markören ett ord framåt M-b Flytta markören ett ord bakåt C-n Flytta markören till nästa rad C-p Flytta markören till föregående rad C-a Flytta markören till början av raden C-e Flytta markören till slutet av raden M-a Flytta markören till början av meningen M-e Flytta markören till slutet av meningen >> Prova alla dessa kommandon några gånger för tränings skull. Dessa är de kommandon som används mest. Två andra viktiga markörrörelsekommandon är M-< (META mindre-än), som flyttar markören till början av texten, och M-> (META större-än), som flyttar den till slutet av texten. På en del tangentbord är "<" placerad över komma, så att man måste använda skift för att få fram den. På dessa tangentbord måste man också använda skift för att skriva M-<. Utan skifttangenten skulle det bli M-komma. >> Prova M-< nu för att flytta markören till början av vägledningen. Använd sedan C-v för att flytta markören tillbaka hit igen. >> Prova också M-> för att flytta markören till slutet av vägledningen. Använd sedan M-v för att flytta markören tillbaka hit igen. Du kan också flytta markören med hjälp av piltangenterna, om terminalen har piltangenter. Vi föreslår att du lär dig C-b, C-f, C-n och C-p av tre skäl. För det första kommer de att fungera på alla slags terminaler. För det andra kommer du att finna, när du har fått lite träning i att använda Emacs, att det går mycket snabbare att använda kontrollfunktionerna än piltangenterna (för att du undviker att ändra fingersättningen). Den tredje anledningen är att när man har lärt sig att använda kontrolltangenten blir det lättare att lära sig de mer avancerade kontrollfunktionerna. De flesta kommandon i Emacs tar ett numeriskt argument och för de flesta kommandon leder detta till att de repeteras. Ett numeriskt argument anges genom att du skriver C-u och sedan talet, innan du skriver kommandot. Om du har en META- (eller EDIT- eller ALT-) tangent så finns det ett annat alternativ för att ge numeriska argument: skriv talet medan du håller ned META-tangenten. Vi föreslår att du använder C-u för det fungerar på alla slags terminaler. Det numeriska argumentet kallas också för "prefixargument" eftersom det skrivs före kommandot. Till exempel: C-u 8 C-f flyttar markören åtta steg framåt. >> Prova C-n eller C-p med ett numeriskt argument så att du kommer så nära den här raden som möjligt med ett enda kommando. De flesta kommandon använder det numeriska argumentet för ett repeterat utförande men det finns kommandon som använder det annorlunda. Flera kommandon, men inga av dem du lärt dig hittills, använder det som en flagga. Med ett prefixargument, och oberoende av dess värde, gör kommandot något annat. C-v och M-v finns med bland dessa undantag. Om man ger ett argument till ett av dessa kommandon kommer skärmbilden flytta sig upp eller ned så många rader som argumentet anger, istället för så många skärmbilder. Till exempel kommer C-u 8 C-v flytta skärmbilden 8 rader uppåt. >> Prova C-u 8 C-v nu. Detta borde ha flyttat skärmbilden 8 rader uppåt. Om du önskar flytta tillbaka igen är det bara att ge samma argument till M-v. Om du använder Emacs under ett fönstersystem, som X11 eller MS-Windows, finns det troligen ett rektangulärt område på vänster sida av Emacs-fönstret, en så kallad rullningslist. Genom att klicka i den med musen kan du rulla texten. >> Prova att trycka med den mellersta musknappen i det utvalda området på rullningslisten. Detta bör flytta skärmbilden till en plats i texten beroende på var i rullningslisten du trycker. >> Prova att flytta musen upp och ner medan du håller ner den mellersta musknappen. Du ser att texten rullar upp och ner beroende på hur du för musen. * MARKÖRFÖRFLYTTNINGAR PÅ EN X-TERMINAL --------------------------------------- Om du sitter vid en X-terminal kommer du antagligen finna det mycket enklare att använda piltangenterna för att flytta markören. Vänster-, höger-, upp- och nedåt-pilarna flyttar markören i önskad riktning. De fungerar på samma sätt som C-b, C-f, C-p och C-n men är enklare att slå och förstå. Du kan också använda C-vänsterpil och C-högerpil för att flytta markören över ord och C-uppåtpil och C-nedåtpil för att flytta den över textblock. (Till exempel för att flytta förbi ett stycke om du redigerar text.) Om du har tangenter märkta med HOME (eller BEGIN) och END kan du använda dessa för att gå till början respektive slutet av raden och C-HOME och C-END kommer att gå till början respektive slutet av filen. Om tangentbordet har PgUp- och PgDn-tangenter kan du använda dem för att gå upp och ner en skärmbild åt gången på samma sätt som med M-v och C-v. Alla dessa kan också ta numeriska argument, som beskrivits tidigare. Du kan också använda en genväg för att skriva in dessa argument: håll ned CONTROL eller META tangenten och skriv in numret. Till exempel för att gå 12 ord till höger trycker du C-1 C-2 C-högerpil. Lägg märke till att det är mycket enkelt att skriva eftersom du inte behöver släppa kontrolltangenten mellan tangenttryckningarna. * OM EMACS HÄNGER ----------------- Om Emacs slutar att reagera på kommandon kan du lugnt stoppa dem genom att trycka C-g. Du kan också använda C-g för att stoppa ett kommando som tar för lång tid att utföra. Det är också möjligt att använda C-g för att avbryta ett numeriskt argument eller början på ett kommando som du inte önskar att utföra. >> Skriv C-u 100 för att ge ett numeriskt argument på 100 och tryck C-g. Tryck nu C-f. Markören skall nu flytta sig bara ett steg, för att du avbröt argumentet med C-g. Om du av misstag slår blir du kvitt detta med ett C-g. * SPÄRRADE KOMMANDON -------------------- En del Emacs-kommandon är "spärrade" så att nybörjare inte skall använda dem av misstag. Om du provar ett av dessa spärrade kommandon kommer Emacs ge ett meddelande som berättar vilket kommando det är och kommer att fråga om du verkligen vill fortsätta och utföra detta kommando. Om du verkligen önskar att utföra kommandot trycker du mellanslag som svar på frågan. Normalt, om du inte önskar att utföra detta kommando, svarar du "n" på frågan. >> Skriv C-x n p (som är ett spärrat kommando). Skriv n som svar på frågan. * FÖNSTER --------- Emacs kan ha flera fönster och varje fönster kan visa sin egen text. Lägg märke till att "fönster" i Emacs inte refererar till separata överlappande fönster i fönstersystemet, utan till separata delar i ett enda X-fönster.(Emacs kan också ha flera X-fönster eller "ramar" i Emacs-terminologi. Detta beskrivs senare.) Vi kommer förklara senare hur man använder flera fönster. Här skall vi förklara hur man blir av med extra fönster för att komma tillbaka till det grundläggande läget med endast ett fönster. Det är enkelt: C-x 1 Ett fönster (dvs. ta bort alla andra fönster). Det är KONTROLL-x följt av siffran 1. C-x 1 utvidgar fönstret där markören står så att det fyller hela skärmbilden. Alla andra fönster tas bort. >> Flytta markören till den här raden och tryck C-u 0 C-l. (Kom ihåg att C-l rensar skärmen och mittställer raden där markören står. Om du ger ett numeriskt argument till detta kommando betyder det "rensa skärmen och placera raden där markören står på raden som argumentet anger". Därför betyder C-u 0 C-l att skärmen skall rensas och raden där markören står placeras överst.) >> Skriv C-x 2. Se hur det här fönstret krymper samtidigt som ett nytt uppträder med samma innehåll som detta. >> Slå C-x 1 och se hur det nya fönstret nu försvinner. * SKRIVA OCH TA BORT TEXT ------------------------- Om du önskar att sätta in text är det bara att skriva in texten. Tecken som du kan se, så som A, 7, *, etc. tolkas som text och sätts in direkt. Skriv (retur-tangenten) för att sätta in en radbrytning. Du kan radera det sista tecknet du skrev genom att trycka . är en tangent på tangentbordet, som kan vara märkt "Del". I några fall fungerar också "backsteg" som men inte alltid! Generellt raderar tecknet precis före den aktuella markörspositionen. >> Gör detta nu: Skriv in några tecken och ta bort dem genom att använda . Var inte rädd för att skriva i den här filen, du kommer inte att kunna förändra originalet till vägledningen. Detta är bara en lokal kopia. När en rad blir för lång för att rymmas på en skärmbredd så fortsätter den på raden under. Ett bakstreck ("\") (eller om du kör under ett fönstersystem, en liten böjd pil) i slutet av högermarginalen indikerar att raden fortsätter. >> Skriv in lite text så att du kommer till slutet av raden och fortsätt att skriva lite till. Du kommer då att se hur fortsättningstecknet ser ut. >> Använd för att radera texten tills raden ryms på en skärmbredd igen. Fortsättningstecknet kommer då att försvinna. Du kan radera radbrytning precis som andra tecken. Genom att radera radbrytningen mellan två rader slås dessa samman till en. Om resultatet av denna sammanslagning blir för stor för att passa inom en skärmbredd, så kommer den att visas med ett fortsättningstecken. >> Flytta markören till början av en rad och tryck . Detta kommer att klistra ihop raden med raden över. >> Tryck för att sätta in radbrytningen du tog bort. Tänk på att de flesta Emacs-kommandon kan ta numeriska argument. Detta gäller också texttecken. Genom att repetera ett texttecken kommer det skrivas flera gånger. >> Prova det nu: Skriv C-u 8 * för att sätta in ********. Du har nu lärt dig de mest grundläggande sätten att skriva något i Emacs och att rätta fel. Du kan radera ord och rader också. Här är en översikt över kommandon för radering: raderar tecknet som står precis före markören C-d raderar tecknet som står precis under markören M- raderar ordet precis före markören M-d raderar ordet precis efter markören C-k raderar från markören till slutet av raden M-k raderar till slutet av stycket Lägg märke till att och C-d kontra M- och M-d följer mönstret som började med C-f och M-f. ( är inte precis ett kontrolltecken men låt oss inte bry oss om det.) C-k och M-k fungerar på samma sätt som C-e och M-e (nästan). När du raderar mer än ett tecken åt gången kommer Emacs att spara den borttagna texten så att du han hämta tillbaka den igen. Denna text kallas borttagen (killed). Att få tillbaka borttagen text kallas att hämta den (yank). Du kan antingen hämta tillbaka borttagen text till samma plats som den blev raderad eller också kan du sätta in den på en annan plats i texten. Du kan också hämta tillbaka den flera gånger så att du får flera lika förekomster av den. Kommandot för att hämta tillbaka texten är C-y. Skillnaden mellan att "ta bort" (killing) och "radera" (deleting) text är att "borttagen" text kan hämtas tillbaka, medan raderad text inte kan det. Återinsättning av borttagen text kallas "återhämtning" (yanking). Generellt kan man säga att kommandon som tar bort fler än ett tecken sparar undan texten (så att den kan återhämtas) medan kommandon som bara raderar ett tecken eller tomma rader och mellanrum inte sparar någonting (och den texten kan alltså inte återhämtas). >> Flytta markören till början av en rad som inte är tom. Tryck C-k för att ta bort texten på raden. >> Tryck C-k en gång till. Du kommer nu se att den raderar den tomma raden som var kvar. Lägg märke till att ett enstaka C-k bara raderar texten på raden och att det andra C-k raderar själva raden och flyttar upp texten på raden under ett steg. C-k hanterar numeriska argument lite speciellt. Den raderar så många rader OCH innehållet i dem. Detta är alltså inte bara en repetition av kommandot. C-u 2 C-k raderar två rader samt de tomma raderna, medan C-k två gånger inte kommer att göra det. Kommandot för att hämta tillbaka text är C-y. Kommandot hämtar tillbaka den sist borttagna texten och placerar den där markören är. >> Prova: Gör C-y för att få tillbaka texten. Tänk på C-y som om du rycker, eller drar, tillbaka något som någon tagit ifrån dig. Notera att om du gör flera C-k i rad så kommer all bortagen text att sparas samlat så att ett C-y återhämtar alla raderna på en gång. >> Prova detta. Tryck C-k ett par gånger. Och hämta så tillbaka igen: >> Tryck C-y. Flytta markören några rader ned och tryck C-y igen. Så kopierar man text. Men vad gör du om du har en text du önskar att hämta tillbaka men du har redan tagit bort något nytt? C-y skulle hämta tillbaka den senaste texten som blev borttagen men tidigare bortagen text är inte förlorad. Du kan få tillbaka den med kommandot M-y. Efter att du har använt C-y för att hämta tillbaka den sist borttagna texten kommer M-y ersätta denna text med tidigare borttagen text. Genom att göra M-y om och om igen hämtas allt tidigare borttagen text tillbaka. När du har nått den önskade texten behöver du inte göra något ytterligare för att behålla den. Fortsätt bara med din redigeringen och lämna den återtagna texten där den är. Om du gör M-y tillräckligt många gånger kommer du att komma tillbaka till startpunkten (texten som sist blev borttagen). >> Ta bort en rad, flytta markören till en ny rad och ta bort även denna rad. Använd C-y för att hämta tillbaka den sista raden. Tryck M-y för att byta den mot den tidigare borttagna raden. Tryck flera M-y och se vad du får. Fortsätt med detta tills du får tillbaka den första raden igen och sedan några gånger till. Om du vill kan du prova med positiva och negativa argument till M-y. * ÅNGRA ------- Om du gör en förändring i texten och sedan ångrar dig, så kan du upphäva ändringen med kommandot C-x u (undo). Normalt kommer C-x u upphäva förändringen som gjordes av det sist utförda kommandot. Om du repeterar C-x u flera gånger kommer varje repetition upphäva ett kommando till. Det finns två undantag. Kommandon som inte förändrar texten räknas inte (detta inkluderar markörförflyttningar och bläddringskommandon), och inskrivna enkelbokstäver blir vanligtvis grupperade i grupper om upp till 20 tecken. Detta är för att reducera antalet C-x u som behövs för att ångra inskriven text. >> Ta bort den här raden med C-k. C-x u kommer att hämta tillbaka den igen. C-_ är ett alternativ till ångra-kommandot. Den fungerar på samma sätt som C-x u men är enklare att trycka flera gånger i följd. Det olämpliga med C-_ är att den är svår att hitta på en del tangentbord. Det är därför vi också har C-x u. På en del terminaler kan du få fram C-_ genom att trycka / samtidigt som Ctrl hålls nere. Ett numeriskt argument till C-_ eller C-x u medför repetering. Du kan ångra radering av text precis på samma sätt som du kan ångra att du tagit bort text. Skillnaden mellan att ta bort och att radera någonting påverkar endast om du kan hämta tillbaka det med C-y. För ångerfunktionen spelar det ingen roll hur texten försvunnit. * FILER ------- För att texten du har förändrat skall sparas permanent måste du lägga den i en fil. Om du inte gör det kommer texten att försvinna när du avslutar Emacs. Du lägger texten i en fil genom att först finna (find) denna fil. Detta kallas också för att besöka filen (visit). Att finna en fil innebär att du ser filens innehåll i Emacs. På många sätt är det som om du förändrar själva filen men förändringen du gör kommer inte bli permanent förrän filen sparas (save). Detta är för att undvika att halvförändrade filer sparas när du inte vill det. Till och med när du sparar filen kommer Emacs att behålla originalet under ett nytt namn, som backup, ifall du senare ångrar alltihop. Om du tittar nästan längst ner på skärmbilden så kommer du se en rad som börjar och slutar med minustecken, och som innehåller texten "--:-- TUTORIAL.se". Denna del av skärmbilden visar alltid namnet på filen du besöker. Just nu är du inne i en fil som heter "TUTORIAL.se" och som är en personlig kopia av vägledningen till Emacs. Vilken fil du än är inne i så kommer filnamnet stå där. Kommandot för att finna filer och spara filer skiljer sig lite från andra kommandon du har lärt dig eftersom de består av två tecken. Bägge startar med tecknet KONTROLL-x. Det är faktisk många kommandon som startar med KONTROLL-x och många av dem har med filer, skärmbilder och liknande saker att göra. Dessa kommandon är två, tre eller fyra tecken långa. En annan sak med kommandot för att finna filer är att du måste ange vilket filnamn du önskar. Vi säger att kommandot "läser ett argument från terminalen". I detta fall är argumentet namnet på filen. Efter att du gett kommandot C-x C-f Finn en fil kommer Emacs fråga efter ett filnamn. Filnamnet du skriver syns på den nedersta raden i skärmbilden. Denna sista rad kallas minibuffert när den används på det här sättet. Du kan använda vanliga Emacs-kommandon för att förändra filnamnet. När du skriver in filnamnet, eller något annat i minibufferten, kan du avbryta med kommandot C-g. >> Skriv C-x C-f och så C-g. Detta avbryter minibufferten och avbryter också C-x C-f kommandot som använde minibufferten. Så att du inte finner någon fil. När du är färdig med att skriva filnamnet trycker du för att utföra kommandot. Då kommer C-x C-f kommandot att börja leta fram filen. Minibufferten försvinner när C-x C-f kommandot är färdigt. Efter en liten stund kommer filen upp på skärmen och du kan börja redigera innehållet. När du vill spara filen kan du använda detta kommando C-x C-s Spara fil Detta sparar texten på skärmen till filen. Första gången detta görs kommer Emacs att ge originalfilen ett nytt namn så att den inte går förlorad. Det nya filnamnet bildas genom att lägga till ett "~" i slutet av det ursprungliga filnamnet. När lagringen är utförd kommer Emacs skriva ut namnet på filen som blev sparad. Du bör spara ofta så att du inte förlorar så mycket om systemet kraschar. >> Skriv C-x C-s för att spara en kopia av denna vägledning. Detta skall leda till att "Wrote ...TUTORIAL.se" skrivs ut nederst på skärmbilden. Observera: På vissa system leder C-x C-s till att skärmen låser sig. Detta tyder på att systemet har "flödeskontroll" och att denna har fångat C-s och inte skickat den vidare till Emacs. För att fortsätta måste du trycka C-q. Se i så fall i avsnittet "Spontaneous Entry to Incremental Search" i Emacs-manualen för att få tips på hur detta kan undvikas. Du kan finna en existerande fil, antingen för att förändra den eller för att titta på den. Du kan också finna en fil som inte existerar. Det är så man skapar nya filer med Emacs: finn filen, som är tom till att börja med, och sätt igång med att skriva texten som skall in i filen. Först när du sparar filen kommer Emacs att verkligen skapa filen med den text du har skrivit. Från och med detta editerar du en fil som existerar. * BUFFERTAR ----------- Om du finner en ny fil med C-x C-f kommer den första filen fortsätta att vara öppen i Emacs. Du kan byta tillbaka till den genom att finna den på nytt med C-x C-f. På så sätt kan du ha ett stort antal filer öppna i Emacs. >> Skapa en fil med namnet "foo" genom att trycka C-x C-f foo . Skriv in lite text, redigera den och spara "foo" genom att använda C-x C-s. Skriv till slut C-x C-f TUTORIAL.se för att komma tillbaka till den här vägledningen. Emacs sparar texten för varje fil i ett objekt kallat "buffert". När du finner en ny fil skapas en ny buffert i Emacs. För att se en lista över existerande buffertar i Emacs kan du skriva C-x C-b Listning av buffertar. >> Prova C-x C-b nu. Se hur varje buffert har ett namn och att de också kan ha namnet på den fil som innehållet kommer från. En del buffertar är inte knutna till någon fil, till exempel bufferten "*Buffer List*". Det är den buffert som innehåller buffertlistan som skapades med C-x C-b. Vilken text du än ser i ett Emacs-fönster så tillhör den alltid en buffert. >> Skriv C-x 1 för att bli kvitt buffertlistan. Om du ändrar texten till en fil och sedan öppnar en ny fil, så kommer inte den första filen sparas. Förändringen ligger kvar i bufferten. Skapande och redigering av den nya filen påverkar inte den första filens buffert. Detta kan vara bra men betyder också att du behöver ett lämpligt sätt att spara den första filens buffert. Det är omständligt att flytta tillbaka till den tidigare bufferten med C-x C-f för att sedan spara filen med C-x C-s. Därför finns kommandot C-x s Spara buffertar C-x s frågar för varje buffert med ändringar, som inte sparats, om du vill spara eller ej. >> Sätt in en rad med text och spara med C-x s Du skall nu få frågan om du önskar spara bufferten TUTORIAL.se. Svara ja på frågan genom att trycka "y" (yes). * ANVÄNDNING AV MENYER ---------------------- Om du använder en X-terminal kommer du säkert att lägga märke till menyerna på toppen av skärmbilden. Via dessa menyer får du tillgång till de mest använda Emacs-kommandona, till exempel find-file (Open...). Detta är enklast i början, när du inte känner till alla tangenttryckningar som skall till för varje kommando. När du lärt känna Emacs kommer det vara lättare att använda tangentbordet. Tangentbordskombinationen står precis efter respektive menykommando. Lägg märke till att det är många menykommandon som inte har någon tangentbordskombination. Ett exempel är buffertmenyn (Buffers), som listar alla tillgängliga buffertar. Du kan enkelt byta till en buffert genom att välja namnet på den i buffertmenyn. * ANVÄNDNING AV MUSEN --------------------- När du kör Emacs under X är det möjligt att använda musen. Du kan placera markören genom att trycka på den vänstra musknappen vid önskad position och du kan markera text genom att hålla ned vänstra musknappen samtidigt som du flyttar markören över texten du vill markera. Alternativt kan du klicka med vänster musknapp i den ena änden av texten du önskar att markera, flytta muspekaren till den andra änden och använd skiftklick (tryck med musknappen samtidigt som skifttangenten trycks ned) för att markera texten. För att ta bort den markerade texten kan du använda kommandot C-w eller välja "Klipp" (Cut) från redigeramenyn (Edit). Lägg märke till att dessa *inte* är likvärdiga. C-w sparar bara texten internt i Emacs (a`la C-k, som beskrivits tidigare), medan Klipp också lägger texten i X klippbord, där den är tillgänglig även för andra applikationer. För att hämta text från klippbordet kan du använda "Klistra in" (Paste) från redigeramenyn. Den mellersta musknappen används vanligen för att välja saker från skärmen. Om du till exempel går in i Info (on-line dokumentationen till Emacs) med C-h i eller via hjälpmenyn (Help), kan du följa länkarna genom att trycka med den mellersta musknappen. Om du skriver in ett filnamn (till exempel efter C-x C-f) och trycker TAB för att få fram en fillistning, så kan du avsluta filnamnet genom att trycka ned den mellersta musknappen på filnamnet. Genom att trycka med höger musknapp kan du få fram en popupmeny. Innehållet i den menyn är beroende av vilket läge du är i och vanligtvis innehåller den några av de mest använda kommandona så att de blir lätt tillgängliga. >> Tryck på höger musknapp nu. Du måste hålla knappen nere för att menyn skall visas. * UTVIDGNING AV KOMMANDOMÄNGDEN ------------------------------- Det finns mycket fler Emacs-kommandon än antalet KONTROLL- eller META-tangenter. För att komma förbi denna begränsning har Emacs ett "X"- (eXtend) kommando. Detta finns i två varianter: C-x Tecken-utvidgning. Följs av ett tecken. M-x Namngiven kommandoutvidgning. Följs av ett kommandonamn. Detta är kommandon som är bra att ha men används mer sällan än de kommandon du redan har lärt dig. Du har redan sett två av dem, C-x C-f för finn, och C-x C-s för spara. Ett annat exempel är kommandot för att avsluta Emacs som är C-x C-c. Var inte rädd för att förlora förändringar du har gjort. C-x C-c erbjuder dig att spara förändringar innan Emacs avslutas. C-z är kommandot för att avsluta Emacs *tillfälligt* så att du kan återvända till samma Emacs senare. På system som tillåter det kommer C-z suspendera Emacs, dvs. returnera till kommandoraden utan att avsluta Emacs. I de flesta system kan du få tillbaka Emacs med kommandot 'fg' eller '%emacs'. På system som saknar suspendering startar C-z ett skal som kör under Emacs och som ger dig chansen till att köra andra program och sedan återgå till Emacs efteråt. Den ger ingen riktig avslutning av Emacs. I detta fall återvänder man vanligtvis till Emacs med kommandot 'exit'. C-x C-c används när du skall avsluta Emacs. Det är klokt att avsluta Emacs om den har startats av ett mail-program eller andra applikationer eftersom det inte är säkert att de kan hantera suspendering av Emacs. Under normala omständigheter, om du inte har tänkt att logga ut, är det bättre att suspendera Emacs med C-z istället för att avsluta. Det finns många C-x kommandon. Här är en lista över de du har lärt dig hittills: C-x C-f Finn fil. C-x C-s Spara fil. C-x C-b Lista buffertar. C-x C-c Avsluta Emacs. C-x 1 Ta bort alla utom ett fönster. C-x u Ångra. Namngivna utvidgade kommandon är kommandon som används mycket sällan eller bara i vissa lägen. Ett exempel på ett sådant kommando är replace-string, som globalt ersätter en teckensträng med en annan. När du skriver M-x kommer Emacs visa en prompt nederst i skärmbilden med M-x där du skall skriva in kommandot du önskar att köra, i det här fallet "replace-string". Det är bara att skriva "repl s" och Emacs kommer då att fylla i kommandonamnet. ( är tabulatortangenten, som vanligtvis finns över CapsLock- eller skifttangenten nära den vänstra kanten på tangentbordet.) Avsluta kommandot med . Kommandot replace-string kräver två argument, teckensträngen som skall ersättas och teckensträngen som den skall ersättas med. Du måste avsluta bägge argumenten med . >> Flytta markören till den blanka raden två rader under denna rad. Skriv M-x repl sförändradändrad. Lägg märke till hur den här raden har blivit förändrad. Du har ersatt ordet f-ö-r-ä-n-d-r-a-d med "ändrad" på alla platser där ordet förekom, från markören och nedåt. * SPARAUTOMATIK --------------- När du har gjort förändringar i en fil men inte sparat den, så kommer ändringarna att gå förlorade om maskinen kraschar. Som ett skydd mot detta sparar Emacs periodiskt ändringarna i en autosparfil för varje fil du redigerar. Denna fil har ett # i början och slutet av filnamnet. Om du till exempel har en fil med namnet "hej.c" så kommer namnet på autosparfilen bli "#hej.c#". När du sparar filen på vanlig sätt kommer Emacs radera autosparfilen. Om maskinen kraschar kan du återfå dina automatiskt sparade ändringar genom att finna filen på vanlig sätt (filen du redigerade, inte autosparfilen) och skriva M-x recover-file. När Emacs vill ha bekräftelse svarar du yes för att återställa filen. * EKOOMRÅDE ----------- Om Emacs ser att du skriver kommandon långsamt så kommer de att visas på den nedersta raden i skärmbilden i ett område som kallas "ekoområde" (echo area). Detta område innehåller den nedersta raden på skärmbilden. * LÄGESRADEN ------------ Raden precis över ekoområdet kallas "lägesrad" (modeline). Den ser ungefär ut så här: --:** TUTORIAL (Fundamental)--L670--58%---------------- Raden innehåller information om Emacs och texten du redigerar. Du vet redan vad filnamnet betyder, det är den fil du har funnit. -NN%-- visar den aktuella positionen i texten, dvs. NN procent av texten befinner sig över toppen av skärmbilden. Om toppen av filen är i skärmbilden kommer det stå --Top-- istället för --00%-- och om slutet av filen är i skärmbilden kommer det stå --Bot--. Om du ser på en fil där hela texten passar in på en sida kommer det stå --All--. Bokstaven L följd av siffror anger positionen på ett annat sätt. Siffrorna visar vilken rad som markören befinner sig på. Stjärnorna nära början av raden visar att det har skett förändringar i filen sedan den sist blev sparad. När du precis har öppnat en fil kommer det inte stå något här, bara minustecken. Den del av lägesraden som står inom parentes visar vilket redigeringsläge (mode) du använder. Standardläget är "Fundamental", som du använder nu. Det är ett exempel på ett huvudläge (major mode). Emacs har många olika huvudlägen. Några av dem är gjorda för redigering av olika programmeringsspråk eller typer av text, till exempel Lisp mode och Text mode. Det kan bara vara ett huvudläge åt gången och lägesnamnet står alltid där det står Fundamental nu. Varje huvudläge gör att en del kommandon uppför sig annorlunda. Det finns till exempel kommandon för att sätta in kommentarer i programkod och eftersom varje programmeringsspråk har sitt sätt att skriva kommentarer på så måste de olika huvudlägena sätta in dessa kommentarer på olika sätt. Varje huvudläge namnger ett utvidgat kommando som används för att byte till det läget. Till exempel är M-x fundamental-mode kommandot för att byta till huvudläget Fundamental. Om du skall redigera text, såsom den här filen, bör du troligen använda Text-läge. >> Skriv M-x text mode. Inget av kommandona du har lärt dig hittills förändrar Emacs i någon högre grad. Men lägg märke till att M-f och M-b nu behandlar apostrofer som en del av ord. Tidigare, i Fundamental mode, behandlade M-f och M-b apostrofer som ordavskiljare. Varje huvudläge gör vanligtvis små förändringar som denna och de flesta kommandon gör samma sak i varje huvudläge, de fungerar bara lite annorlunda. För att få fram dokumentationen för det läge du är i nu kan du skriva C-h m. >> Använd C-u C-v så att denna rad kommer nära toppen av skärmbilden. >> Skriv C-h m och se hur Text-läget skiljer sig från Fundamental-läget. >> Tryck q för att ta bort dokumentationen från skärmbilden. Huvudläge kallas så för att det även finns sidolägen (minor mode). Ett sidoläge ersätter inte ett huvudläge, utan modifierar det. Varje sidoläge kan stängas av och på oberoende av andra sidolägen och oberoende av huvudläget. Därför kan du använda ett sidoläge, en kombination av flera sidolägen eller inget sidoläge alls. Ett bra sidoläge, speciellt för redigering av text, är radbrytningsläget (auto-fill-mode). När detta läge är på bryter Emacs rader mellan ord automatisk när du skriver in text så att en rad blir för lång. Du kan slå på radbrytningsläget genom att skriva M-x auto fill mode. När läget är påslaget kan du slå av det igen genom att upprepa M-x auto fill mode. Om läget är avslaget slår kommandot på det och vice versa. Vi säger att kommandot "växlar läget". >> Skriv M-x auto fill mode nu. Skriv så in en rad med "asdf " tills raden delar sig. Du måste sätta in blanktecken, för Auto Fill bryter bara raden mellan ord. Marginalen är vanligtvis satt till 70 tecken men du kan ändra detta genom att använda kommandot C-x f. Antalet tecken ges till kommandot genom ett numeriskt argument. >> Skriv C-x f med ett argument på 20. (C-u 2 0 C-x f). Skriv sedan in någon text och lägg märke till att Emacs bryter rader som är längre än 20 tecken. Sätt tillbaka marginalen till 70 tecken igen, genom att använda C-x f en gång till. Om du gör förändringar mitt i en rad så kommer inte sidoläget Auto Fill att kunna omformattera raderna för dig. För att göra detta kan du trycka M-q med markören inne i det avsnittet du önskar att omformatera. >> Flytta markören in i föregående stycke och tryck M-q. * SÖKNING --------- Emacs kan söka efter textsträngar (grupper med sammanhängande bokstäver eller ord) antingen framåt eller bakåt i texten. När du söker efter text kommer markören att flytta sig till nästa plats där teckensträngen uppträder. Sökmetoden i Emacs skiljer sig lite från sökmetoder i andra redigeringsprogram genom att den är inkrementell. Detta betyder att sökandet fortgår medan du skriver in teckensträngen du skall söka efter. Kommandot för att inleda en sökning är C-s för att söka framåt och C-r för att söka bakåt. MEN VÄNTA! Prova dem inte än. När du skriver C-s kommer du lägga märke till att texten "I-search" dyker upp i eko-området. Detta säger dig att Emacs är inne i sidoläget inkrementell sökning och väntar på att du skall skriva in det du letar efter. avslutar sökandet. >> Skriv nu C-s för att starta en sökning. Skriv nu långsamt, en bokstav i taget, ordet 'markör', och gör en paus efter varje gång du skriver en bokstav så att du ser vad som sker med markören. Nu har du sökt efter ordet "markör" en gång. >> Skriv C-s en gång till för att söka efter nästa förekomst av ordet "markör". >> Tryck nu på fyra gånger och se hur markören flyttar sig >> Tryck för att avsluta sökandet. Såg du vad som hände? Under inkrementell sökning försöker Emacs att gå till den första förekomsten av texten som du har skrivit så långt, och markerar träffen så att du ser var den är. För att gå till nästa förekomst av ordet 'markör' är det bara att trycka C-s en gång till. Om det inte finns flera förekomster kommer Emacs att pipa och meddela att sökandet har misslyckats. C-g avbryter också sökandet. Observera: På vissa system gör C-s att skärmen låser sig. Detta tyder på att systemets flödeskontroll har fångat upp C-s och inte skickat den vidare till Emacs. För att fortsätta måste du trycka C-q. Se i så fall avsnittet "Spontaneous Entry to Incremental Search" i Emacs-manualen för råd om hur detta kan undvikas. Om du är inne i en inkrementell sökning och trycker kommer du lägga märke till att den sista bokstaven i söksträngen blir raderad och sökandet hoppar tillbaka till en tidigare förekomst. Om du till exempel skriver "m" för att söka efter den första förekomsten av "m", och sedan trycker "a" så kommer markören flytta sig till första förekomsten av "ma". Tryck nu . Detta avlägsnar "a" från söksträngen, och markören flyttar sig tillbaka till den första förekomsten av "m". Om du är mitt i en sökning och trycker ett KONTROLL- eller META-tecken så avbryts sökandet. Undantag är tecken som används under sökningen, så som C-s och C-r. C-s startar en sökning som letar efter varje förekomst av söksträngen EFTER markörspositionen. Om du skall söka efter en sträng tidigare i texten måste du använda C-r. Allt vi har sagt om C-s gäller också för C-r, bortsett från att riktningen på sökningen är den omvända. * FLERA FÖNSTER --------------- En av egenskaperna hos Emacs är att den kan visa mera än en buffert på skärmen samtidig. >> Flytta markören till den här raden och tryck C-u 0 C-l (alltså KONTROLL-L, inte KONTROLL-1). >> Skriv nu C-x 2, som leder till att skärmen delas i två fönster. Bägge fönstren visar den här vägledningen. Markören står i det övre fönstret. >> Skriv C-M-v för att rulla det nedre fönstret. (Om du inte har META-tangenten trycker du ESC C-v.) >> Skriv C-x o (o för other) för att flytta markören till det nedre fönstret. >> Använd C-v och M-v i det nedre fönstret för att flytta upp och ned i texten. Fortsätt att läsa den här texten i det övre fönstret. >> Skriv C-x o igen för att flytta markören tillbaka till det övre fönstret. Markören i det övre fönstret står på samma plats som det gjorde när du lämnade det. Du kan fortsätta att använda C-x o för att byta mellan de två fönstren. Vart och ett av fönstren har sin egen markörposition men det är bara ett av fönstren som visar den. Alla redigeringskommandon fungerar i det fönster där markören är synlig. Vi kallar detta fönster för det valda fönstret (selected window). Kommandot C-M-v är bra när du redigerar text i ett fönster och använder det andra fönstret för referenser. Då kan du kan ha markören i samma fönster hela tiden och du kan använda C-M-v för att flytta dig i det andra fönstret. C-M-v är ett exempel på en KONTROLL-META-kombination. Om du har META-tangenten håller du både KONTROLL och META nedtryckt samtidigt som du trycker v. Det har ingen betydelse vilken av tangenterna KONTROLL och META som trycks först, för bägge fungerar så att de "modifierar" de andra tangenterna du trycker. Om du inte har META-tangenten och använder ESC istället är ordningsföljden viktig. Du måste trycka ESC följt av KONTROLL-v, KONTROLL-ESC v fungerar inte. Det är för att ESC är ett tecken i sig och inte en äkta "modifierare". >> Skriv C-x 1 i det övre fönstret för att bli kvitt det nedre fönstret. Om du hade skrivit C-x 1 i det nedre fönstret skulle det övre ha försvunnit. Tänk på detta kommando som "Behåll bara ett fönster, det som markören står i." Du måste inte ha samma buffert i bägge fönstren. Du kan använda C-x C-f för att finna en ny fil i ett av fönstren samtidigt som det andra fönstret förblir oförändrat. Du kommer att märka att fönstren är helt oberoende. Här är ett annat sätt att använda två fönster till att visa två olika filer: >> Skriv C-x 4 C-f följt av ett filnamn. Avsluta med . Den nya filen kommer då att dyka upp i det nedre fönstret. Markören flyttats också dit. >> Skriv C-x o för att gå tillbaka till det övre fönstret och C-x 1 för att bli kvitt det nedre igen. * REKURSIVA REDIGERINGSNIVÅER ----------------------------- Ibland kan du hamna i något som kallas "rekursiv redigering" (recursive editing level). Detta indikeras med hakparenteser runt huvudläget i lägesraden. Till exempel kan det stå [(Fundamental)] istället för (Fundamental). För att komma ur rekursiv redigering trycker du ESC ESC ESC. Detta är ett generellt brytkommando. Du kan också använda det för att bli kvitt extra fönster och för att komma ut ur minibufferten. >> Skriv M-x för att komma in i minibufferten. Skriv så ESC ESC ESC för att komma ut. Du kan inte använda C-g för att komma ut ur rekursiv redigering. Detta är för att C-g används för att avbryta kommandon och argument under rekursiv redigering. * MER HJÄLP ----------- I denna vägledning har vi försökt inkludera precis så mycket information att du kan börja använda Emacs. Det finns så många möjligheter i Emacs att det skulle vara omöjligt att förklara alla här. Men du VILL säkert lära dig mer om Emacs eftersom den har många goda egenskaper. Emacs tillhandahåller kommandon för att läsa all dokumentation. Dessa hjälpkommandon startas med teckenkombinationen C-h. För att använda hjälpen skriver du C-h följt av ett tecken för den hjälp du behöver. Om du verkligen är helt villrådig kan du trycka C-h ? för att Emacs skall visa vilken hjälp som finns tillgänglig. Om du har skrivit C-h och bestämmer dig för att du inte behöver ha någon hjälp kan du trycka C-g för att avbryta. (På vissa platser är C-h omkonfigurerad. Det är normalt ingen bra ide´, så du kan på goda grunder klaga hos systemadministratören. Under tiden, om C-h inte visar ett hjälpmeddelande längst ner på skärmen, kan du i stället försöka med funktionstangenten F1 eller M-x help.) Den mest grundläggande hjälp-funktionen är C-h c. Skriv C-h, ett "c" och en knappsekvens. Emacs ger då en beskrivning av kommandot. >> Skriv C-h c C-p. Meddelandet skall då bli något i stil med C-p runs the command previous-line Detta ger ett funktionsnamn. Funktionsnamnen används huvudsakligen för att specialanpassa och utvidga Emacs. Men eftersom funktionerna har beskrivande namn kan de också fungera som en enkel dokumentation, tillräckligt för att påminna dig om kommandon du redan lärt dig. Flerteckenskommandon, så som C-x C-s och (om du inte har META, EDIT eller ALT tangenten) v, är också tillåtna efter C-h c. För att få mer information om ett kommando kan du använda C-h k istället för C-h c. >> Skriv C-h k C-p. Detta kommer visa funktionens dokumentation och namn i ett eget fönster. För att avsluta hjälpfönstret kan du trycka q. Du behöver inte göra det omedelbart. Du kan editera med hjälptexten som stöd för att först senare ta bort fönstret med q. Här är fler varianter på C-h: C-h f Beskriv en funktion. Du skriver in funktionsnamnet. >> Prova att skriva C-h f previous-line. Detta ger den information Emacs har om funktionen som implementerar kommandot C-p. C-h a Apropos. Listar alla funktioner och variabler som innehåller söksträngen. Kommandon som startas med M-x markeras med en stjärna (*) till vänster om funktionsnamnet. >> Skriv C-h a newline. Detta ger en lista över alla funktioner och variabler där "newline" ingår i namnet. Du kan trycka eller klicka med den mellersta musknappen för att hitta mer information om en funktion eller variabel. Tryck q för att avsluta. * TILL SIST ----------- Tänk på att använda C-x C-c för att avsluta Emacs permanent. För att tillfälligt gå till ett skal, så att du senare kan komma tillbaka igen, använd C-z. (Under X kommer detta att minimera Emacs.) Denna vägledningen är avsedd för nya användare, om det är något som är oklart duger det inte att sitta och tycka synd om sig själv -- Skicka ett mail och klaga! * KOPIERING ----------- Denna vägledning härstammar från en hel rad Emacs-vägledningar och den första skrevs av Stuart Cracraft för den ursprungliga Emacs. Ben Wing uppdaterade vägledningen för X Windows. Martin Buchholz och Hrvoje Niksic lade till mer ändringar för XEmacs och Mats Lidell översatte den till Svenska. This version of the tutorial, like GNU Emacs, is copyrighted, and comes with permission to distribute copies on certain conditions: Copyright (c) 1985, 1996 Free Software Foundation Permission is granted to anyone to make or distribute verbatim copies of this document as received, in any medium, provided that the copyright notice and permission notice are preserved, and that the distributor grants the recipient permission for further redistribution as permitted by this notice. Permission is granted to distribute modified versions of this document, or of portions of it, under the above conditions, provided also that they carry prominent notices stating who last altered them. The conditions for copying Emacs itself are more complex, but in the same spirit. Please read the file COPYING and then do give copies of GNU Emacs to your friends. Help stamp out software obstructionism ("ownership") by using, writing, and sharing free software!