Compare commits

...

24 Commits

Author SHA1 Message Date
7499c8166c Legg til noen lenker 2024-09-24 01:51:50 +02:00
463fbf0dad Småfiks i Anbefalinger 2024-09-24 01:39:46 +02:00
630756fdca Småfiks i Pakkebehandling 2024-09-24 01:35:45 +02:00
10d8ca291f Småfiks i Makroer 2024-09-24 01:35:34 +02:00
4e6f48f7ae Småfiks i Programmering 2024-09-24 01:32:59 +02:00
129f37ada0 Følgefiks i Hva er Emacs? 2024-09-24 01:31:04 +02:00
e4a1cb02ab Småfiks i Hjelp til selvhjelp 2024-09-24 01:30:44 +02:00
e8b956e452 Småfiks i Søking 2024-09-24 01:28:18 +02:00
7c38e0f24a Småfiks i Kommandoer 2024-09-24 01:25:00 +02:00
874d7b9257 Småfiks i Buffere 2024-09-24 01:22:00 +02:00
d0f8d86330 Småfiks i Vinduer 2024-09-24 01:08:43 +02:00
910ba276a9 Småfiks i Filer 2024-09-24 01:08:08 +02:00
18dff87379 Småfiks i Markering av tekst 2024-09-24 01:07:14 +02:00
91f1e2ad92 Småfiks i Feiloppretting 2024-09-24 01:05:18 +02:00
cd4a404a28 Småfiks kill og yank 2024-09-24 01:02:05 +02:00
c015cd006f Småfiks Bla rundt 2024-09-24 00:58:46 +02:00
990ccf686b Småfiks tekstredigering 2024-09-24 00:57:00 +02:00
fd26496a7c Småfiks på Komme seg ut 2024-09-24 00:56:07 +02:00
71bbbbb190 Småfiks i prefikstaster 2024-09-24 00:54:38 +02:00
31714725f8 Småfiks terminologi for taster 2024-09-24 00:52:17 +02:00
0f06e7ed17 Småfiks i tips 2024-09-24 00:51:20 +02:00
1a123f98f5 Småfiks i modes 2024-09-24 00:47:56 +02:00
ff4b588e7d Fiks i rammer, vinduer og buffere 2024-09-24 00:46:26 +02:00
ad21913add Småfiks i begynnelsen 2024-09-24 00:38:41 +02:00

View File

@ -3,319 +3,329 @@
* Plan for kurset * Plan for kurset
+ Før pause: + Introduksjon til bruk av Emacs (ca. 20 minutter)
+ Liten demonstrasjon av hvordan man kommer igang med Emacs på Ifi's maskiner + Se en konfigurasjonsfil vokse frem (ca. 20 minutter)
+ Snakk om hva Emacs er + Pizza! (for de som er påmeldt)
+ Gå raskt gjennom foilene og dekker «basics» + Workshop hvor vi hjelper deg komme i gang med Emacs (ca. 45 minutter)
+ 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?
+ Teksteditor + Emacs er en teksteditor
+ Utvidbar (Emacs Lisp) + Emacs er unikt utvidbar
+ Over 30 år gammel + Emacs er en Emacs Lisp maskin
+ Over 2500 innebygde kommandoer + Emacs er selvdokumenterende
+ Fri programvare + Emacs har over 10000 innebygde kommandoer
+ Emacs er /fri/ programvare
+ Emacs er 48 år gammel
* Rammer, vinduer og buffere * Buffere, vinduer og rammer
+ Emacs åpnes i en ramme + Tekst lagres i /buffere/
+ Man kan ha flere vinduer i samme ramme + Filer lastes inn i et buffer
+ Tekst vises i buffere + Buffere kan skrives til fil
+ Du kan ha så mange åpne buffere du vil + Et buffere vises i et /vindu/
+ En fil åpnes i et nytt buffer + En /ramme/ kan inneholde ett eller flere vinduer
+ Minibufferet (nederste linje), brukes til å skrive inn filnavn, buffernavn, etc... + I bunnen av hver ramme er det et /minibuffer/
* Modes * Modes
+ Major modes + /Major/ modes
+ hvert buffer har kun én aktiv major mode + hvert buffer har nøyaktig én aktiv /major/ mode
+ en major mode gir deg funksjonalitet for en bestemt type tekstredigering + en major mode gir deg funksjonalitet for en bestemt type 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
+ Emacs er annerledes å bruke enn mange andre programmer, så det krever tilvenning. + Emacs er annerledes å bruke enn mange andre programmer
+ 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:
+ skriv din egen config-fil + Skriv din egen konfigurasjonsfil
+ 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 =Ctrl=
* Terminologi for taster * Terminologi for taster
+ =C-<any>= + =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>= representerer et vilkårlig tegn eller tastekombinasjon
* Prefikstaster * Prefikstaster
+ =C-x <any>= + =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!) + Kan ha ulik oppførsel i ulike modes
+ =C-h <any>= + =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 * Komme seg ut
+ =C-x C-c= + =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!) + Bør spammes når Emacs forvirrer deg
+ =ESC ESC ESC= + =ESC ESC ESC=
(bruk hvis =C-g= ikke hjalp) + Bruk hvis =C-g= ikke hjalp
+ =<prefix> C-g= + =<prefix> C-g=
er udefinert + Er alltid udefinert
(Dvs. =C-g= kan brukes til å avbryte prefiks) + Altså kan =C-g= brukes til å avbryte prefiks
* Tekstredigering * Tekstredigering
+ =C-f=, =C-b= + =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-M-f=, =C-M-b= + =C-M-f=, =C-M-b=
flytt markøren ett uttrykk frem/tilbake + Flytt markøren ett uttrykk 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
+ =C-v=, =M-v= + =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 + Juster vertikal visning av markøren til senter/toppen/bunnen
* Kill og yank * Kill og yank
+ =C-w= + =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=
yank-pop, går lenger tilbake på kill-ring + Yank-pop, går lenger tilbake på kill-ring
* Feiloppretting * Feiloppretting
+ =C-d=, =M-d= + =C-d=, =M-d=, =C-M-d=
fjern neste bokstav/ord + Fjern neste bokstav/ord/uttrykk
+ =C-_=, =C-/=, =C-x u= + =C-_=, =C-/=, =C-x u=
undo! + Undo!
+ =C-t=, =M-t= + =C-t=, =M-t=, =C-M-t=
bytt om to bokstaver/ord + Bytt om to bokstaver/ord/uttrykk
+ =C-x C-t= + =C-x C-t=
bytt om to linjer + Bytt om to linjer
+ =M-q= + =M-q=
formaterer avsnitt til en fornuftig linjebredde + Formaterer avsnitt til en fornuftig linjebredde
+ =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
+ =C-SPC= + =C-SPC=
markerer tekst + Start markering av 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=
+ Undo respekterer den markerte regionen
* Filer * Filer
+ =C-x C-f= + =C-x C-f=
åpne fil + Åpne eller opprett fil
(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 + Skriv bufferet til fil
+ =C-x C-w= + =C-x C-w=
skrive til fil (tilsvarende «lagre som...») + Skriv bufferet til en ny fil (tilsvarende «lagre som...»)
* Vinduer * Vinduer
+ =C-x 2=, =C-x 3= + =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
+ =C-x b RET= + =C-x b RET=
bytt buffer + Bytt buffer
(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)
+ =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
+ =M-x <function> RET= + =M-x <function> RET=
lar deg kalle en vilkårlig kommando med navn + Lar deg kalle en vilkårlig kommando ved navn
+ =M-x replace-string RET <from> RET <to> RET= + =M-x replace-string RET <from> RET <to> RET=
tilsvarer «search and replace» + Tilsvarer «search and replace»
+ =M-x query-replace RET <from> RET <to> RET= ... =y/n= + =M-%=, =M-x query-replace RET <from> RET <to> RET=
samme som =replace-string=, men du kan velge hva som skal erstattes (kan også kjøres med =M-%=!) + Som =replace-string= for utvalgte treff
+ Bruk =y=/=n= for om treffet skal erstattes
* Søking * Søking
+ =C-s= + =C-s=
søk fremover i bufferet + Søk /fremover/ i bufferet
+ Gjenta =C-s= for neste treff
+ Avslutt med =RET=
+ =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
+ =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
+ =C-h f= + =C-h f=
bruk hvis du kjenner navnet på en funksjon, men ikke vet hva den gjør + 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
+ =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 aktive modes
+ =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
+ =TAB= + =TAB=
indenterer riktig + Indenterer riktig
+ =M-;= + =M-;=
kommenterer ut et markert område + Kommenterer ut på slutten av linjen eller et markert område
+ =C-x C-;= + =C-x C-;=
kommenterer ut linjen + Kommenterer ut linjen
+ =M-x compile RET <compile-command> RET= + =M-x compile RET <compile-command> RET=
lar deg kompilere i Emacs + Lar deg kjøre en vilkårlig kommando for å kompilere
(gir trykkbare linker til der feil oppstod) + Gir trykkbare linker til der det oppstod feil
+ =M-g M-g <nr> RET= + =M-g M-g <nr> RET=
flytter markøren til linjenummer =<nr>= + Flytter markøren til linjenummer =<nr>=
* Makroer * Makroer
+ 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=, =<f4>= + =C-x e=, =<f4>=
utfør makroen + Utfør makroen
+ Bruk =e= for å gjenta makroen
+ =e=
gjenta makroen
* Pakker * Pakker
+ Emacs 29 kommer med innebygd pakkebehandler + Emacs 29 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= Marker for å installere
+ =U= Marker alle pakker for oppgradering
+ =d= Marker for sletting
+ =x= Utfør installering/oppgradering/sletting
+ =i= installere + Dette bør heller gjøres i konfigurasjonsfilen
+ =U= oppgrader alle
+ =d= slett
+ =x= utfør installering/oppgradering/sletting
+ Alt dette bør heller gjøres i konfigurasjonsfilen
* Anbefalinger * Anbefalinger
+ [[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://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
* Nyttige lenker * Nyttige lenker
+ [[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://www.masteringemacs.org/reading-guide/][En flott blogg om Emacs]] + [[http://www.masteringemacs.org/reading-guide/][En flott blogg om Emacs]]
+ [[https://github.com/larstvei/dot-emacs][Min konfigurasjonsfil]] + 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]]