emacskurs/slides.org

7.2 KiB

Emacskurs

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 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 å 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 å 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
  • 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

  • Multiple cursors (demo)

    • Lar deg kontrollere flere markører samtidig!
  • Magit

    • Det beste grensesnittet til Git
  • Org mode

    • Et markup språk med fantastisk støtte for

      • Notater
      • Publisering
      • Literate programming
      • … masse mer