diff --git a/.dir-locals.el b/.dir-locals.el new file mode 100644 index 0000000..4175ebc --- /dev/null +++ b/.dir-locals.el @@ -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)))) diff --git a/foiler.org b/foiler.org index 23733c5..957f3fe 100644 --- a/foiler.org +++ b/foiler.org @@ -1,348 +1,333 @@ #+TITLE: Emacskurs #+EMAIL: larstvei@ifi.uio.no -#+GITHUB: http://github.com/larstvei - -#+OPTIONS: num:nil toc:nil \n:1 - -#+BEAMER_THEME: Rochester -#+LaTeX_CLASS_OPTIONS: [aspectratio=169] -#+LaTeX_HEADER:\usepackage{beamerthemesplit} -#+LaTeX_HEADER:\setbeamersize{text margin left=0.1em} -#+LaTeX_HEADER:\setbeamersize{text margin right=0.1em} - -#+REVEAL_TRANS: zoom -#+REVEAL_THEME: serif -#+REVEAL_SPEED: fast -#+REVEAL_HLEVEL: 1 * Plan for kurset - #+ATTR_REVEAL: :frag roll-in - - 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! + +- 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! * Hva er Emacs? - #+ATTR_REVEAL: :frag roll-in - - Teksteditor - - Utvidbar (Emacs Lisp) - - Over 30 år gammel - - Over 2500 innebygde kommandoer - - Fri programvare + +- 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... + +- 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 +- 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 - - 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 - #+ATTR_REVEAL: :frag roll-in - - 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» +- Emacs er annerledes å bruke enn mange andre programmer, så det krever tilvenning. - - etter hvert (for spesielt interesserte): - - skriv din egen config-fil - - lær litt Emacs lisp, og skriv dine egne funksjoner +- 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» - - 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 - #+ATTR_REVEAL: :frag roll-in - - =C-= - Control - - =M-= - Meta er =Alt= på de fleste maskiner (alternativt =ESC=) +- =C-= + Control - - == betyr et vilkårlig tegn (eller tastekombinasjon) +- =M-= + Meta er =Alt= på de fleste maskiner (alternativt =ESC=) + +- == betyr et vilkårlig tegn (eller tastekombinasjon) * Prefikstaster - #+ATTR_REVEAL: :frag roll-in - - =C-x = - prefiks for globale kommandoer - - =C-c = - prefiks for lokale kommandoer - (har ikke alltid samme funksjon!) +- =C-x = + prefiks for globale kommandoer - - =C-h = - prefiks for hjelp +- =C-c = + prefiks for lokale kommandoer + (har ikke alltid samme funksjon!) - - Alle tastekombinasjoner som ikke er en prefiks er enten bundet til en - kommando eller udefinert. +- =C-h = + prefiks for hjelp + +- Alle tastekombinasjoner som ikke er en prefiks er enten bundet til en + kommando eller udefinert. * 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!) +- =C-x C-c= + avslutt Emacs - - =ESC ESC ESC= - (bruk hvis =C-g= ikke hjalp) +- =C-g= + avbryt + (bruk hvis du ikke skjønner hva Emacs holder på med!) - - =C- C-g= - er udefinert - (Dvs. =C-g= kan brukes til å avbryte prefiks) +- =ESC ESC ESC= + (bruk hvis =C-g= ikke hjalp) + +- =C- 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-f=, =C-b= + flytt markøren ett tegn frem/tilbake - - =C-a=, =C-e= - flytt markøren til begynnelsen/slutten av linja +- =M-f=, =M-b= + flytt markøren ett ord frem/tilbake - - =C-p=, =C-n= - flytt markøren til forrige/neste linje +- =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-v=, =M-v= + scroll ned/opp en side - - =C-l= - vis slik at markøren er i senter/toppen/bunnen +- =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 +- =C-w= + kill, tilsvarer cut - - =M-w= - lagre til kill-ring, tilsvarer copy +- =C-y= + yank, tilsvarer paste - - =C-k= - kill, drepe resten av en linje +- =M-w= + lagre til kill-ring, tilsvarer copy - - =M-y=, må etterfølges av =C-y= - yank-pop, går lenger tilbake på kill-ring +- =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-d=, =M-d= + fjern neste bokstav/ord - - =C-t=, =M-t= - bytt om to bokstaver/ord +- =C-_=, =C-/=, =C-x u= + undo! - - =C-x C-t= - bytt om to linjer +- =C-t=, =M-t= + bytt om to bokstaver/ord - - =M-q= - plasserer om tekst i en paragraf slik at linjene ikke overstiger 70 tegn (den ødelegger ikke syntaks i programmeringmodes) +- =C-x C-t= + bytt om to linjer - - =M-u=, =M-l=, =M-c= - gjør neste ord til UPPERCASE/lowercase/Capital-Case +- =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 +- =C-SPC= + markerer tekst - - =M-h= - markerer en paragraf +- =C-x h= + 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 - #+ATTR_REVEAL: :frag roll-in - - =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-f= + åpne fil + (hvis den ikke finnes fra før åpnes et tomt buffer med det nye filnavnet) - - =C-x C-w= - skrive til fil (tilsvarende «lagre som...») +- =C-x C-s= + lagre buffer + +- =C-x C-w= + skrive til fil (tilsvarende «lagre som...») * Vinduer - #+ATTR_REVEAL: :frag roll-in - - =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 2=, =C-x 3= + splitt et vindu horisontalt/vertikalt - - =C-x 0= - lukk det aktive vinduet +- =C-x 1= + gjør det aktive vinduet til det eneste vinduet - - =C-x o= - bytt fokus til et annet vindu +- =C-x 0= + lukk det aktive vinduet + +- =C-x o= + bytt fokus til et annet vindu * Buffere - #+ATTR_REVEAL: :frag roll-in - - =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 b RET= + bytt buffer + (siste besøkte buffer er default) - - =C-x left=, =C-x right= - en annen måte å bytter buffer på +- =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 - #+ATTR_REVEAL: :frag roll-in - - =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 function RET= + lar deg kalle en vilkårlig kommando med navn - - =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-%=!) +- =M-x replace-string RET erstatt RET med RET= + 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 - #+ATTR_REVEAL: :frag roll-in - - =C-s= - søk fremover i bufferet - - =C-r= - søk bakover i bufferet +- =C-s= + 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 - #+ATTR_REVEAL: :frag roll-in - - =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 k= + bruk hvis du lurer på hva en tastekombinasjon gjør - - =C-h m= - gir deg informasjon om moden du er i (bl.a. tastekombinasjoner som er spesielle for moden) +- =C-h f= + bruk hvis du kjenner navnet på en funksjon, men ikke vet hva den gjør - - =C-h a= - apropos, lar deg søke i hjelpen +- =C-h m= + gir deg informasjon om moden du er i (bl.a. tastekombinasjoner som er spesielle for moden) - - =C-h C-h= (eller: =C-h ?=) - gir deg hjelp om hjelpen +- =C-h a= + apropos, lar deg søke i hjelpen + +- =C-h C-h= (eller: =C-h ?=) + gir deg hjelp om hjelpen * Programmering - #+ATTR_REVEAL: :frag roll-in - - =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 +- =TAB= + 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= - lar deg kompilere i Emacs - (gir trykkbare linker til der feil oppstod) +- =M-;= + kommenterer ut et markert område - - =M-g g RET= - flytter markøren til linjenummer == +- =M-x compile RET compile-command RET= + lar deg kompilere i Emacs + (gir trykkbare linker til der feil oppstod) + +- =M-g g RET= + flytter markøren til linjenummer == * Makroer - #+ATTR_REVEAL: :frag roll-in - - Makroer er en måte å "ta opp" en rekke kommandoer på - - =C-x (= - definer en makro +- Makroer er en måte å "ta opp" en rekke kommandoer på - - == - definer en makro /eller/ sett inn løpenummer +- =C-x (= + definer en makro - - =C-x )=, == - ferdigstill makroen +- == + definer en makro /eller/ sett inn løpenummer - - =C-x e= - utfør makroen +- =C-x )=, == + ferdigstill makroen + +- =C-x e= + utfør makroen - =e= gjenta makroen * Pakker - #+ATTR_REVEAL: :frag roll-in - - Emacs 24 kommer med innebygd pakkebehandler - - det finnes tusenvis av pakker +- Emacs 24 kommer med innebygd pakkebehandler - - =M-x list-packages= - bla gjennom pakker +- det finnes tusenvis av 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 - #+ATTR_REVEAL: :frag roll-in - - [[https://github.com/auto-complete/auto-complete][Auto-Complete]] - viser mulige fullføringer - - [[https://github.com/emacsmirror/undo-tree][Undo-Tree]] - et mer standard undo-system, med trestruktur +- [[https://github.com/auto-complete/auto-complete][Auto-Complete]] + viser mulige fullføringer - - [[https://github.com/magnars/multiple-cursors.el][Multiple cursors]] ([[http://emacsrocks.com/e13.html][demo]]) - lar deg kontrollere flere markører samtidig! +- [[https://github.com/emacsmirror/undo-tree][Undo-Tree]] + et mer standard undo-system, med trestruktur - - [[https://github.com/oneKelvinSmith/monokai-emacs][Monokai]] - et fargetema (hentet fra Sublime) +- [[https://github.com/magnars/multiple-cursors.el][Multiple cursors]] ([[http://emacsrocks.com/e13.html][demo]]) + lar deg kontrollere flere markører samtidig! + +- [[https://github.com/oneKelvinSmith/monokai-emacs][Monokai]] + et fargetema (hentet fra Sublime) * Nyttige lenker - #+ATTR_REVEAL: :frag roll-in - - [[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]] + +- [[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]] * 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]]! + +- 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]]! diff --git a/handout.org b/handout.org index 0631198..f88ba9c 100644 --- a/handout.org +++ b/handout.org @@ -21,6 +21,8 @@ | =M-b= | =backward-word= | | =C-a= | =move-beginning-of-line= | | =C-e= | =move-end-of-line= | +| =C-n= | =next-line= | +| =C-p= | =previous-line= | |---------------------+------------------------------------| | Bla Rundt | | |---------------------+------------------------------------|