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)
 
 
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 RET … y/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
 
 
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!