Compare commits

...

10 Commits

Author SHA1 Message Date
4f73ca9410 Formatting 2024-09-04 11:05:44 +02:00
62dc2de5e9 Change theme for Reveal 2016-02-18 17:31:38 +01:00
0d5b938e32 Support beamer 2016-02-18 17:31:13 +01:00
e69ff544dd Merge branch 'master' of github.com:larstvei/emacskurs 2015-03-17 15:39:10 +01:00
2aab6a592c Fixed tidy-bug 2015-03-17 15:32:21 +01:00
f6a1f0e0b2 Merge pull request #1 from MathiasCiarlo/master
Windowsdelen oppdatert
2015-03-17 10:31:57 -04:00
Mathias Ciarlo Thorstensen
b8573dc5cc Bla 2015-03-17 15:30:42 +01:00
244d6de1a9 Let reveal-slides keep roll-in. 2015-03-17 00:36:23 +01:00
c89e0a42a8 Changed first foil and removed roll-in. 2015-03-17 00:33:42 +01:00
300dbd0261 Point to foiler.html. 2015-03-17 00:29:58 +01:00
5 changed files with 232 additions and 263 deletions

8
.dir-locals.el Normal file
View File

@ -0,0 +1,8 @@
;;; Directory Local Variables -*- no-byte-compile: t -*-
;;; For more information see (info "(emacs) Directory Variables")
((nil . ((sentence-end-double-space . t)
(fill-column . 80)))
(org-mode . ((org-edit-src-content-indentation . 0)
(org-adapt-indentation . nil)
(org-hide-emphasis-markers . nil))))

View File

@ -119,7 +119,7 @@ called autosaves located wherever your .emacs.d/ is located.")
(end (if (region-active-p) (region-end) (point-max)))) (end (if (region-active-p) (region-end) (point-max))))
(whitespace-cleanup) (whitespace-cleanup)
(indent-region beg end nil) (indent-region beg end nil)
(untabify (if (region-active-p) (region-beginning) (point-min))
(untabify beg end))) (if (region-active-p) (region-end) (point-max)))))
;; bindes the tidy-function to C-TAB ;; bindes the tidy-function to C-TAB
(global-set-key (kbd "<C-tab>") 'tidy) (global-set-key (kbd "<C-tab>") 'tidy)

View File

@ -1,379 +1,333 @@
#+TITLE: Emacskurs #+TITLE: Emacskurs
#+EMAIL: larstvei@ifi.uio.no #+EMAIL: larstvei@ifi.uio.no
#+GITHUB: http://github.com/larstvei
#+OPTIONS: num:nil toc:nil \n:1
#+BEAMER_THEME: Rochester
#+REVEAL_TRANS: linear
#+REVEAL_THEME: night
#+REVEAL_THEME: moon
#+REVEAL_SPEED: fast
#+REVEAL_HLEVEL: 1
* Plan for kurset * Plan for kurset
#+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
# - Før pause:
# - Innføring i Emacs
# - Nyttige kommander
# - Etter pause: - Før pause:
# - Sette opp Emacs på Ifi's maskiner - Liten demonstrasjon av hvordan man kommer igang med Emacs på Ifi's maskiner
# - Skrive en enkel konfigurasjonsfil - Snakk om hva Emacs er
# - Bruke det vi lærte før pause - Gå raskt gjennom foilene og dekker «basics»
- Før pause: - Etter pause:
- Liten demonstrasjon av hvordan man kommer igang med Emacs på Ifi's - Mer praktiske eksempler.
maskiner - Vise hvordan Org-mode fungerer, og hva det kan brukes til
- Snakk om hva Emacs er - Tar imot alt av spørsmål fra salen!
- 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!
* Hva er Emacs? * Hva er Emacs?
#+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build - Teksteditor
- Teksteditor - Utvidbar (Emacs Lisp)
- Utvidbar (Emacs Lisp) - Over 30 år gammel
- Over 30 år gammel - Over 2500 innebygde kommandoer
- Over 2500 innebygde kommandoer - Fri programvare
- Fri programvare
* Rammer, vinduer og buffere * Rammer, vinduer og buffere
#+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build - Emacs åpnes i en ramme
- Emacs åpnes i en ramme - Man kan ha flere vinduer i samme ramme
- Man kan ha flere vinduer i samme ramme - Tekst vises i buffere
- Tekst vises i buffere - Du kan ha så mange åpne buffere du vil
- Du kan ha så mange åpne buffere du vil - En fil åpnes i et nytt buffer
- En fil åpnes i et nytt buffer - Minibufferet (nederste linje), brukes til å skrive inn filnavn, buffernavn, etc...
- Minibufferet (nederste linje), brukes til å skrive inn filnavn, buffernavn, etc...
* Modes * Modes
#+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
- 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 - Major modes
- du kan ha så mange aktive minor modes du ønsker - hvert buffer har kun én aktiv major mode
- en minor mode tilbyr tilleggsfunksjonalitet - en major mode gir deg funksjonalitet for en bestemt type
tekstredigering
- de fleste programmeringsspråk har sin egen major mode
- Modes tilføyer ofte egne tastekombinasjoner! - Minor modes
- du kan ha så mange aktive minor modes du ønsker
- en minor mode tilbyr tilleggsfunksjonalitet
- Modes tilføyer ofte egne tastekombinasjoner!
* Tips * Tips
#+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
- Emacs er annerledes å bruke enn mange andre programmer, så det krever tilvenning.
- i begynnelsen: - Emacs er annerledes å bruke enn mange andre programmer, så det krever tilvenning.
- 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): - i begynnelsen:
- skriv din egen config-fil - les og gjør «learn-by-doing tutorial» (=C-h t=)
- lær litt Emacs lisp, og skriv dine egne funksjoner - tving deg selv til å bruke de kommandoene du lærer til de sitter i fingrene
- unngå «pek og klikk»
- gjør =CAPS-LOCK= om til en ekstra Control (=Ctrl=) - 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=)
* Terminologi for taster * Terminologi for taster
#+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
- =C-<any>=
Control
- =M-<any>= - =C-<any>=
Meta er =Alt= på de fleste maskiner (alternativt =ESC=) Control
- =<any>= betyr et vilkårlig tegn (eller tastekombinasjon) - =M-<any>=
Meta er =Alt= på de fleste maskiner (alternativt =ESC=)
- =<any>= betyr et vilkårlig tegn (eller tastekombinasjon)
* Prefikstaster * Prefikstaster
#+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
- =C-x <any>=
prefiks for globale kommandoer
- =C-c <any>= - =C-x <any>=
prefiks for lokale kommandoer prefiks for globale kommandoer
(har ikke alltid samme funksjon!)
- =C-h <any>= - =C-c <any>=
prefiks for hjelp prefiks for lokale kommandoer
(har ikke alltid samme funksjon!)
- Alle tastekombinasjoner som ikke er en prefiks er enten bundet til en - =C-h <any>=
kommando eller udefinert. prefiks for hjelp
- Alle tastekombinasjoner som ikke er en prefiks er enten bundet til en
kommando eller udefinert.
* Komme seg ut * Komme seg ut
#+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
- =C-x C-c=
avslutt Emacs
- =C-g= - =C-x C-c=
avbryt avslutt Emacs
(bruk hvis du ikke skjønner hva Emacs holder på med!)
- =ESC ESC ESC= - =C-g=
(bruk hvis =C-g= ikke hjalp) avbryt
(bruk hvis du ikke skjønner hva Emacs holder på med!)
- =C-<prefix> C-g= - =ESC ESC ESC=
er udefinert (bruk hvis =C-g= ikke hjalp)
(Dvs. =C-g= kan brukes til å avbryte prefiks)
- =C-<prefix> C-g=
er udefinert
(Dvs. =C-g= kan brukes til å avbryte prefiks)
* Tekstredigering * Tekstredigering
#+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
- =C-f=, =C-b=
flytt markøren ett tegn frem/tilbake
- =M-f=, =M-b= - =C-f=, =C-b=
flytt markøren ett ord frem/tilbake flytt markøren ett tegn frem/tilbake
- =C-a=, =C-e= - =M-f=, =M-b=
flytt markøren til begynnelsen/slutten av linja flytt markøren ett ord frem/tilbake
- =C-p=, =C-n= - =C-a=, =C-e=
flytt markøren til forrige/neste linje flytt markøren til begynnelsen/slutten av linja
- =C-p=, =C-n=
flytt markøren til forrige/neste linje
* Bla rundt * Bla rundt
#+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
- =C-v=, =M-v=
scroll ned/opp en side
- =M-<=, =M->= - =C-v=, =M-v=
gå til begynnelsen/slutten av bufferet scroll ned/opp en side
- =C-l= - =M-<=, =M->=
vis slik at markøren er i senter/toppen/bunnen gå til begynnelsen/slutten av bufferet
- =C-l=
vis slik at markøren er i senter/toppen/bunnen
* Kill og yank * Kill og yank
#+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
- =C-w=
kill, tilsvarer cut
- =C-y= - =C-w=
yank, tilsvarer paste kill, tilsvarer cut
- =M-w= - =C-y=
lagre til kill-ring, tilsvarer copy yank, tilsvarer paste
- =C-k= - =M-w=
kill, drepe resten av en linje lagre til kill-ring, tilsvarer copy
- =M-y=, må etterfølges av =C-y= - =C-k=
yank-pop, går lenger tilbake på kill-ring kill, drepe resten av en linje
- =M-y=, må etterfølges av =C-y=
yank-pop, går lenger tilbake på kill-ring
* Feiloppretting * Feiloppretting
#+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
- =C-d=, =M-d=
fjern neste bokstav/ord
- =C-_=, =C-/=, =C-x u= - =C-d=, =M-d=
undo! fjern neste bokstav/ord
- =C-t=, =M-t= - =C-_=, =C-/=, =C-x u=
bytt om to bokstaver/ord undo!
- =C-x C-t= - =C-t=, =M-t=
bytt om to linjer bytt om to bokstaver/ord
- =M-q= - =C-x C-t=
plasserer om tekst i en paragraf slik at linjene ikke overstiger 70 tegn (den ødelegger ikke syntaks i programmeringmodes) bytt om to linjer
- =M-u=, =M-l=, =M-c= - =M-q=
gjør neste ord til UPPERCASE/lowercase/Capital-Case 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 * Markering av tekst
#+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
- =C-SPC=
markerer tekst
- =C-x h= - =C-SPC=
markerer all tekst markerer tekst
- =M-h= - =C-x h=
markerer en paragraf markerer all tekst
- Bruk i kombinasjon med =M-w=, =C-w= og =TAB= - =M-h=
markerer en paragraf
- Bruk i kombinasjon med =M-w=, =C-w= og =TAB=
* Filer * Filer
#+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
- =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= - =C-x C-f=
lagre buffer åpne fil
(hvis den ikke finnes fra før åpnes et tomt buffer med det nye filnavnet)
- =C-x C-w= - =C-x C-s=
skrive til fil (tilsvarende «lagre som...») lagre buffer
- =C-x C-w=
skrive til fil (tilsvarende «lagre som...»)
* Vinduer * Vinduer
#+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
- =C-x 2=, =C-x 3=
splitt et vindu horisontalt/vertikalt
- =C-x 1= - =C-x 2=, =C-x 3=
gjør det aktive vinduet til det eneste vinduet splitt et vindu horisontalt/vertikalt
- =C-x 0= - =C-x 1=
lukk det aktive vinduet gjør det aktive vinduet til det eneste vinduet
- =C-x o= - =C-x 0=
bytt fokus til et annet vindu lukk det aktive vinduet
- =C-x o=
bytt fokus til et annet vindu
* Buffere * Buffere
#+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
- =C-x b RET=
bytt buffer
(siste besøkte buffer er default)
- =C-x k RET= - =C-x b RET=
drep (kill) buffer bytt buffer
(det aktive bufferet er default) (siste besøkte buffer er default)
- =C-x left=, =C-x right= - =C-x k RET=
en annen måte å bytter buffer på drep (kill) buffer
(det aktive bufferet er default)
- =C-x left=, =C-x right=
en annen måte å bytter buffer på
* Kommandoer * Kommandoer
#+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
- =M-x function RET=
lar deg kalle en vilkårlig kommando med navn
- =M-x replace-string RET erstatt RET med RET= - =M-x function RET=
tilsvarer «search and replace» lar deg kalle en vilkårlig kommando med navn
- =M-x query-replace RET erstatt RET med RET= ... =y/n= - =M-x replace-string RET erstatt RET med RET=
samme som replace-string, men du kan velge hva som skal erstattes (kan også kjøres med =M-%=!) tilsvarer «search and replace»
- Bruk =TAB= for autocomplete! - =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 * Søking
#+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
- =C-s=
søk fremover i bufferet
- =C-r= - =C-s=
søk bakover i bufferet søk fremover i bufferet
- Dette er en /svært/ effektiv måte å flytte markøren på! - =C-r=
søk bakover i bufferet
- Dette er en /svært/ effektiv måte å flytte markøren på!
* Hjelp til selvhjelp * Hjelp til selvhjelp
#+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
- =C-h k=
bruk hvis du lurer på hva en tastekombinasjon gjør
- =C-h f= - =C-h k=
bruk hvis du kjenner navnet på en funksjon, men ikke vet hva den gjør bruk hvis du lurer på hva en tastekombinasjon gjør
- =C-h m= - =C-h f=
gir deg informasjon om moden du er i (bl.a. tastekombinasjoner som er spesielle for moden) bruk hvis du kjenner navnet på en funksjon, men ikke vet hva den gjør
- =C-h a= - =C-h m=
apropos, lar deg søke i hjelpen gir deg informasjon om moden du er i (bl.a. tastekombinasjoner som er spesielle for moden)
- =C-h C-h= (eller: =C-h ?=) - =C-h a=
gir deg hjelp om hjelpen apropos, lar deg søke i hjelpen
- =C-h C-h= (eller: =C-h ?=)
gir deg hjelp om hjelpen
* Programmering * Programmering
#+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
- =TAB=
indenterer riktig (dersom indenteringen er gal er det et tegn på at det er noe galt i koden!)
- =M-;= - =TAB=
kommenterer ut et markert område indenterer riktig (dersom indenteringen er gal er det et tegn på at det er noe galt i koden!)
- =M-x compile RET compile-command RET= - =M-;=
lar deg kompilere i Emacs kommenterer ut et markert område
(gir trykkbare linker til der feil oppstod)
- =M-g g <nr> RET= - =M-x compile RET compile-command RET=
flytter markøren til linjenummer =<nr>= 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
#+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
- Makroer er en måte å "ta opp" en rekke kommandoer på
- =C-x (= - Makroer er en måte å "ta opp" en rekke kommandoer på
definer en makro
- =<f3>= - =C-x (=
definer en makro /eller/ sett inn løpenummer definer en makro
- =C-x )=, =<f4>= - =<f3>=
ferdigstill makroen definer en makro /eller/ sett inn løpenummer
- =C-x e= - =C-x )=, =<f4>=
utfør makroen ferdigstill makroen
- =C-x e=
utfør makroen
- =e= - =e=
gjenta makroen gjenta makroen
* Pakker * Pakker
#+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
- Emacs 24 kommer med innebygd pakkebehandler
- det finnes tusenvis av pakker - Emacs 24 kommer med innebygd pakkebehandler
- =M-x list-packages= - det finnes tusenvis av pakker
bla gjennom pakker
- =i= installere - =M-x list-packages=
bla gjennom pakker
- =U= oppgrader alle - =i= installere
- =d= slett - =U= oppgrader alle
- =x= utfør installering/oppgradering/sletting - =d= slett
- =x= utfør installering/oppgradering/sletting
* Anbefalinger * Anbefalinger
#+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
- [[https://github.com/auto-complete/auto-complete][Auto-Complete]] - [[https://github.com/auto-complete/auto-complete][Auto-Complete]]
viser mulige fullføringer viser mulige fullføringer
- [[https://github.com/emacsmirror/undo-tree][Undo-Tree]] - [[https://github.com/emacsmirror/undo-tree][Undo-Tree]]
et mer standard undo-system, med trestruktur et mer standard undo-system, med trestruktur
- [[https://github.com/magnars/multiple-cursors.el][Multiple cursors]] ([[http://emacsrocks.com/e13.html][demo]]) - [[https://github.com/magnars/multiple-cursors.el][Multiple cursors]] ([[http://emacsrocks.com/e13.html][demo]])
lar deg kontrollere flere markører samtidig! lar deg kontrollere flere markører samtidig!
- [[https://github.com/oneKelvinSmith/monokai-emacs][Monokai]] - [[https://github.com/oneKelvinSmith/monokai-emacs][Monokai]]
et fargetema (hentet fra Sublime) et fargetema (hentet fra Sublime)
* Nyttige lenker * Nyttige lenker
#+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build - [[http://www.gnu.org/software/emacs/manual/html_node/emacs/index.html#Top][Emacs manualen]]
- [[http://www.gnu.org/software/emacs/manual/html_node/emacs/index.html#Top][Emacs manualen]] - [[http://termvakt.ifi.uio.no/Emacs][Termvaktens guide til Emacs]]
- [[http://termvakt.ifi.uio.no/Emacs][Termvaktens guide til Emacs]] - [[http://www.masteringemacs.org/reading-guide/][En flott blogg om Emacs]]
- [[http://www.masteringemacs.org/reading-guide/][En flott blogg om Emacs]] - [[http://www.ic.unicamp.br/%7Ehelio/disciplinas/MC102/Emacs_Reference_Card.pdf][En cheat-sheet for Emacs]]
- [[http://www.ic.unicamp.br/%7Ehelio/disciplinas/MC102/Emacs_Reference_Card.pdf][En cheat-sheet for Emacs]] - [[https://github.com/larstvei/dot-emacs][Min konfigurasjonsfil]]
- [[https://github.com/larstvei/dot-emacs][Min konfigurasjonsfil]]
* Spørsmål? * Spørsmål?
#+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build - Noen spørsmål nå?
- Noen spørsmål nå? - Kom ned i pausen hvis dere har spørsmål eller ønske for neste time!
- Kom ned i pausen hvis dere har spørsmål eller ønske for neste time! - Gjerne send mail til [[mailto:larstvei@ifi.uio.no][larstvei@ifi.uio.no]]!
- Gjerne send mail til [[mailto:larstvei@ifi.uio.no][larstvei@ifi.uio.no]]!

View File

@ -21,6 +21,8 @@
| =M-b= | =backward-word= | | =M-b= | =backward-word= |
| =C-a= | =move-beginning-of-line= | | =C-a= | =move-beginning-of-line= |
| =C-e= | =move-end-of-line= | | =C-e= | =move-end-of-line= |
| =C-n= | =next-line= |
| =C-p= | =previous-line= |
|---------------------+------------------------------------| |---------------------+------------------------------------|
| Bla Rundt | | | Bla Rundt | |
|---------------------+------------------------------------| |---------------------+------------------------------------|

View File

@ -23,7 +23,7 @@
Kildekoden for alt materiale ligger på [[https://github.com/larstvei/emacskurs][GitHub]]. Her finner du: Kildekoden for alt materiale ligger på [[https://github.com/larstvei/emacskurs][GitHub]]. Her finner du:
- [[./emacskurs.html][Foiler]] - [[./foiler.html][Foiler]]
- [[./emacs-init.el][Konfigurasjonsfil]] - [[./emacs-init.el][Konfigurasjonsfil]]
- [[./handout.html][Handout]] - [[./handout.html][Handout]]
@ -149,6 +149,11 @@
kan laste ned ~emacs-24.3-bin-i386.zip~, eller prøve en nyere hvis det kan laste ned ~emacs-24.3-bin-i386.zip~, eller prøve en nyere hvis det
er tilgjengelig. er tilgjengelig.
Extract mappen på et passende stad. Emacs er stand alone og trenger altså ikke å installeres.
Emacs kjøres ved å dobbeltklikke på filen runemacs.exe som ligger i mappen "bin".
Emacs fungerer på akkurat samme måte, men alt fungerer bedre i Linux eller på Mac.
** Konfigurere Emacs ** Konfigurere Emacs
Her gang Emacs starter ser den etter en konfigurasjonsfil, den velger Her gang Emacs starter ser den etter en konfigurasjonsfil, den velger