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!