emacskurs/slides.org
2024-09-25 16:01:56 +02:00

346 lines
7.3 KiB
Org Mode
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#+TITLE: Emacskurs
#+EMAIL: larstvei@ifi.uio.no
[[https://git.larstvei.no/larstvei/emacskurs]]
* Plan for kurset
+ Introduksjon til bruk av Emacs (ca. 30 minutter)
+ Dere installerer Emacs 29 (frem til maten kommer)
+ Pizza! (for de som er påmeldt)
+ Se en konfigurasjonsfil vokse frem (ca. 20 minutter)
+ Workshop hvor vi hjelper deg starte å konfigurere Emacs (ca. 20 minutter)
* 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
* Buffere, vinduer og rammer
+ 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/
* Modes
+ /Major/ modes
+ hvert buffer har nøyaktig é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
+ 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»
+ Etter hvert:
+ Skriv din egen konfigurasjonsfil + Lær litt Emacs Lisp og skriv dine egne funksjoner
+ Gjør =Caps Lock= om til en ekstra =Ctrl=
* Terminologi for taster
+ =C-<any>=
+ Control
+ =M-<any>=
+ Meta er venstre-=Alt= på de fleste maskiner (alternativt =ESC=)
+ =S-<any>=
* Shift
* Kan ikke brukes med tegn du må bruke Shift for å nå (f.eks. =:=)
+ =<any>= representerer et vilkårlig tegn eller tastekombinasjon
* Prefikstaster
+ =C-x <any>=
+ Prefiks for globale kommandoer
+ =C-c <any>=
+ Prefiks for lokale kommandoer + Kan ha ulik oppførsel i ulike modes
+ =C-h <any>= + Prefiks for hjelp
* Komme seg ut
+ =C-x C-c= + Avslutt Emacs
+ =C-g= + Avbryt
+ Bør spammes når Emacs forvirrer deg
+ =ESC ESC ESC=
+ Bruk hvis =C-g= ikke hjalp
+ =<prefix> C-g=
+ Er alltid udefinert + Altså kan =C-g= brukes til å avbryte prefiks
* Tekstredigering
+ =C-f=, =C-b= + Flytt markøren ett tegn frem/tilbake
+ =M-f=, =M-b= + Flytt markøren ett ord frem/tilbake
+ =C-M-f=, =C-M-b= + Flytt markøren ett uttrykk 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
+ =C-v=, =M-v= + Scroll ned/opp en side
+ =M-<=, =M->= + Gå til begynnelsen/slutten av bufferet
+ =C-l= + Juster vertikal visning av markøren til midten/toppen/bunnen
* Kill og yank
+ =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= + Yank-pop, går lenger tilbake på kill-ring
* Feiloppretting
+ =C-d=, =M-d=, =C-M-d= + Fjern neste bokstav/ord/uttrykk
+ =DEL=, =M-DEL=, =C-M-DEL=
* Fjern forrige bokstav/ord/uttrykk
* =DEL= er "slettetasten", ikke "delete"
+ =C-_=, =C-/=, =C-x u=
+ Undo!
+ =C-t=, =M-t=, =C-M-t=
+ Bytt om to bokstaver/ord/uttrykk
+ =C-x C-t=
+ Bytt om to linjer
+ =M-q=
+ Formaterer avsnitt til en fornuftig linjebredde + Setter inn og fjerner kommentartegn etter behov
+ =M-u=, =M-l=, =M-c= + Gjør neste ord til UPPERCASE/lowercase/Capital-Case
* Markering av tekst
+ =C-SPC= + Start markering av tekst
+ =C-x h= + Markerer all tekst
+ =M-h= + Markerer et avsnitt ("paragraph")
+ Bruk i kombinasjon med =M-w=, =C-w= og =TAB=
+ Undo respekterer den markerte regionen
* Filer
+ =C-x C-f= + Åpne eller opprett fil
+ =C-x C-s= + Skriv bufferet til fil
+ =C-x C-w= + Skriv bufferet til en ny fil (tilsvarende «lagre som...»)
* Vinduer
+ =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
+ =C-x b RET= + Bytt buffer
+ =C-x k RET= + Drep (kill) buffer
+ =C-x left=, =C-x right= + En annen måte å bytte buffer på
* Kommandoer
+ =M-x <function> RET= + Lar deg kalle en vilkårlig kommando ved navn
+ =M-x replace-string RET <from> RET <to> RET= + Tilsvarer «search and replace»
+ =M-%=, =M-x query-replace RET <from> RET <to> RET= + Som =replace-string= for utvalgte treff
+ Bruk =y= / =n= for å velge om treffet skal erstattes + Bruk =!= for å erstatte resten av treffene
* Søking
+ =C-s= + Søk /fremover/ i bufferet
+ Gjenta =C-s= for neste treff + Avslutt med =RET=, slettekommando eller flytting av peker
+ =C-r= + 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
+ =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
+ =C-h m=
+ Gir deg informasjon om aktive modes
+ =C-h a=
+ Apropos lar deg søke i hjelpen
+ =C-h C-h= (eller: =C-h ?=)
+ Gir deg hjelp om hjelpen
* Programmering
+ =TAB=
+ Indenterer riktig
+ =M-;=
+ Kommenterer ut på slutten av linjen eller et markert område
+ =C-x C-;=
+ 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
+ =M-g M-g <nr> RET= + Flytter markøren til linjenummer =<nr>=
* Makroer
+ Makroer er en måte å «ta opp» en rekke kommandoer på
+ =C-x (=
+ Definer en makro
+ =<f3>=
+ Definer en makro /eller/ sett inn løpenummer
+ =C-x )=, =<f4>=
+ Ferdigstill makroen
+ =C-x e=, =<f4>=
+ Utfør makroen + Bruk =e= for å gjenta makroen
* Pakker
+ Emacs 29 kommer med innebygd pakkebehandler
+ 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
+ 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
* Nyttige lenker
+ [[http://www.gnu.org/software/emacs/manual/html_node/emacs/index.html#Top][Emacs-manualen]]
+ [[https://www.masteringemacs.org/][Mastering Emacs]]
+ [[https://systemcrafters.net/][System Crafters]]
+ 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]]