emacskurs

Lars Tveito

2013-08-01

emacskurs

Table of Contents

1 Emacskurs

1.1 Intro

1.1.1 Hva er Emacs?

  • Teksteditor
  • Utvidbar (Elisp)
  • Over 30 år gammel
  • Over 2500 innebygde kommandoer
  • Fri programvare

1.1.2 Buffere, vinduer og rammer

  • Tekst vises i buffere
  • Du kan ha så mange åpene buffere du vil
  • En fil åpnes i et nytt buffer
  • Minibufferet (nederste linje), brukes til å skrive inn filnavn, buffernavn, etc…
  • Emacs åpnes i en ramme
  • En kan ha flere vinduer i samme ramme

1.1.3 Modes

  • Major modes
    • hvert buffer har kun é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!

1.1.4 Tips

Emacs er annerledes å bruke enn mange andre programmer, så 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 (for spesielt interesserte)
    • skriv din egen configfil
    • lær litt elisp, og skriv dine egne funksjoner
  • annet
    • gjør CAPS-LOCK om til en ekstra Control (Ctrl)

1.2 Taster

1.2.1 Terminologi for taster

  • C-<any> Control
  • M-<any> Meta er Alt på de fleste maskiner (alternativt ESC)

<any> betyr et vilkårlig tegn (eller tastekombinasjon)

1.2.2 Prefikstaster

  • C-x <any> prefiks for globale kommandoer
  • C-c <any> prefiks for lokale kommandoer (har ikke alltid samme funksjon!)
  • C-h <any> prefiks for hjelp

Alle tastekombinasjon som ikke er en prefiks er bundet til en kommando!

1.3 Komme seg ut

  • C-x C-c avslutt emacs
  • C-g avbryt (bruk hvis du ikke skjønner hva emacs holder på med!)
  • ESC ESC ESC (bruk hvis C-g ikke hjalp)
  • C-<prefix> C-g er udefinert (Dvs. C-g kan brukes til å avbryte prefiks)

1.4 Tekstredigering

1.4.1 Flytte markør

  • C-f, C-b flytt markøren ett tegn frem/tilbake
  • M-f, M-b flytt markøren ett ord 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

1.4.2 Bla rundt

  • C-v, M-v scroll ned/opp en side
  • M-<, M-> gå til begynnelsen/slutten av bufferet
  • C-l vis slik at markøren er i senter/toppen/bunnen

1.4.3 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, må etterfølges av C-y yank-pop, går lenger tilbake på kill-ring

1.4.4 Feiloppretting

  • C-d, M-d fjern neste bokstav/ord
  • C-_ undo!
  • C-t, M-t bytt om to bokstaver/ord
  • C-x C-t bytt om to linjer
  • M-q plasserer om tekst i en paragraf slik at linjene ikke overstiger 70 tegn (den ødelegger ikke syntaks i programmeringsmodes)
  • M-u, M-l, M-c gjør neste ord til UPPERCASE/lowercase/Capital-Case

1.4.5 Markering av tekst

  • C-SPC marker tekst
  • C-x h marker all tekst

Bruk i kombinasjon med M-w, C-w og TAB

1.5 Filer, vinduer og buffere

1.5.1 Filer

  • C-x C-f åpne fil (hvis den ikke finnes fra før opprettes den)
  • C-x C-s lagre buffer
  • C-x C-w skrive til fil (tilsvarende «lagre som…»)

1.5.2 Vinduer

  • C-x 2, C-x 3 splitt et vindu vertikalt/horisontalt
  • 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

1.5.3 Buffere

  • C-x b RET bytt buffer (siste besøkte buffer er default)
  • C-x k RET drep (kill) buffer (det aktive bufferet er default)
  • C-x left, C-x right en annen måte å bytter buffer

1.6 Kommandoer

  • M-x function RET lar deg kalle en hvilken som helst kommando med navn
  • M-x replace-string RET erstatt RET med RET tilsvarer «search and replace»
  • M-x query-replace RET erstatt RET med RET … y/n samme som replace-string, men du kan velge hva som skal erstattes

Bruk TAB for autocomplete!

1.7 Søking

  • C-s søk fremover i bufferet
  • C-r søk bakover i bufferet

Dette er en effektiv måte å flytte markøren!

1.8 Hjelp til selvhjelp

  • C-h k bruk hvis du lurer på hva en tastekombinasjon gjør
  • C-h f bruk hvis du kjenner navnet på en funksjon, men ikke vet hva hva den gjør
  • C-h m gir deg informasjon om moden du er i (bl.a tastekombinasjoner som er spesielle for moden)
  • C-h a apropos, lar deg søke i hjelpen
  • C-h C-h, C-h ? gir deg hjelp om hjelpen

1.9 Programmering

  • TAB indenterer riktig (dersom indenteringen er gal er det et tegn på at det er noe galt i koden!)
  • M-; kommenterer ut et markert område
  • M-x compile RET compile-command RET lar deg kompilere i Emacs (gir trykkbare linker til der feil oppstod)
  • M-g g <nr> RET flytter markøren til linjenummer <nr>