Hjem

Rom
- DataSaler
- Auditorier

Teknisk
- Linux
- Windows
- Sikkerhet
- Driftslogg

Avdelinger med info
- IFT
- Informatikk
- UB

Tips om effektiv bruk av GNU Emacs

Her vil du finne noen nyttige tips om hvordan du kan bruke Emacs mer effektivt. Dette dokumentet er ikke ment som et innføringskurs i Emacs.

Om GNU Emacs

GNU Emacs (heretter bare kalt Emacs) er kanskje verdens mest fleksible teksteditor. Den er beskrevet som en «extensible, customizable, self-documenting real-time display editor». Den har blitt utviklet siden åttitallet av Richard Stallman i GNU-prosjektet.

Mange av Emacs' mest nyttige egenskaper er skjult bak tilsynelatende obskure tastekombinasjoner eller kommandoer. Om man imidlertid lærer seg disse, vil man oppdage at de er intuitive, enkle å huske, og gjør at du jobber raskere og er mer produktiv.

Konvensjoner

Når vi beskriver tastekombinasjoner i dette dokumentet, bruker vi den notasjonen som er standard i Emacs. Denne beskrives best med eksempler:

Elementære tastekombinasjoner

Mange nybegynnere gjør seg avhengige av Emacs sine menyer og verktøylinjer. Dette er svært lite effektivt, ettersom man hele tiden må bevege seg mellom tastatur og mus. Om man vil jobbe raskere og unngå musesyken, anbefales du å lære deg følgende tastekombinasjoner:

Filbehandling

Noe av det mest grunnleggende man må lære seg, er hvordan man åpner filer og lagrer dem.

Tast

Beskrivelse

C-x C-f

Åpne eller opprette en fil. Oppgi filnavnet i prompten nederst i Emacs-vinduet. Husk at du kan bruke TAB for å komplettere.

C-x C-s

Lagre bufferet du jobber mot til filnavnet du har gitt den

C-x C-w

Lagre som ...

Bruk av buffers

Emacs kan ha mange filer åpne samtidig. Hver fil lastes inn i et buffer, som er det du jobber mot i Emacs. Du kan skifte mellom bufrene enkelt:

Tast

Beskrivelse

C-x b

Skift til et annet buffer. Tast Enter for default.

C-x C-b

Viser liste over åpne buffers. Velg et med tastene eller mus.

C-x k

Lukk et buffer (Enter for default) (k = «kill»)

C-x 2

Deler det aktive vinduet horisontalt i to, med ett buffer i hver del

C-x 3

Deler det aktive vinduet vertikalt i to

C-x 1

Gjør det aktive vinduet til det eneste synlige

C-x 0

Gjør det «andre» vinduet til det eneste synlige

C-x o

Flytt markøren til det «andre» vinduet (o = other)

Merk bruken av begrepet «vindu». Dette må ikke blandes med det vi normalt kaller for vinduer i et grafisk skrivebordsmiljø. Emacs består internt av det vi nå kaller vinduer (som noen kanskje best kjenner som frames eller rammer). Når du først åpner Emacs, er kun ett vindu åpent, men om du vil jobbe effektivt på flere filer samtidig, kan du splitte Emacs inn i mange vinduer som hver inneholder et buffer.

Manøvrering i teksten

Man kan bruke piltastene og taster som Home, End, Page Up og Page Down for å bevege seg i teksten. Om man imidlertid vil bevege hendene enda mindre bort fra hoveddelen av tastaturet, er disse tastene fine:

Tast

Beskrivelse

C-a

Går til begynnelsen av linjen

C-e

Går til slutten av linjen

C-n

Går til neste linje (n står for «next»)

C-p

Går til forrige linje (p står for «previous»)

C-b

Går ett tegn tilbake (mot venstre) (b står for «back»)

C-f

Går ett tegn fremover (mot høyre) (f står for «forward»)

Enkel tekstmanipulering

Bruk ikke musen til klipp- og lim-operasjoner!

Tast

Beskrivelse

C-k

Sletter resten av linjen (nyttig sammen med C-a

C-space

Setter «punktet», dvs. starten på en tekstmarkering

C-x h

Markerer hele bufferet

M-w

Kopierer tekst («Copy»-delen av en «Copy & Paste»

C-w

Klipper ut tekst («Cut»-delen av en «Cut & Paste»

C-y

Lim inn («Paste»)

M-y

Erstatt det du nettopp limte inn med det forrige du kopierte. Kan brukes gjentatte ganger for å gå bakover i «kopi-køen».

Tastekombinasjoner for Java

Emacs inneholder faktisk et komplett utviklingsmiljø for Java (JDEE). Dette kan brukes til avansert navigering i koden på tvers av klasser og pakker, debugging, kodekomplettering osv. Det skal imidlertid ikke mye til for å få enkel nytte av JDEE. Her vil du lære hvordan du kan kompilere og kjøre Java-kode fra Emacs, slik at du slipper å hoppe mellom Emacs- og terminal-vinduer.

Tast

Beskrivelse

C-c C-v C-c

Kompilerer Java-koden du har oppe, og avhengige klasser

C-c C-v C-r

Kjører Java-koden du har oppe (må inneholde main-metode)

C-c C-v C-l

Setter inn en 'System.out.println(...)'-linje

C-c C-v C-x

Vis kildekoden til denne klassens superklasse

C-c C-v C-z

Sett inn en import-setning

C-c C-v C-s

Åpner Speedbar, som lar deg navigere kildefiler

C-c C-v X-f

Lar deg søke etter innhold i kildefiler

Emacs sitt hjelpesystem

Du kan lære deg alt som er å kunne om Emacs med det innebygde hjelpesystemet. Her er noen hint:

Tast

Beskrivelse

C-h t

Åpner en svært nyttig tutorial (kurs) for å lære Emacs fra bunnen av.

C-h k

Lurer du på hva en tastekombinasjon gjør? Med denne kommandoen oppgir du kombinasjonen du lurer på, og får svaret.

C-h a

Apropos. En slags søkemotor mot hjelpesystemet.

C-h f

For de litt viderekommende: Slår opp hva en gitt funksjon gjør.

C-h v

Slår opp hva en gitt variabel i Emacs Lisp gjør for noe.

C-h b

Viser samtlige tastekombinasjoner. Imponér alle vennene dine!

Funksjoner

Emacs er i stor grad skrevet i en Lisp-dialekt som heter Emacs Lisp eller elisp. Det samme språket brukes for å utvide Emacs med ny funksjonalitet. Et resultat av dette er at Emacs kan gjøre nesten hva som helst. Bruk tasten M-x for å oppgi et funksjonsnavn du vil kjøre. C-h f og C-h a er nyttig for å oppdage hvilke funksjoner som finnes. Du kan også binde egne tastekombinasjoner til hvilke som helst funksjoner, men det skal vi ikke dekke her.

Noen nyttige funksjoner

Navn

Beskrivelse

fill-region

Når man skriver tekst, vil denne funksjonen (som jobber mot markert tekst), omorganisere på teksten slik at avsnittene blir pene.

revert-buffer

Laster filen i bufferet på nytt. Nyttig om filen er endret utenfra.

indent-region

Indenterer markert programkode (veldig nyttig i Java)

.emacs

.emacs er en fil du har i hjemmekatalogen din som Emacs laster ved oppstart. Her kan du konfigurere Emacs til å være akkurat slik du vil ha den, men dette krever en viss forståelse av elisp.

Nyttige ting å ha i .emacs

Syntax

Beskrivelse

;; eller ;

kommentarer i LISP (.emacs)

(global-font-lock-mode t)

Aktiverer farge på programmeringsskriften.

(setq scroll-step antall linjer)

Scroll'er et gitt antall linjer, ved pil opp eller pil ned. Eks. (setq scroll-step 3) Scroll'er 3 linjer

(set-background-color "farge")

Setter bakgrunnsfargen til gitt farge Eks. (set-background-color "darkgrey") setter fargen til mørkegrå

(show-paren-mode t)

Slår på "parentes-tydeliggjøring".

(delete-selection-mode t)

Fjerner all tekst som er merket, med backspace.

(global-set-key [delete] 'delete-char)

Får delete til å oppføre seg som del og ikke som backspace slik den vanligvis gjør.

(setq next-line-add-newlines nil)

Slutt å lage white space med nedpilen.

(setq make-backup-files nil)
(setq auto-save-default nil)

Slutt å lage backup filer. (Tenk deg om før du implementerer denne)

Litt mer avansert syntaks til .emacs

Lag ditt eget fontlock-oppsett

Det som er bra med dette er at du kan lage ditt eget oppsett på hvordan programmeringspråk skal bli vist i emacs. Dette vil si at du kan forandre både font og farge på forskjellige programmeringssyntakser. Men for å bruke dette må du huske å skrive (global-font-lock-mode t) inn i .emacs før du begynner på det som kommer under.
Lykke til.

Dette er lettest å vise med eksempler:

(let (new-face)
(setq new-face (copy-face 'bold 'blue))
(set-face-foreground new-face "blue")

(setq new-face (copy-face 'bold 'white))
(set-face-foreground new-face "white")

*
*

*
*

OSV

(setq
font-lock-keyword-face 'blue
font-lock-variable-name-face 'white
*
*
OSV
)
)

Både 'bold og 'blue i (setq new-face (copy-face 'bold 'blue)) er fonter og farger som ligger i fontlock-pakken. Man kunne derfor ha byttet dem ut med 'italic og 'black (setq new-face (copy-face 'italic 'black)). Det vil også fungerer.

"blue" i (set-face-foreground new-face "blue")
er navnet på den nye fonten man har spesifisert.

'blue i font-lock-keyword-face 'blue er en anvendelse av fonten spesifisert i
(setq new-face (copy-face 'bold 'blue))
(set-face-foreground new-face "blue")
.

Her er en liste med alle fargene du kan bruke http://www.geocities.com/kensanata/colors.html

Her er en liste med en del programmeringsord man kan fargelegge:
font-lock-function-name-face
font-lock-keyword-face
font-lock-comment-face
font-lock-preprocessor-face
font-lock-string-face
font-lock-type-face
font-lock-variable-name-face
font-lock-reference-face

Bruk av rullehjul i Emacs

Skriv det følgenede inn i .emacs-filen din:

(mouse-wheel-mode 't)

Du skal nå kunne bruke musen sitt rullehjul til å scrolle med. Dersom det likevel ikke fungerer, kan du prøve med følgende i .emacs istedet:

(setq load-path (cons "stien til filen mwheel.el" load-path))
(load-library "mwheel")

Her er linken til filen du trenger som inneholder mwheel.el
Hold inne shift og trykk med venstre museknapp på linken http://membled.com/lib/emacs/mwheel.el

Matlab-programmeringspakken

Skriv det følgenede inn i .emacs-filen din:

(autoload 'matlab-mode "stien til filen matlab.el" "Enter Matlab mode." t)
(setq auto-mode-alist (cons '("\\.m\\'" . matlab-mode) auto-mode-alist))
(autoload 'matlab-shell "stien til filen matlab.el" "Interactive Matlab mode." t)

Her er linken til filen du trenger som inneholder matlab.el
Hold inne shift og trykk med venstre museknapp http://www.andrew.cmu.edu/course/16-720/extras/matlab_in_emacs/matlab.el

Fyll gjerne inn mer.


comments:

Bli kvitt pipingen -- Mon, 08 Dec 2003 20:22:43 +0100 reply
Skriv følgende i ~/.emacs : (setq ring-bell-function 'ignore)

JDEE (Java Development Enviroment for Emacs

For å initialisere JDEE med emacs legges følgende linjer til i din emacs fil:

(add-to-list 'load-path (expand-file-name "/net/sstud/share/elisp/jde/lisp"))
(add-to-list 'load-path (expand-file-name "/net/sstud/share/elisp/semantic"))
(add-to-list 'load-path (expand-file-name "/net/sstud/share/elisp/speedbar"))
(add-to-list 'load-path (expand-file-name "/net/sstud/share/elisp/elib"))
(add-to-list 'load-path (expand-file-name "/net/sstud/share/elisp/eieio"))
(require 'jde)

emacs -nw --dokumentasjon, Sun, 08 Feb 2004 14:06:46 +0100 reply
Er meget nyttig i terminalvindu ..