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:
C-xbetyr at du skal holde nede Ctrl-tasten, trykke x, så slippe begge tastene.M-xbetyr at du holde nede Meta-tasten (som er det samme som Alt-tasten på PC-ene våre), trykke x, så slippe begge tastene.C-x ubetyr at du skal holde nede Ctrl-tasten, trykke x, slippe begge tastene, og så trykke u.C-x C-uoverlates som en øvelse til leseren.
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 |
||
(setq make-backup-files 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.
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 ..