Compare commits

..

No commits in common. "4f73ca9410a628e45bf58c978582f4999d7fb453" and "a7137c6dcec172fef7ed99c01059d81ab279957c" have entirely different histories.

5 changed files with 263 additions and 232 deletions

View File

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

View File

@ -21,8 +21,6 @@
| =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:
- [[./foiler.html][Foiler]] - [[./emacskurs.html][Foiler]]
- [[./emacs-init.el][Konfigurasjonsfil]] - [[./emacs-init.el][Konfigurasjonsfil]]
- [[./handout.html][Handout]] - [[./handout.html][Handout]]
@ -149,11 +149,6 @@
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