Simplified scheme so that it can be exported to reveal, ioslide and beamer.

This commit is contained in:
Lars Tveito 2015-03-14 15:09:40 +01:00
parent 35e2681e6f
commit 7f0f072b3d

View File

@ -1,245 +1,248 @@
#+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
#+OPTIONS: toc:1 num:nil \n:1
#+REVEAL_TRANS: linear #+REVEAL_TRANS: linear
#+REVEAL_THEME: night #+REVEAL_THEME: night
#+REVEAL_THEME: moon #+REVEAL_THEME: moon
#+REVEAL_SPEED: fast #+REVEAL_SPEED: fast
#+REVEAL_HLEVEL: 1 #+REVEAL_HLEVEL: 1
* Intro * Plan for kurset
** Plan for kurset
#+ATTR_REVEAL: :frag roll-in
- 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?
#+ATTR_REVEAL: :frag roll-in
- Teksteditor
- Utvidbar (Emacs Lisp)
- Over 30 år gammel
- Over 2500 innebygde kommandoer
- Fri programvare
** Rammer, vinduer og buffere
#+ATTR_REVEAL: :frag roll-in
- 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
#+ATTR_REVEAL: :frag roll-in
- 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.
#+ATTR_REVEAL: :frag roll-in
- 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
#+ATTR_REVEAL: :frag roll-in
- =C-<any>=
Control
- =M-<any>=
Meta er =Alt= på de fleste maskiner (alternativt =ESC=)
- =<any>= betyr et vilkårlig tegn (eller tastekombinasjon)
** Prefikstaster
#+ATTR_REVEAL: :frag roll-in
- =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
#+ATTR_REVEAL: :frag roll-in
- =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
#+ATTR_REVEAL: :frag roll-in
- =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
#+ATTR_REVEAL: :frag roll-in
- =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
#+ATTR_REVEAL: :frag roll-in
- =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
#+ATTR_REVEAL: :frag roll-in
- =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
#+ATTR_REVEAL: :frag roll-in
- =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
#+ATTR_REVEAL: :frag roll-in #+ATTR_REVEAL: :frag roll-in
- =C-x C-f= #+ATTR_HTML: :class build
åpne fil - Før pause:
(hvis den ikke finnes fra før åpnes et tomt buffer med det nye filnavnet) - Innføring i Emacs
- Nyttige kommander
- =C-x C-s= - Etter pause:
lagre buffer - Sette opp Emacs på Ifi's maskiner
- Skrive en enkel konfigurasjonsfil
- Bruke det vi lærte før pause
- =C-x C-w= * Hva er Emacs?
skrive til fil (tilsvarende «lagre som...») #+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
- Teksteditor
- Utvidbar (Emacs Lisp)
- Over 30 år gammel
- Over 2500 innebygde kommandoer
- Fri programvare
** Vinduer * Rammer, vinduer og buffere
#+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
- 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...
#+ATTR_REVEAL: :frag roll-in * Modes
- =C-x 2=, =C-x 3= #+ATTR_REVEAL: :frag roll-in
splitt et vindu horisontalt/vertikalt #+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
- =C-x 1= - Minor modes
gjør det aktive vinduet til det eneste vinduet - du kan ha så mange aktive minor modes du ønsker
- en minor mode tilbyr tilleggsfunksjonalitet
- =C-x 0= - Modes tilføyer ofte egne tastekombinasjoner!
lukk det aktive vinduet
- =C-x o= * Tips
bytt fokus til et annet vindu #+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
- Emacs er annerledes å bruke enn mange andre programmer, så det krever tilvenning.
** Buffere - 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»
#+ATTR_REVEAL: :frag roll-in - etter hvert (for spesielt interesserte):
- =C-x b RET= - skriv din egen config-fil
bytt buffer - lær litt Emacs lisp, og skriv dine egne funksjoner
(siste besøkte buffer er default)
- =C-x k RET= - annet:
drep (kill) buffer - gjør =CAPS-LOCK= om til en ekstra Control (=Ctrl=)
(det aktive bufferet er default)
- =C-x left=, =C-x right= * Terminologi for taster
en annen måte å bytter buffer på #+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
- =C-<any>=
Control
- =M-<any>=
Meta er =Alt= på de fleste maskiner (alternativt =ESC=)
- =<any>= betyr et vilkårlig tegn (eller tastekombinasjon)
* Prefikstaster
#+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
- =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
#+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
- =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
#+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
- =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
#+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
- =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
#+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
- =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
#+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
- =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
#+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
- =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
#+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=
lagre buffer
- =C-x C-w=
skrive til fil (tilsvarende «lagre som...»)
* Vinduer
#+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
- =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
#+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=
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_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
- =M-x function RET= - =M-x function RET=
lar deg kalle en vilkårlig kommando med navn lar deg kalle en vilkårlig kommando med navn
@ -252,8 +255,8 @@
- Bruk =TAB= for autocomplete! - Bruk =TAB= for autocomplete!
* Søking * Søking
#+ATTR_REVEAL: :frag roll-in #+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
- =C-s= - =C-s=
søk fremover i bufferet søk fremover i bufferet
@ -263,8 +266,8 @@
- Dette er en /svært/ effektiv måte å flytte markøren på! - Dette er en /svært/ effektiv måte å flytte markøren på!
* Hjelp til selvhjelp * Hjelp til selvhjelp
#+ATTR_REVEAL: :frag roll-in #+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
- =C-h k= - =C-h k=
bruk hvis du lurer på hva en tastekombinasjon gjør bruk hvis du lurer på hva en tastekombinasjon gjør
@ -281,8 +284,8 @@
gir deg hjelp om hjelpen gir deg hjelp om hjelpen
* Programmering * Programmering
#+ATTR_REVEAL: :frag roll-in #+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
- =TAB= - =TAB=
indenterer riktig (dersom indenteringen er gal er det et tegn på at det er noe galt i koden!) indenterer riktig (dersom indenteringen er gal er det et tegn på at det er noe galt i koden!)
@ -297,8 +300,8 @@
flytter markøren til linjenummer =<nr>= flytter markøren til linjenummer =<nr>=
* Makroer * Makroer
#+ATTR_REVEAL: :frag roll-in #+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
- Makroer er en måte å "ta opp" en rekke kommandoer på - Makroer er en måte å "ta opp" en rekke kommandoer på
- =C-x (= - =C-x (=
@ -317,8 +320,8 @@
gjenta makroen gjenta makroen
* Pakker * Pakker
#+ATTR_REVEAL: :frag roll-in #+ATTR_REVEAL: :frag roll-in
#+ATTR_HTML: :class build
- Emacs 24 kommer med innebygd pakkebehandler - Emacs 24 kommer med innebygd pakkebehandler
- det finnes tusenvis av pakker - det finnes tusenvis av pakker
@ -334,35 +337,34 @@
- =x= utfør installering/oppgradering/sletting - =x= utfør installering/oppgradering/sletting
** Anbefalinger * Anbefalinger
#+ATTR_REVEAL: :frag roll-in #+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)
* Til slutt * 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://termvakt.ifi.uio.no/Emacs][Termvaktens guide til 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]]
- [[https://github.com/larstvei/dot-emacs][Min konfigurasjonsfil]]
** Nyttige lenker * Spørsmål?
#+ATTR_REVEAL: :frag roll-in #+ATTR_REVEAL: :frag roll-in
- [[http://www.gnu.org/software/emacs/manual/html_node/emacs/index.html#Top][Emacs manualen]] #+ATTR_HTML: :class build
- [[http://termvakt.ifi.uio.no/Emacs][Termvaktens guide til Emacs]] - Noen spørsmål nå?
- [[http://www.masteringemacs.org/reading-guide/][En flott blogg om Emacs]] - Kom ned i pausen hvis dere har spørsmål eller ønske for neste time!
- [[http://www.ic.unicamp.br/%7Ehelio/disciplinas/MC102/Emacs_Reference_Card.pdf][En cheat-sheet for Emacs]] - Gjerne send mail til [[mailto:larstvei@ifi.uio.no][larstvei@ifi.uio.no]]!
- [[https://github.com/larstvei/dot-emacs][Min konfigurasjonsfil]]
** Spørsmål?
#+ATTR_REVEAL: :frag roll-in
- Noen spørsmål nå?
- 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]]!