6.4. Teksteditorer

I Linux er tekstbehandling ofte nødvendig. For eksempel når konfigurationsfiler skal tilrettes. Derfor er det vigtigt at vide noget om, hvordan tekster kan manipuleres med forskellige teksteditorer. Hvilke muligheder giver de forskellige teksteditorer. Hvilke begrænsninger har de enkelte teksteditorer. Hvornår skal jeg bruge vi? Hvilke andre editorer kan benyttes?

6.4.1. nedit

Hvis du er ude efter en enkel editor, som ikke kræver ret meget tilvænning, bør du se på nedit, som følger med SuSE 6.2, men ikke Red Hat 6.0. (Begge kører RPM-format, så det er ofte muligt at installere fra en SuSE CDROM på en Red Hat maskine).

Programmet nedit kan, som det er vist på næste figur, lave syntaks-fremvisning (highlight). Der er en del muligheder i nedit, og alligevel er den nem at gå til, så vi kan varmt anbefale den. Der er dog også grund til at lære f.eks. vi, pico og/eller emacs senere, idet nedit ikke kan køre uden X Window System. Med andre ord, hvis du skal editere en fil i Linux tekstmode, er det godt at kunne lidt andet. Desuden er nedit normalt ikke installeret på andre UNIX-systemer, men emacs er ofte og vi er altid.

6.4.2. Emacs

I en klasse for sig selv er Emacs (emacs) og søster-programmet XEmacs (xemacs), som begge kan utroligt mange ting, men kræver meget hukommelse (den eksekverbare fil i X udgave er på ca. 2,3 MB). XEmacs er relativt enkel at bruge, idet der er både menuer og kommandoer - Emacs har ikke helt så smarte knapper, men kun tekstmenuer. Desværre følger kun Emacs og ikke XEmacs med de fleste udgaver af Red Hat, men XEmacs findes som Red Hat pakker, og det er let at installere den.

Emacs og XEmacs har syntaks-highlighting til næsten alle programmeringssprog (også Matlab og LaTeX), hvilket gør dem meget lækre at arbejde med. Syntaksen i koden forstås, så indrykning af f.eks. C-kode sker automatisk, og koder vises med enten forskellige skrifttyper og/eller farver.

XEmacs og Emacs kan konfigureres gennem et meget slagkraftigt makrosystem, så programmering eller tekstbehandling kan tilpasses ud fra næsten alle ønsker. Hvis det måtte ønskes, kan Emacs styre næsten alt. Du kan fra Emacs oversætte C-programmer, du har editeret, og køre debugger direkte fra Emacs. Du kan sende og modtage elektronisk post gennem Emacs. Der er endvidere mulighed for at starte en kommando-skal op i Emacs, hvorfra programmer kan udføres. Alt dette kan køres samtidig med editering af et vilkårligt antal filer. Mange siger tit "Emacs kan bl.a. alt", og pånær at lave kaffe er det ikke modsagt. Til teksteditering og programmering er Emacs en Rolls Royce.

Start Emacs op ved at skrive emacs, hvad enten du er i en tekst-mode eller i en grafisk brugerflade. Emacs har menuer, hvorfra mange af funktionerne kan styres. Ud for hver funktion står også en tastaturkode. Derfor lærer du hurtigt at styre Emacs, også hvis du foretrækker tastaturkoder. Her gives en kort oversigt over de mest anvendte tastaturkoder. Ctrl står for Control-tasten, og Meta står for Meta-tasten, der i Linux er lig med Alt-tasten (eller Escape).

Tabel 6-1. Oversigt over de mest anvendte emacs-kommandoer.

KommandoForklaring
Ctrl-x Ctrl-f Find fil (til indlæsning). Indtast navnet på den ønskede fil, eller anvend tabulator til at få fil-liste, og brug musen (midterste knap) til at vælge. Hvis filen ikke findes i forvejen, vil den blive oprettet. Bemærk, at Ctrl-x f er noget helt andet!
Ctrl-x k Dræb buffer. Anvendes til at fjerne den indlæste fil.
Ctrl-x Ctrl-s Gem fil med samme filnavn.
Ctrl-x Ctrl-w Gem fil med nyt filnavn.
Ctrl-s Søg efter det, du angiver. Der skal ikke trykkes return til sidst. Tryk Ctrl-s for at søge til næste fremkomst af det valgte mønster.
Meta-% Søg og erstat (tryk Alt-Shift-5). Til de enkelte steder, hvor der kan erstattes, kan tastes y for erstat, n for spring videre og endelig kan tastes ! (udråbstegn) for at erstatte alle kommende forekomster.
Markering af tekst Dette kan ske ved at trykke venstre museknap ned og trække ned over teksten. Teksten er nu i en editerings-buffer.
Ctrl-_ Undo.
Ctrl-x 1Vis kun en ramme i vindue.
Ctrl-x 2Del aktuelle vindue i to rammer, som kan bruges til at redigere forskellige filer.
Ctrl-q TEGNQuote - bruges til at indtaste f.eks. linieskift Ctrl-M (Skriv Ctrl-q Ctrl-M).
Ctrl-w Klipper markeret tekst til editeringsbuffer. Sker hurtigere med et dobbeltklik på højre museknap.
Ctrl-y Yank text, dvs. indsæt tekst. Bemærk, at dette kan ske hurtigere med midterste museknap.
Meta-q Formater tekst til at fylde linjerne ud. Meget anvendelig til almindelig tekst, hvis linjerne er delt meget skævt. Emacs kan også genkende formler, som ikke vil blive ombrudt.

Det kan også nævnes, at Ctrl-venstre museknap giver en oversigt over filer, der er indlæst. På den måde kan du hoppe mellem filerne, du har indlæst. Med Ctrl-højre museknap kan der ændres skærmfont. Bemærk, at Emacs kan og bør sættes op til brugeren. Dette gøres i en .emacs fil, der gemmes i hjemmekataloget. Her er et eksempel på indholdet af en .emacs-fil. Du kan nøjes med de første fire linjer til at begynde med. Senere kan du bygge videre på standardindstillingerne - alt efter dine ønsker.

;De første fire linjer vil gøre, at de danske bogstaver virker rigtigt.
(standard-display-european t)
(set-input-mode (car (current-input-mode))
  (nth 1 (current-input-mode))
  0)


;Bind nogle gode funktioner til Ctrl- og musetasterne
;;Ctrl-venstre mus giver menu over åbne filer
;;Ctrl-midterste mus viser afsnit i filen som der kan hoppes til
;;    For C-filer er det alle funktioner (cool).
;;Ctrl-højre mus for at vælge font
(global-set-key [\C-down-mouse-1] 'mouse-buffer-menu)
(global-set-key [\C-down-mouse-2] 'imenu)
(global-set-key [\C-down-mouse-3] 'mouse-set-font)

;; Praktiske short-cuts for home, end, Ctrl-left/right og delete tasterne
(define-key global-map [home]    'beginning-of-line)
(define-key global-map [end]     'end-of-line)
(define-key global-map [C-left]  'backward-sexp)
(define-key global-map [C-right] 'forward-sexp)
(define-key global-map [delete] 'delete-char

;;Følgende kommando gør at emacs virker (dvs. backspace virker), i tekstmode 
;;(hvilket man i X kan opnå ved at skrive "emacs -nw").

(keyboard-translate ?\C-h ?\C-?)
(define-key global-map "\C-x?" 'help)

;Meta-g for goto linje nummer
(global-set-key "\M-g" 'goto-line)

;Vis linje og kolonne numre
(setq line-number-mode t)
(setq column-number-mode t)

;For C og HTML filer skal filerne vises med smart farvning
(setq c-mode-hook 'font-lock-mode)
(setq html-mode-hook 'font-lock-mode)

;Filer der ender på .c og .h er c-filer og .html er HTML-filer
(setq auto-mode-alist
  (append '(("\\.c$"  . c-mode)
            ("\\.h$"  . c-mode)
            ("\\.html$" . html-mode)
            ) auto-mode-alist))

Nu et lille sidespring. Historien går, at der i 80-erne var mange UNIX-folk, som var stærke vi-fanatikere, og der var måske lige så mange emacs-freaks. For at få afklaret en gang for alle, hvilken editor der var bedst, blev der afholdt en dyst i paint ball, hvor vi-holdet fik en kneben sejr. Dette bør naturligvis efterprøves en dag, da emacs har udviklet sig meget siden da.

Vi kan endvidere anbefale at købe en bog om Emacs, f.eks. SAMS Teach yourself Emacs in 24 hours af Jesper Pedersen, fra forlaget SAMS.

6.4.3. Andre teksteditorer

Til Linux findes også vim, som er en udvidelse af vi. (Linux har bare normalt et link mellem vi og vim - de er det samme). Lidt større editorer er joe, jed og jove. Disse tre er editorer, som ikke kræver voldsomt meget hukommelse og er tilpasset forskellige tastatur-koder kendt fra DOS, såsom Wordstar (Turbo Pascal) koderne. De findes ofte på UNIX systemer, men er ikke så interessante.

Der er nok mange, som har vænnet sig til at bruge simple teksteditorer til Windows som WordPad, og installeres nedit, har man næsten samme enkle interface, men nedit kan mere end WordPad, bl.a. highlighting af C kodesyntaks, så du nemt kan finde rundt i dine programmer.I KDE findes KWrite (skriv kwrite) som bl.a. har syntaks highlighing og er meget enkel at bruge. Til GNOME findes gedit og gnp. Sidstnævnte minder nok mest om Microsoft Windows notepad, men den er samtidig en simpel HTML-editor.