emacskurs/slides.org

323 lines
6.2 KiB
Org Mode

#+TITLE: Emacskurs
#+EMAIL: larstvei@ifi.uio.no
* 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)
* 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 =Alt= på de fleste maskiner (alternativt =ESC=)
+ =<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 senter/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
+ =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
+ =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 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
+ =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 å bytter 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 om treffet skal erstattes
* Søking
+ =C-s=
+ Søk /fremover/ i bufferet + Gjenta =C-s= for neste treff
+ Avslutt med =RET=
+ =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
+ =e=
gjenta makroen
* Pakker
+ Emacs 29 kommer med innebygd pakkebehandler
+ det finnes tusenvis av pakker
+ =M-x list-packages=
bla gjennom pakker
+ =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!
* 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]]
+ [[https://github.com/larstvei/dot-emacs][Min konfigurasjonsfil]]