Emacskurs

Lars Tveito

larstvei@ifi.uio.no

Table of Contents

Intro

Plan for kurset

  • Før pause:
    • Innføring i Emacs
    • Nyttige kommander
  • Etter pause:
    • Sette opp Emacs på Ifi's maskiner
    • Skrive en enkel konfigurasjonsfil
    • Bruke det vi lærte før pause

Hva er Emacs?

  • Teksteditor
  • Utvidbar (Emacs Lisp)
  • Over 30 år gammel
  • Over 2500 innebygde kommandoer
  • Fri programvare

Rammer, vinduer og buffere

  • Emacs åpnes i en ramme
  • Man kan ha flere vinduer i samme ramme
  • Tekst vises i buffere
  • Du kan ha så mange åpne buffere du vil
  • En fil åpnes i et nytt buffer
  • Minibufferet (nederste linje), brukes til å skrive inn filnavn, buffernavn, etc…

Modes

  • Major modes
    • hvert buffer har kun én aktiv major mode
    • en major mode gir deg funksjonalitet for en bestemt type
      tekstredigering
    • de fleste programmeringsspråk har sin egen major mode
  • Minor modes
    • du kan ha så mange aktive minor modes du ønsker
    • en minor mode tilbyr tilleggsfunksjonalitet
  • Modes tilføyer ofte egne tastekombinasjoner!

Tips

  • Emacs er annerledes å bruke enn mange andre programmer, så det krever tilvenning.
  • i begynnelsen:
    • les og gjør «learn-by-doing tutorial» (C-h t)
    • tving deg selv til å bruke de kommandoene du lærer til de sitter i fingrene
    • unngå «pek og klikk»
  • etter hvert (for spesielt interesserte):
    • skriv din egen config-fil
    • lær litt Emacs lisp, og skriv dine egne funksjoner
  • annet:
    • gjør CAPS-LOCK om til en ekstra Control (Ctrl)

Taster

Terminologi for taster

  • C-<any>
    Control
  • M-<any>
    Meta er Alt på de fleste maskiner (alternativt ESC)
  • <any> betyr et vilkårlig tegn (eller tastekombinasjon)

Prefikstaster

  • C-x <any>
    prefiks for globale kommandoer
  • C-c <any>
    prefiks for lokale kommandoer
    (har ikke alltid samme funksjon!)
  • C-h <any>
    prefiks for hjelp
  • Alle tastekombinasjoner som ikke er en prefiks er bundet til en kommando!

Komme seg ut

  • C-x C-c
    avslutt Emacs
  • C-g
    avbryt
    (bruk hvis du ikke skjønner hva Emacs holder på med!)
  • ESC ESC ESC
    (bruk hvis C-g ikke hjalp)
  • C-<prefix> C-g
    er udefinert
    (Dvs. C-g kan brukes til å avbryte prefiks)

Tekstredigering

  • C-f, C-b
    flytt markøren ett tegn frem/tilbake
  • M-f, M-b
    flytt markøren ett ord frem/tilbake
  • C-a, C-e
    flytt markøren til begynnelsen/slutten av linja
  • C-p, C-n
    flytt markøren til forrige/neste linje

Bla rundt

  • C-v, M-v
    scroll ned/opp en side
  • M-<, M->
    gå til begynnelsen/slutten av bufferet
  • C-l
    vis slik at markøren er i senter/toppen/bunnen

Kill og yank

  • C-w
    kill, tilsvarer cut
  • C-y
    yank, tilsvarer paste
  • M-w
    lagre til kill-ring, tilsvarer copy
  • C-k
    kill, drepe resten av en linje
  • M-y, må etterfølges av C-y
    yank-pop, går lenger tilbake på kill-ring

Feiloppretting

  • C-d, M-d
    fjern neste bokstav/ord
  • C-_, C-/, C-x u
    undo!
  • C-t, M-t
    bytt om to bokstaver/ord
  • C-x C-t
    bytt om to linjer
  • M-q
    plasserer om tekst i en paragraf slik at linjene ikke overstiger 70 tegn (den ødelegger ikke syntaks i programmeringmodes)
  • M-u, M-l, M-c
    gjør neste ord til UPPERCASE/lowercase/Capital-Case

Markering av tekst

  • C-SPC
    markerer tekst
  • C-x h
    markerer all tekst
  • M-h
    markerer en paragraf
  • Bruk i kombinasjon med M-w, C-w og TAB

Filer, vinduer og buffere

Filer

  • C-x C-f
    åpne fil
    (hvis den ikke finnes fra før åpnes et tomt buffer med det nye filnavnet)
  • C-x C-s
    lagre buffer
  • C-x C-w
    skrive til fil (tilsvarende «lagre som…»)

Vinduer

  • C-x 2, C-x 3
    splitt et vindu horisontalt/vertikalt
  • C-x 1
    gjør det aktive vinduet til det eneste vinduet
  • C-x 0
    lukk det aktive vinduet
  • C-x o
    bytt fokus til et annet vindu

Buffere

  • C-x b RET
    bytt buffer
    (siste besøkte buffer er default)
  • C-x k RET
    drep (kill) buffer
    (det aktive bufferet er default)
  • C-x left, C-x right
    en annen måte å bytter buffer på

Kommandoer

  • M-x function RET
    lar deg kalle en vilkårlig kommando med navn
  • M-x replace-string RET erstatt RET med RET
    tilsvarer «search and replace»
  • M-x query-replace RET erstatt RET med RETy/n
    samme som replace-string, men du kan velge hva som skal erstattes (kan også kjøres med M-%!)
  • Bruk TAB for autocomplete!

Søking

  • C-s
    søk fremover i bufferet
  • C-r
    søk bakover i bufferet
  • Dette er en svært effektiv måte å flytte markøren på!

Hjelp til selvhjelp

  • C-h k
    bruk hvis du lurer på hva en tastekombinasjon gjør
  • C-h f
    bruk hvis du kjenner navnet på en funksjon, men ikke vet hva den gjør
  • C-h m
    gir deg informasjon om moden du er i (bl.a. tastekombinasjoner som er spesielle for moden)
  • C-h a
    apropos, lar deg søke i hjelpen
  • C-h C-h (eller: C-h ?)
    gir deg hjelp om hjelpen

Programmering

  • TAB
    indenterer riktig (dersom indenteringen er gal er det et tegn på at det er noe galt i koden!)
  • M-;
    kommenterer ut et markert område
  • M-x compile RET compile-command RET
    lar deg kompilere i Emacs
    (gir trykkbare linker til der feil oppstod)
  • M-g g <nr> RET
    flytter markøren til linjenummer <nr>

Makroer

  • Makroer er en måte å "ta opp" en rekke kommandoer på
  • C-x (
    definer en makro
  • <f3>
    definer en makro eller sett inn løpenummer
  • C-x ), <f4>
    ferdigstill makroen
  • C-x e
    utfør makroen
  • e
    gjenta makroen

Pakker

  • Emacs 24 kommer med innebygd pakkebehandler
  • det finnes tusenvis av pakker
  • M-x list-packages
    bla gjennom pakker
    • i installere
    • U oppgrader alle
    • d slett
    • x utfør installering/oppgradering/sletting

Anbefalinger

Til slutt

Nyttige lenker

Spørsmål?

  • Noen spørsmål nå?
  • Kom ned i pausen hvis dere har spørsmål eller ønske for neste time!
  • Gjerne send mail til larstvei@ifi.uio.no!