emacskurs/slides.org

342 lines
7.1 KiB
Org Mode
Raw Normal View History

#+TITLE: Emacskurs
#+EMAIL: larstvei@ifi.uio.no
2015-03-06 20:14:27 +00:00
* Plan for kurset
2024-09-04 09:05:44 +00:00
2024-09-23 22:38:41 +00:00
+ 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)
2013-08-01 01:11:08 +00:00
* Hva er Emacs?
2024-09-04 09:05:44 +00:00
2024-09-23 22:38:41 +00:00
+ Emacs er en teksteditor
+ Emacs er unikt utvidbar
+ Emacs er en Emacs Lisp maskin
2024-09-23 23:31:04 +00:00
+ Emacs er selvdokumenterende
2024-09-23 22:38:41 +00:00
+ Emacs har over 10000 innebygde kommandoer
+ Emacs er /fri/ programvare
2024-09-23 23:31:04 +00:00
+ Emacs er 48 år gammel
2024-09-23 22:45:55 +00:00
* 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
2013-08-01 01:11:08 +00:00
2024-09-23 22:47:56 +00:00
+ /Major/ modes
+ hvert buffer har nøyaktig én aktiv /major/ mode
2024-09-18 20:20:04 +00:00
+ en major mode gir deg funksjonalitet for en bestemt type tekstredigering
2024-09-12 14:56:02 +00:00
+ de fleste programmeringsspråk har sin egen major mode
2024-09-04 09:05:44 +00:00
2024-09-23 22:47:56 +00:00
+ /Minor/ modes
+ du kan ha så mange aktive /minor/ modes du ønsker
2024-09-12 14:56:02 +00:00
+ en minor mode tilbyr tilleggsfunksjonalitet
2013-08-01 01:11:08 +00:00
2024-09-12 14:56:02 +00:00
+ Modes tilføyer ofte egne tastekombinasjoner!
2013-08-01 01:11:08 +00:00
* Tips
2013-08-01 01:11:08 +00:00
2024-09-23 22:51:20 +00:00
+ Emacs er annerledes å bruke enn mange andre programmer
+ Det krever tilvenning
2013-08-01 01:11:08 +00:00
2024-09-23 22:51:20 +00:00
+ 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»
2015-03-06 20:14:27 +00:00
2024-09-23 22:51:20 +00:00
+ Etter hvert:
+ Skriv din egen konfigurasjonsfil
+ Lær litt Emacs Lisp, og skriv dine egne funksjoner
2024-09-04 09:05:44 +00:00
2024-09-23 22:51:20 +00:00
+ Gjør =Caps Lock= om til en ekstra =Ctrl=
2013-08-01 01:11:08 +00:00
* Terminologi for taster
2013-08-01 01:11:08 +00:00
2024-09-12 14:56:02 +00:00
+ =C-<any>=
2024-09-23 22:52:17 +00:00
+ Control
2024-09-04 09:05:44 +00:00
2024-09-12 14:56:02 +00:00
+ =M-<any>=
2024-09-25 02:32:09 +00:00
+ Meta er venstre-=Alt= på de fleste maskiner (alternativt =ESC=)
2013-08-01 01:11:08 +00:00
2024-09-25 02:58:12 +00:00
+ =S-<any>=
* Shift
* Bruk =B= i stedet for =S-b= med bokstaver
2024-09-23 22:52:17 +00:00
+ =<any>= representerer et vilkårlig tegn eller tastekombinasjon
2013-08-01 01:11:08 +00:00
* Prefikstaster
2013-08-01 01:11:08 +00:00
2024-09-12 14:56:02 +00:00
+ =C-x <any>=
2024-09-23 22:54:38 +00:00
+ Prefiks for globale kommandoer
2013-08-01 01:11:08 +00:00
2024-09-12 14:56:02 +00:00
+ =C-c <any>=
2024-09-23 22:54:38 +00:00
+ Prefiks for lokale kommandoer
+ Kan ha ulik oppførsel i ulike modes
2013-08-01 01:11:08 +00:00
2024-09-12 14:56:02 +00:00
+ =C-h <any>=
2024-09-23 22:54:38 +00:00
+ Prefiks for hjelp
2013-08-01 01:11:08 +00:00
* Komme seg ut
2013-08-01 01:11:08 +00:00
2024-09-12 14:56:02 +00:00
+ =C-x C-c=
2024-09-23 22:56:07 +00:00
+ Avslutt Emacs
2024-09-04 09:05:44 +00:00
2024-09-12 14:56:02 +00:00
+ =C-g=
2024-09-23 22:56:07 +00:00
+ Avbryt
+ Bør spammes når Emacs forvirrer deg
2013-08-01 01:11:08 +00:00
2024-09-12 14:56:02 +00:00
+ =ESC ESC ESC=
2024-09-23 22:56:07 +00:00
+ Bruk hvis =C-g= ikke hjalp
2013-08-01 01:11:08 +00:00
2024-09-12 14:56:02 +00:00
+ =<prefix> C-g=
2024-09-23 22:56:07 +00:00
+ Er alltid udefinert
+ Altså kan =C-g= brukes til å avbryte prefiks
2013-08-01 01:11:08 +00:00
* Tekstredigering
2013-08-01 01:11:08 +00:00
2024-09-12 14:56:02 +00:00
+ =C-f=, =C-b=
2024-09-23 22:57:00 +00:00
+ Flytt markøren ett tegn frem/tilbake
2013-08-01 01:11:08 +00:00
2024-09-12 14:56:02 +00:00
+ =M-f=, =M-b=
2024-09-23 22:57:00 +00:00
+ Flytt markøren ett ord frem/tilbake
2013-08-01 01:11:08 +00:00
2024-09-12 14:56:02 +00:00
+ =C-M-f=, =C-M-b=
2024-09-23 22:57:00 +00:00
+ Flytt markøren ett uttrykk frem/tilbake
2024-09-12 14:38:26 +00:00
2024-09-12 14:56:02 +00:00
+ =C-a=, =C-e=
2024-09-23 22:57:00 +00:00
+ Flytt markøren til begynnelsen/slutten av linja
2024-09-04 09:05:44 +00:00
2024-09-12 14:56:02 +00:00
+ =C-p=, =C-n=
2024-09-23 22:57:00 +00:00
+ Flytt markøren til forrige/neste linje
2013-08-01 01:11:08 +00:00
* Bla rundt
2013-08-01 01:11:08 +00:00
2024-09-12 14:56:02 +00:00
+ =C-v=, =M-v=
2024-09-23 22:58:46 +00:00
+ Scroll ned/opp en side
2024-09-04 09:05:44 +00:00
2024-09-12 14:56:02 +00:00
+ =M-<=, =M->=
2024-09-23 22:58:46 +00:00
+ Gå til begynnelsen/slutten av bufferet
2013-08-01 01:11:08 +00:00
2024-09-12 14:56:02 +00:00
+ =C-l=
+ Juster vertikal visning av markøren til midten/toppen/bunnen
2013-08-01 01:11:08 +00:00
* Kill og yank
2013-08-01 01:11:08 +00:00
2024-09-12 14:56:02 +00:00
+ =C-w=
2024-09-23 23:02:05 +00:00
+ Kill, tilsvarer cut
2024-09-04 09:05:44 +00:00
2024-09-12 14:56:02 +00:00
+ =C-y=
2024-09-23 23:02:05 +00:00
+ Yank, tilsvarer paste
2013-08-01 01:11:08 +00:00
2024-09-12 14:56:02 +00:00
+ =M-w=
2024-09-23 23:02:05 +00:00
+ Lagre til kill-ring, tilsvarer copy
2013-08-01 01:11:08 +00:00
2024-09-12 14:56:02 +00:00
+ =C-k=
2024-09-23 23:02:05 +00:00
+ Kill, drepe resten av en linje
2013-08-01 01:11:08 +00:00
2024-09-23 23:02:05 +00:00
+ =M-y=
+ Yank-pop, går lenger tilbake på kill-ring
2013-08-01 01:11:08 +00:00
* Feiloppretting
2013-08-01 01:11:08 +00:00
2024-09-23 23:05:18 +00:00
+ =C-d=, =M-d=, =C-M-d=
+ Fjern neste bokstav/ord/uttrykk
2013-08-01 01:11:08 +00:00
+ =DEL=, =M-DEL=, =C-M-DEL=
* Fjern forrige bokstav/ord/uttrykk
* =DEL= er "slettetasten", ikke "delete"
2024-09-12 14:56:02 +00:00
+ =C-_=, =C-/=, =C-x u=
2024-09-23 23:05:18 +00:00
+ Undo!
2013-08-01 01:11:08 +00:00
2024-09-23 23:05:18 +00:00
+ =C-t=, =M-t=, =C-M-t=
+ Bytt om to bokstaver/ord/uttrykk
2013-08-01 01:11:08 +00:00
2024-09-12 14:56:02 +00:00
+ =C-x C-t=
2024-09-23 23:05:18 +00:00
+ Bytt om to linjer
2013-08-01 01:11:08 +00:00
2024-09-12 14:56:02 +00:00
+ =M-q=
2024-09-23 23:05:18 +00:00
+ Formaterer avsnitt til en fornuftig linjebredde
+ Setter inn og fjerner kommentartegn etter behov
2024-09-04 09:05:44 +00:00
2024-09-12 14:56:02 +00:00
+ =M-u=, =M-l=, =M-c=
2024-09-23 23:05:18 +00:00
+ Gjør neste ord til UPPERCASE/lowercase/Capital-Case
2013-08-01 01:11:08 +00:00
* Markering av tekst
2013-08-01 01:11:08 +00:00
2024-09-12 14:56:02 +00:00
+ =C-SPC=
2024-09-23 23:07:14 +00:00
+ Start markering av tekst
2024-09-04 09:05:44 +00:00
2024-09-12 14:56:02 +00:00
+ =C-x h=
2024-09-23 23:07:14 +00:00
+ Markerer all tekst
2013-08-01 01:11:08 +00:00
2024-09-12 14:56:02 +00:00
+ =M-h=
2024-09-23 23:07:14 +00:00
+ Markerer en paragraf
2013-08-01 01:11:08 +00:00
2024-09-12 14:56:02 +00:00
+ Bruk i kombinasjon med =M-w=, =C-w= og =TAB=
2013-08-01 01:11:08 +00:00
2024-09-23 23:07:14 +00:00
+ Undo respekterer den markerte regionen
* Filer
2013-08-01 01:11:08 +00:00
2024-09-12 14:56:02 +00:00
+ =C-x C-f=
2024-09-23 23:08:08 +00:00
+ Åpne eller opprett fil
2013-08-01 01:11:08 +00:00
2024-09-12 14:56:02 +00:00
+ =C-x C-s=
2024-09-23 23:08:08 +00:00
+ Skriv bufferet til fil
2024-09-04 09:05:44 +00:00
2024-09-12 14:56:02 +00:00
+ =C-x C-w=
2024-09-23 23:08:08 +00:00
+ Skriv bufferet til en ny fil (tilsvarende «lagre som...»)
2013-08-01 01:11:08 +00:00
* Vinduer
2013-08-01 01:11:08 +00:00
2024-09-12 14:56:02 +00:00
+ =C-x 2=, =C-x 3=
2024-09-23 23:08:43 +00:00
+ Splitt et vindu horisontalt/vertikalt
2024-09-04 09:05:44 +00:00
2024-09-12 14:56:02 +00:00
+ =C-x 1=
2024-09-23 23:08:43 +00:00
+ Gjør det aktive vinduet til det eneste vinduet
2013-08-01 01:11:08 +00:00
2024-09-12 14:56:02 +00:00
+ =C-x 0=
2024-09-23 23:08:43 +00:00
+ Lukk det aktive vinduet
2013-08-01 01:11:08 +00:00
2024-09-12 14:56:02 +00:00
+ =C-x o=
2024-09-23 23:08:43 +00:00
+ Bytt fokus til et annet vindu
2013-08-01 01:11:08 +00:00
* Buffere
2013-08-01 01:11:08 +00:00
2024-09-12 14:56:02 +00:00
+ =C-x b RET=
2024-09-23 23:22:00 +00:00
+ Bytt buffer
2013-08-01 01:11:08 +00:00
2024-09-12 14:56:02 +00:00
+ =C-x k RET=
2024-09-23 23:22:00 +00:00
+ Drep (kill) buffer
2024-09-04 09:05:44 +00:00
2024-09-12 14:56:02 +00:00
+ =C-x left=, =C-x right=
2024-09-23 23:22:00 +00:00
+ En annen måte å bytter buffer på
2013-08-01 01:11:08 +00:00
2015-03-06 20:14:27 +00:00
* Kommandoer
2024-09-12 14:56:02 +00:00
+ =M-x <function> RET=
2024-09-23 23:25:00 +00:00
+ Lar deg kalle en vilkårlig kommando ved navn
2024-09-04 09:05:44 +00:00
2024-09-12 14:56:02 +00:00
+ =M-x replace-string RET <from> RET <to> RET=
2024-09-23 23:25:00 +00:00
+ Tilsvarer «search and replace»
2015-03-06 20:14:27 +00:00
2024-09-23 23:25:00 +00:00
+ =M-%=, =M-x query-replace RET <from> RET <to> RET=
+ Som =replace-string= for utvalgte treff
+ Bruk =y=/=n= for om treffet skal erstattes
2015-03-06 20:14:27 +00:00
* Søking
2024-09-12 14:56:02 +00:00
+ =C-s=
2024-09-23 23:28:08 +00:00
+ Søk /fremover/ i bufferet
+ Gjenta =C-s= for neste treff
+ Avslutt med =RET=
2024-09-04 09:05:44 +00:00
2024-09-12 14:56:02 +00:00
+ =C-r=
2024-09-23 23:28:08 +00:00
+ Søk /bakover/ i bufferet
2015-03-06 20:14:27 +00:00
2024-09-12 14:56:02 +00:00
+ Dette er en /svært/ effektiv måte å flytte markøren på!
2015-03-06 20:14:27 +00:00
* Hjelp til selvhjelp
2024-09-12 14:56:02 +00:00
+ =C-h k=
2024-09-23 23:30:44 +00:00
+ Bruk hvis du lurer på hva en tastekombinasjon gjør
2013-08-01 01:11:08 +00:00
2024-09-12 14:56:02 +00:00
+ =C-h f=
2024-09-23 23:30:44 +00:00
+ 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
2013-08-01 01:11:08 +00:00
2024-09-12 14:56:02 +00:00
+ =C-h m=
2024-09-23 23:30:44 +00:00
+ Gir deg informasjon om aktive modes
2013-08-01 01:11:08 +00:00
2024-09-12 14:56:02 +00:00
+ =C-h a=
2024-09-23 23:30:44 +00:00
+ Apropos lar deg søke i hjelpen
2024-09-04 09:05:44 +00:00
2024-09-12 14:56:02 +00:00
+ =C-h C-h= (eller: =C-h ?=)
2024-09-23 23:30:44 +00:00
+ Gir deg hjelp om hjelpen
2013-08-01 01:11:08 +00:00
2015-03-06 20:14:27 +00:00
* Programmering
2013-08-01 01:11:08 +00:00
2024-09-12 14:56:02 +00:00
+ =TAB=
2024-09-23 23:32:59 +00:00
+ Indenterer riktig
2024-09-04 09:05:44 +00:00
2024-09-12 14:56:02 +00:00
+ =M-;=
2024-09-23 23:32:59 +00:00
+ Kommenterer ut på slutten av linjen eller et markert område
2013-08-01 01:11:08 +00:00
2024-09-12 14:56:02 +00:00
+ =C-x C-;=
2024-09-23 23:32:59 +00:00
+ Kommenterer ut linjen
2024-09-12 14:38:26 +00:00
2024-09-12 14:56:02 +00:00
+ =M-x compile RET <compile-command> RET=
2024-09-23 23:32:59 +00:00
+ Lar deg kjøre en vilkårlig kommando for å kompilere
+ Gir trykkbare linker til der det oppstod feil
2013-08-01 01:11:08 +00:00
2024-09-12 14:56:02 +00:00
+ =M-g M-g <nr> RET=
2024-09-23 23:32:59 +00:00
+ Flytter markøren til linjenummer =<nr>=
2013-08-01 01:11:08 +00:00
2015-03-06 20:14:27 +00:00
* Makroer
2024-09-12 14:56:02 +00:00
+ Makroer er en måte å «ta opp» en rekke kommandoer på
2015-03-16 23:16:40 +00:00
2024-09-12 14:56:02 +00:00
+ =C-x (=
2024-09-23 23:35:34 +00:00
+ Definer en makro
2015-03-06 20:14:27 +00:00
2024-09-12 14:56:02 +00:00
+ =<f3>=
2024-09-23 23:35:34 +00:00
+ Definer en makro /eller/ sett inn løpenummer
2015-03-06 20:14:27 +00:00
2024-09-12 14:56:02 +00:00
+ =C-x )=, =<f4>=
2024-09-23 23:35:34 +00:00
+ Ferdigstill makroen
2024-09-04 09:05:44 +00:00
2024-09-12 14:56:02 +00:00
+ =C-x e=, =<f4>=
2024-09-23 23:35:34 +00:00
+ Utfør makroen
+ Bruk =e= for å gjenta makroen
2015-03-06 20:14:27 +00:00
* Pakker
2024-09-12 14:56:02 +00:00
+ Emacs 29 kommer med innebygd pakkebehandler
2024-09-04 09:05:44 +00:00
2024-09-23 23:35:45 +00:00
+ Det finnes tusenvis av pakker
2015-03-06 20:14:27 +00:00
2024-09-12 14:56:02 +00:00
+ =M-x list-packages=
2024-09-23 23:35:45 +00:00
+ Bla gjennom pakker
+ =i= Marker for å installere
+ =U= Marker alle pakker for oppgradering
+ =d= Marker for sletting
+ =x= Utfør installering/oppgradering/sletting
2015-03-06 20:14:27 +00:00
2024-09-23 23:35:45 +00:00
+ Dette bør heller gjøres i konfigurasjonsfilen
2015-03-16 23:16:40 +00:00
2024-09-12 14:38:26 +00:00
* Anbefalinger
2024-09-12 14:56:02 +00:00
+ [[https://github.com/magnars/multiple-cursors.el][Multiple cursors]] ([[http://emacsrocks.com/e13.html][demo]])
2024-09-23 23:39:46 +00:00
+ 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
2024-09-04 09:05:44 +00:00
* Nyttige lenker
2024-09-04 09:05:44 +00:00
2024-09-12 14:56:02 +00:00
+ [[http://www.gnu.org/software/emacs/manual/html_node/emacs/index.html#Top][Emacs-manualen]]
2024-09-24 00:02:26 +00:00
+ [[https://www.masteringemacs.org/][Mastering Emacs]]
+ [[https://systemcrafters.net/][System Crafters]]
2024-09-23 23:51:50 +00:00
+ 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]]