emacskurs/slides.org

323 lines
6.3 KiB
Org Mode
Raw Normal View History

#+TITLE: Emacskurs
#+EMAIL: larstvei@ifi.uio.no
2015-03-06 20:14:27 +00:00
* Plan for kurset
2024-09-04 09:05:44 +00:00
- Før pause:
- Liten demonstrasjon av hvordan man kommer igang med Emacs på Ifi's maskiner
- Snakk om hva Emacs er
- Gå raskt gjennom foilene og dekker «basics»
- Etter pause:
- Mer praktiske eksempler.
- Vise hvordan Org-mode fungerer, og hva det kan brukes til
- Tar imot alt av spørsmål fra salen!
2013-08-01 01:11:08 +00:00
* Hva er Emacs?
2024-09-04 09:05:44 +00:00
- Teksteditor
- Utvidbar (Emacs Lisp)
- Over 30 år gammel
- Over 2500 innebygde kommandoer
- Fri programvare
* Rammer, vinduer og buffere
2024-09-04 09:05:44 +00:00
- 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
2013-08-01 01:11:08 +00:00
2024-09-04 09:05:44 +00:00
- 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
2013-08-01 01:11:08 +00:00
2024-09-04 09:05:44 +00:00
- Modes tilføyer ofte egne tastekombinasjoner!
2013-08-01 01:11:08 +00:00
* Tips
2013-08-01 01:11:08 +00:00
2024-09-04 09:05:44 +00:00
- Emacs er annerledes å bruke enn mange andre programmer, så det krever tilvenning.
2013-08-01 01:11:08 +00:00
2024-09-04 09:05:44 +00:00
- 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»
2015-03-06 20:14:27 +00:00
2024-09-04 09:05:44 +00:00
- etter hvert (for spesielt interesserte):
- skriv din egen config-fil
- lær litt Emacs lisp, og skriv dine egne funksjoner
- gjør =CAPS-LOCK= om til en ekstra Control (=Ctrl=)
2013-08-01 01:11:08 +00:00
* Terminologi for taster
2013-08-01 01:11:08 +00:00
2024-09-04 09:05:44 +00:00
- =C-<any>=
Control
- =M-<any>=
Meta er =Alt= på de fleste maskiner (alternativt =ESC=)
2013-08-01 01:11:08 +00:00
2024-09-04 09:05:44 +00:00
- =<any>= betyr et vilkårlig tegn (eller tastekombinasjon)
2013-08-01 01:11:08 +00:00
* Prefikstaster
2013-08-01 01:11:08 +00:00
2024-09-04 09:05:44 +00:00
- =C-x <any>=
prefiks for globale kommandoer
2013-08-01 01:11:08 +00:00
2024-09-04 09:05:44 +00:00
- =C-c <any>=
prefiks for lokale kommandoer
(har ikke alltid samme funksjon!)
2013-08-01 01:11:08 +00:00
2024-09-04 09:05:44 +00:00
- =C-h <any>=
prefiks for hjelp
- Alle tastekombinasjoner som ikke er en prefiks er enten bundet til en
kommando eller udefinert.
2013-08-01 01:11:08 +00:00
* Komme seg ut
2013-08-01 01:11:08 +00:00
2024-09-04 09:05:44 +00:00
- =C-x C-c=
avslutt Emacs
- =C-g=
avbryt
(bruk hvis du ikke skjønner hva Emacs holder på med!)
2013-08-01 01:11:08 +00:00
2024-09-04 09:05:44 +00:00
- =ESC ESC ESC=
(bruk hvis =C-g= ikke hjalp)
2013-08-01 01:11:08 +00:00
2024-09-12 14:38:26 +00:00
- =<prefix> C-g=
2024-09-04 09:05:44 +00:00
er udefinert
(Dvs. =C-g= kan brukes til å avbryte prefiks)
2013-08-01 01:11:08 +00:00
* Tekstredigering
2013-08-01 01:11:08 +00:00
2024-09-04 09:05:44 +00:00
- =C-f=, =C-b=
flytt markøren ett tegn frem/tilbake
2013-08-01 01:11:08 +00:00
2024-09-04 09:05:44 +00:00
- =M-f=, =M-b=
flytt markøren ett ord frem/tilbake
2013-08-01 01:11:08 +00:00
2024-09-12 14:38:26 +00:00
- =C-M-f=, =C-M-b=
flytt markøren ett uttrykk frem/tilbake
2024-09-04 09:05:44 +00:00
- =C-a=, =C-e=
flytt markøren til begynnelsen/slutten av linja
- =C-p=, =C-n=
flytt markøren til forrige/neste linje
2013-08-01 01:11:08 +00:00
* Bla rundt
2013-08-01 01:11:08 +00:00
2024-09-04 09:05:44 +00:00
- =C-v=, =M-v=
scroll ned/opp en side
- =M-<=, =M->=
gå til begynnelsen/slutten av bufferet
2013-08-01 01:11:08 +00:00
2024-09-04 09:05:44 +00:00
- =C-l=
vis slik at markøren er i senter/toppen/bunnen
2013-08-01 01:11:08 +00:00
* Kill og yank
2013-08-01 01:11:08 +00:00
2024-09-04 09:05:44 +00:00
- =C-w=
kill, tilsvarer cut
- =C-y=
yank, tilsvarer paste
2013-08-01 01:11:08 +00:00
2024-09-04 09:05:44 +00:00
- =M-w=
lagre til kill-ring, tilsvarer copy
2013-08-01 01:11:08 +00:00
2024-09-04 09:05:44 +00:00
- =C-k=
kill, drepe resten av en linje
2013-08-01 01:11:08 +00:00
2024-09-04 09:05:44 +00:00
- =M-y=, må etterfølges av =C-y=
yank-pop, går lenger tilbake på kill-ring
2013-08-01 01:11:08 +00:00
* Feiloppretting
2013-08-01 01:11:08 +00:00
2024-09-04 09:05:44 +00:00
- =C-d=, =M-d=
fjern neste bokstav/ord
2013-08-01 01:11:08 +00:00
2024-09-04 09:05:44 +00:00
- =C-_=, =C-/=, =C-x u=
undo!
2013-08-01 01:11:08 +00:00
2024-09-04 09:05:44 +00:00
- =C-t=, =M-t=
bytt om to bokstaver/ord
2013-08-01 01:11:08 +00:00
2024-09-04 09:05:44 +00:00
- =C-x C-t=
bytt om to linjer
2013-08-01 01:11:08 +00:00
2024-09-04 09:05:44 +00:00
- =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
2013-08-01 01:11:08 +00:00
* Markering av tekst
2013-08-01 01:11:08 +00:00
2024-09-04 09:05:44 +00:00
- =C-SPC=
markerer tekst
- =C-x h=
markerer all tekst
2013-08-01 01:11:08 +00:00
2024-09-04 09:05:44 +00:00
- =M-h=
markerer en paragraf
2013-08-01 01:11:08 +00:00
2024-09-04 09:05:44 +00:00
- Bruk i kombinasjon med =M-w=, =C-w= og =TAB=
2013-08-01 01:11:08 +00:00
* Filer
2013-08-01 01:11:08 +00:00
2024-09-04 09:05:44 +00:00
- =C-x C-f=
åpne fil
(hvis den ikke finnes fra før åpnes et tomt buffer med det nye filnavnet)
2013-08-01 01:11:08 +00:00
2024-09-04 09:05:44 +00:00
- =C-x C-s=
lagre buffer
- =C-x C-w=
skrive til fil (tilsvarende «lagre som...»)
2013-08-01 01:11:08 +00:00
* Vinduer
2013-08-01 01:11:08 +00:00
2024-09-04 09:05:44 +00:00
- =C-x 2=, =C-x 3=
splitt et vindu horisontalt/vertikalt
- =C-x 1=
gjør det aktive vinduet til det eneste vinduet
2013-08-01 01:11:08 +00:00
2024-09-04 09:05:44 +00:00
- =C-x 0=
lukk det aktive vinduet
2013-08-01 01:11:08 +00:00
2024-09-04 09:05:44 +00:00
- =C-x o=
bytt fokus til et annet vindu
2013-08-01 01:11:08 +00:00
* Buffere
2013-08-01 01:11:08 +00:00
2024-09-04 09:05:44 +00:00
- =C-x b RET=
bytt buffer
(siste besøkte buffer er default)
2013-08-01 01:11:08 +00:00
2024-09-04 09:05:44 +00:00
- =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å
2013-08-01 01:11:08 +00:00
2015-03-06 20:14:27 +00:00
* Kommandoer
2024-09-12 14:38:26 +00:00
- =M-x <function> RET=
2024-09-04 09:05:44 +00:00
lar deg kalle en vilkårlig kommando med navn
2024-09-12 14:38:26 +00:00
- =M-x replace-string RET <from> RET <to> RET=
2024-09-04 09:05:44 +00:00
tilsvarer «search and replace»
2015-03-06 20:14:27 +00:00
2024-09-12 14:38:26 +00:00
- =M-x query-replace RET <from> RET <to> RET= ... =y/n=
samme som =replace-string=, men du kan velge hva som skal erstattes (kan også kjøres med =M-%=!)
2015-03-06 20:14:27 +00:00
* Søking
2024-09-04 09:05:44 +00:00
- =C-s=
søk fremover i bufferet
- =C-r=
søk bakover i bufferet
2015-03-06 20:14:27 +00:00
2024-09-04 09:05:44 +00:00
- Dette er en /svært/ effektiv måte å flytte markøren på!
2015-03-06 20:14:27 +00:00
* Hjelp til selvhjelp
2024-09-04 09:05:44 +00:00
- =C-h k=
bruk hvis du lurer på hva en tastekombinasjon gjør
2013-08-01 01:11:08 +00:00
2024-09-04 09:05:44 +00:00
- =C-h f=
bruk hvis du kjenner navnet på en funksjon, men ikke vet hva den gjør
2013-08-01 01:11:08 +00:00
2024-09-04 09:05:44 +00:00
- =C-h m=
gir deg informasjon om moden du er i (bl.a. tastekombinasjoner som er spesielle for moden)
2013-08-01 01:11:08 +00:00
2024-09-04 09:05:44 +00:00
- =C-h a=
apropos, lar deg søke i hjelpen
- =C-h C-h= (eller: =C-h ?=)
gir deg hjelp om hjelpen
2013-08-01 01:11:08 +00:00
2015-03-06 20:14:27 +00:00
* Programmering
2013-08-01 01:11:08 +00:00
2024-09-04 09:05:44 +00:00
- =TAB=
2024-09-12 14:38:26 +00:00
indenterer riktig
2024-09-04 09:05:44 +00:00
- =M-;=
kommenterer ut et markert område
2013-08-01 01:11:08 +00:00
2024-09-12 14:38:26 +00:00
- =C-x C-;=
kommenterer ut linjen
- =M-x compile RET <compile-command> RET=
2024-09-04 09:05:44 +00:00
lar deg kompilere i Emacs
(gir trykkbare linker til der feil oppstod)
2013-08-01 01:11:08 +00:00
2024-09-12 14:38:26 +00:00
- =M-g M-g <nr> RET=
2024-09-04 09:05:44 +00:00
flytter markøren til linjenummer =<nr>=
2013-08-01 01:11:08 +00:00
2015-03-06 20:14:27 +00:00
* Makroer
2024-09-12 14:38:26 +00:00
- Makroer er en måte å «ta opp» en rekke kommandoer på
2015-03-16 23:16:40 +00:00
2024-09-04 09:05:44 +00:00
- =C-x (=
definer en makro
2015-03-06 20:14:27 +00:00
2024-09-04 09:05:44 +00:00
- =<f3>=
definer en makro /eller/ sett inn løpenummer
2015-03-06 20:14:27 +00:00
2024-09-04 09:05:44 +00:00
- =C-x )=, =<f4>=
ferdigstill makroen
2024-09-12 14:38:26 +00:00
- =C-x e=, =<f4>=
2024-09-04 09:05:44 +00:00
utfør makroen
2015-03-06 20:14:27 +00:00
- =e=
gjenta makroen
* Pakker
2024-09-12 14:38:26 +00:00
- Emacs 29 kommer med innebygd pakkebehandler
2024-09-04 09:05:44 +00:00
- det finnes tusenvis av pakker
2015-03-06 20:14:27 +00:00
2024-09-04 09:05:44 +00:00
- =M-x list-packages=
bla gjennom pakker
2015-03-06 20:14:27 +00:00
2024-09-04 09:05:44 +00:00
- =i= installere
2015-03-16 23:16:40 +00:00
2024-09-04 09:05:44 +00:00
- =U= oppgrader alle
2015-03-16 23:16:40 +00:00
2024-09-04 09:05:44 +00:00
- =d= slett
2015-03-16 23:16:40 +00:00
2024-09-04 09:05:44 +00:00
- =x= utfør installering/oppgradering/sletting
2015-03-06 20:14:27 +00:00
2024-09-12 14:38:26 +00:00
- Alt dette bør heller gjøres i konfigurasjonsfilen
2015-03-16 23:16:40 +00:00
2024-09-12 14:38:26 +00:00
* Anbefalinger
2024-09-04 09:05:44 +00:00
- [[https://github.com/magnars/multiple-cursors.el][Multiple cursors]] ([[http://emacsrocks.com/e13.html][demo]])
lar deg kontrollere flere markører samtidig!
* Nyttige lenker
2024-09-04 09:05:44 +00:00
2024-09-12 14:38:26 +00:00
- [[http://www.gnu.org/software/emacs/manual/html_node/emacs/index.html#Top][Emacs-manualen]]
2024-09-04 09:05:44 +00:00
- [[http://www.masteringemacs.org/reading-guide/][En flott blogg om Emacs]]
- [[https://github.com/larstvei/dot-emacs][Min konfigurasjonsfil]]