Compare commits

..

No commits in common. "7499c8166cd204ccd6f5d19bdd76d38f12511033" and "6b7f4675b3e6372d5cd68f79fbd9087151fceef0" have entirely different histories.

View File

@ -3,329 +3,319 @@
* Plan for kurset
+ Introduksjon til bruk av Emacs (ca. 20 minutter)
+ Se en konfigurasjonsfil vokse frem (ca. 20 minutter)
+ Pizza! (for de som er påmeldt)
+ Workshop hvor vi hjelper deg komme i gang med Emacs (ca. 45 minutter)
+ 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?
+ Emacs er en teksteditor
+ Emacs er unikt utvidbar
+ Emacs er en Emacs Lisp maskin
+ Emacs er selvdokumenterende
+ Emacs har over 10000 innebygde kommandoer
+ Emacs er /fri/ programvare
+ Emacs er 48 år gammel
+ Teksteditor
+ Utvidbar (Emacs Lisp)
+ Over 30 år gammel
+ Over 2500 innebygde kommandoer
+ Fri programvare
* Buffere, vinduer og rammer
* Rammer, vinduer og buffere
+ Tekst lagres i /buffere/
+ Filer lastes inn i et buffer
+ Buffere kan skrives til fil
+ Et buffere vises i et /vindu/
+ En /ramme/ kan inneholde ett eller flere vinduer
+ I bunnen av hver ramme er det et /minibuffer/
+ 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
+ /Major/ modes
+ hvert buffer har nøyaktig én aktiv /major/ mode
+ 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
+ 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
+ Det krever tilvenning
+ 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»
+ 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:
+ Skriv din egen konfigurasjonsfil
+ Lær litt Emacs Lisp, og skriv dine egne funksjoner
+ 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 =Ctrl=
+ gjør =CAPS-LOCK= om til en ekstra Control (=Ctrl=)
* Terminologi for taster
+ =C-<any>=
+ Control
Control
+ =M-<any>=
+ Meta er =Alt= på de fleste maskiner (alternativt =ESC=)
Meta er =Alt= på de fleste maskiner (alternativt =ESC=)
+ =<any>= representerer et vilkårlig tegn eller tastekombinasjon
+ =<any>= betyr et vilkårlig tegn (eller tastekombinasjon)
* Prefikstaster
+ =C-x <any>=
+ Prefiks for globale kommandoer
prefiks for globale kommandoer
+ =C-c <any>=
+ Prefiks for lokale kommandoer
+ Kan ha ulik oppførsel i ulike modes
prefiks for lokale kommandoer
(har ikke alltid samme funksjon!)
+ =C-h <any>=
+ Prefiks for hjelp
prefiks for hjelp
+ Alle tastekombinasjoner som ikke er en prefiks er enten bundet til en
kommando eller udefinert.
* Komme seg ut
+ =C-x C-c=
+ Avslutt Emacs
avslutt Emacs
+ =C-g=
+ Avbryt
+ Bør spammes når Emacs forvirrer deg
avbryt
(bruk hvis du ikke skjønner hva Emacs holder på med!)
+ =ESC ESC ESC=
+ Bruk hvis =C-g= ikke hjalp
(bruk hvis =C-g= ikke hjalp)
+ =<prefix> C-g=
+ Er alltid udefinert
+ Altså kan =C-g= brukes til å avbryte prefiks
er udefinert
(Dvs. =C-g= kan brukes til å avbryte prefiks)
* Tekstredigering
+ =C-f=, =C-b=
+ Flytt markøren ett tegn frem/tilbake
flytt markøren ett tegn frem/tilbake
+ =M-f=, =M-b=
+ Flytt markøren ett ord frem/tilbake
flytt markøren ett ord frem/tilbake
+ =C-M-f=, =C-M-b=
+ Flytt markøren ett uttrykk frem/tilbake
flytt markøren ett uttrykk frem/tilbake
+ =C-a=, =C-e=
+ Flytt markøren til begynnelsen/slutten av linja
flytt markøren til begynnelsen/slutten av linja
+ =C-p=, =C-n=
+ Flytt markøren til forrige/neste linje
flytt markøren til forrige/neste linje
* Bla rundt
+ =C-v=, =M-v=
+ Scroll ned/opp en side
scroll ned/opp en side
+ =M-<=, =M->=
+ Gå til begynnelsen/slutten av bufferet
gå til begynnelsen/slutten av bufferet
+ =C-l=
+ Juster vertikal visning av markøren til senter/toppen/bunnen
vis slik at markøren er i senter/toppen/bunnen
* Kill og yank
+ =C-w=
+ Kill, tilsvarer cut
kill, tilsvarer cut
+ =C-y=
+ Yank, tilsvarer paste
yank, tilsvarer paste
+ =M-w=
+ Lagre til kill-ring, tilsvarer copy
lagre til kill-ring, tilsvarer copy
+ =C-k=
+ Kill, drepe resten av en linje
kill, drepe resten av en linje
+ =M-y=
+ Yank-pop, går lenger tilbake på kill-ring
+ =M-y=, må etterfølges av =C-y=
yank-pop, går lenger tilbake på kill-ring
* Feiloppretting
+ =C-d=, =M-d=, =C-M-d=
+ Fjern neste bokstav/ord/uttrykk
+ =C-d=, =M-d=
fjern neste bokstav/ord
+ =C-_=, =C-/=, =C-x u=
+ Undo!
undo!
+ =C-t=, =M-t=, =C-M-t=
+ Bytt om to bokstaver/ord/uttrykk
+ =C-t=, =M-t=
bytt om to bokstaver/ord
+ =C-x C-t=
+ Bytt om to linjer
bytt om to linjer
+ =M-q=
+ Formaterer avsnitt til en fornuftig linjebredde
formaterer avsnitt til en fornuftig linjebredde
+ =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
+ =C-SPC=
+ Start markering av tekst
markerer tekst
+ =C-x h=
+ Markerer all tekst
markerer all tekst
+ =M-h=
+ Markerer en paragraf
markerer en paragraf
+ Bruk i kombinasjon med =M-w=, =C-w= og =TAB=
+ Undo respekterer den markerte regionen
* Filer
+ =C-x C-f=
+ Åpne eller opprett fil
åpne fil
(hvis den ikke finnes fra før åpnes et tomt buffer med det nye filnavnet)
+ =C-x C-s=
+ Skriv bufferet til fil
lagre buffer
+ =C-x C-w=
+ Skriv bufferet til en ny fil (tilsvarende «lagre som...»)
skrive til fil (tilsvarende «lagre som...»)
* Vinduer
+ =C-x 2=, =C-x 3=
+ Splitt et vindu horisontalt/vertikalt
splitt et vindu horisontalt/vertikalt
+ =C-x 1=
+ Gjør det aktive vinduet til det eneste vinduet
gjør det aktive vinduet til det eneste vinduet
+ =C-x 0=
+ Lukk det aktive vinduet
lukk det aktive vinduet
+ =C-x o=
+ Bytt fokus til et annet vindu
bytt fokus til et annet vindu
* Buffere
+ =C-x b RET=
+ Bytt buffer
bytt buffer
(siste besøkte buffer er default)
+ =C-x k RET=
+ Drep (kill) buffer
drep (kill) buffer
(det aktive bufferet er default)
+ =C-x left=, =C-x right=
+ En annen måte å bytter buffer på
en annen måte å bytter buffer på
* Kommandoer
+ =M-x <function> RET=
+ Lar deg kalle en vilkårlig kommando ved navn
lar deg kalle en vilkårlig kommando med navn
+ =M-x replace-string RET <from> RET <to> RET=
+ Tilsvarer «search and replace»
tilsvarer «search and replace»
+ =M-%=, =M-x query-replace RET <from> RET <to> RET=
+ Som =replace-string= for utvalgte treff
+ Bruk =y=/=n= for om treffet skal erstattes
+ =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-%=!)
* Søking
+ =C-s=
+ Søk /fremover/ i bufferet
+ Gjenta =C-s= for neste treff
+ Avslutt med =RET=
søk fremover i bufferet
+ =C-r=
+ Søk /bakover/ i bufferet
søk bakover i bufferet
+ Dette er en /svært/ effektiv måte å flytte markøren på!
* Hjelp til selvhjelp
+ =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=
+ Bruk hvis du vil vite hva en funksjon gjør
+ =C-h v=
+ Bruk hvis du vil vite hva en variabel er bundet til og brukes til
bruk hvis du kjenner navnet på en funksjon, men ikke vet hva den gjør
+ =C-h m=
+ Gir deg informasjon om aktive modes
gir deg informasjon om moden du er i (bl.a. tastekombinasjoner som er spesielle for moden)
+ =C-h a=
+ Apropos lar deg søke i hjelpen
apropos, lar deg søke i hjelpen
+ =C-h C-h= (eller: =C-h ?=)
+ Gir deg hjelp om hjelpen
gir deg hjelp om hjelpen
* Programmering
+ =TAB=
+ Indenterer riktig
indenterer riktig
+ =M-;=
+ Kommenterer ut på slutten av linjen eller et markert område
kommenterer ut et markert område
+ =C-x C-;=
+ Kommenterer ut linjen
kommenterer ut linjen
+ =M-x compile RET <compile-command> RET=
+ Lar deg kjøre en vilkårlig kommando for å kompilere
+ Gir trykkbare linker til der det oppstod feil
lar deg kompilere i Emacs
(gir trykkbare linker til der feil oppstod)
+ =M-g M-g <nr> RET=
+ Flytter markøren til linjenummer =<nr>=
flytter markøren til linjenummer =<nr>=
* Makroer
+ Makroer er en måte å «ta opp» en rekke kommandoer på
+ =C-x (=
+ Definer en makro
definer en makro
+ =<f3>=
+ Definer en makro /eller/ sett inn løpenummer
definer en makro /eller/ sett inn løpenummer
+ =C-x )=, =<f4>=
+ Ferdigstill makroen
ferdigstill makroen
+ =C-x e=, =<f4>=
+ Utfør makroen
+ Bruk =e= for å gjenta makroen
utfør makroen
+ =e=
gjenta makroen
* Pakker
+ Emacs 29 kommer med innebygd pakkebehandler
+ Det finnes tusenvis av pakker
+ det finnes tusenvis av pakker
+ =M-x list-packages=
+ Bla gjennom pakker
+ =i= Marker for å installere
+ =U= Marker alle pakker for oppgradering
+ =d= Marker for sletting
+ =x= Utfør installering/oppgradering/sletting
bla gjennom pakker
+ Dette bør heller gjøres i konfigurasjonsfilen
+ =i= installere
+ =U= oppgrader alle
+ =d= slett
+ =x= utfør installering/oppgradering/sletting
+ Alt dette bør heller gjøres i konfigurasjonsfilen
* Anbefalinger
+ [[https://github.com/magnars/multiple-cursors.el][Multiple cursors]] ([[http://emacsrocks.com/e13.html][demo]])
+ Lar deg kontrollere flere markører samtidig!
+ [[https://magit.vc/][Magit]]
+ Det beste grensesnittet til Git
+ [[https://orgmode.org/][Org mode]]
+ Et markup språk med fantastisk støtte for
+ Notater
+ Publisering
+ Literate programming
+ ... masse mer
lar deg kontrollere flere markører samtidig!
* Nyttige lenker
+ [[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]]
+ Noen konfigurasjonsfiler:
+ [[https://github.com/larstvei/dot-emacs][larstvei]]
+ [[https://codeberg.org/idun/dotemacs][idun]]
+ [[https://github.com/SophieBosio/.emacs.d][SophieBosio]]
+ [[https://github.com/magnars/emacsd-reboot][magnars]]
+ [[https://github.com/simenheg/.emacs.d][simenheg]]
+ [[https://github.com/purcell/emacs.d][purcell]]
+ [[https://github.com/rougier/dotemacs][rougier]]
+ [[https://github.com/larstvei/dot-emacs][Min konfigurasjonsfil]]