Emacs-opas

Tämä opas kuvaa Emacs-editorin peruskäytön: tekstin kirjoittaminen ja yksinkertainen editointi. Lisäksi käsitellään meilin ("sähköpostin") ja nyysien ("uutisryhmien") käyttöä Emacsilla. Opas on alun perin kirjoitettu Emacsin Unix-versiota varten, mutta suurin osa asioista on riippumatonta siitä käyttöjärjestelmästä, jossa Emacsia käytetään.

Lukuohje

Oppaan tarkoitus

Tämä opas on johdatus Gnu-Emacs-editorin käyttöön.

Opas on tarkoitettu lukijalle, joka tuntee käyttämänsä tietokonejärjestelmän käytön alkeet. Jos kyseessä on Unix, riittää osata yhteydenotto, komentojen antaminen, muutama peruskomento yms.; tarvittaessa voi tällaisia asioita opiskella Unix-oppaasta.

Oppaassa kuvataan Emacsin käytön keskeiset piirteet kuten tavallisimmat editointikäskyt. Lisäksi selostetaan, miten saa tietoja kehittyneemmistä piirteistä, ja kuvataan muutamia erityisiä toimintoja (mm. meili ja nyysit) Emacsin alaisuudessa.

Opas on alkujaan laadittu Unix-ympäristössä ja Unix-käyttöä varten, ja se vastaa suunnilleen Emacsin versiotasoa 19. Emacs on saatavissa myös Windows-ympäristöön versiona 20, jonka käyttöliittymä on osittain erilainen kuin tässä kuvattu, mutta perustoimintojen pitäisi muuten onnistua tässä oppaassa esitetyillä tavoilla.

Miten opasta kannattaa lukea

Oppaan selaamiseen ei tarvita mitään apuvälineitä, mutta ryhdyttäessä perusteellisesti opettelemaan kannattaa jokaista käskyä kokeilla erikseen eli opasta on paras lukea päätteen ääressä. Kun perusasiat ovat tulleet selviksi, käy läpi Emacsin oma tutorial-ohjelma.

Saatavan on myös tämä opas yhtenä tiedostona.

Aluksi ei kannata lukea koko opasta, sillä tietojen jäsentäminen vie oman aikansa. Sopivan aloituskokonaisuuden, oppaan perusosan, muodostavat luvut 1 - 6, jotka kannattaa käydä läpi järjestelmällisesti:

  1. Emacs-oppaan lukuohje
  2. Mitä Emacsilla voi tehdä?
  3. Perustietoja Emacsista, nimitykset
  4. Emacsin aloitus ja lopetus
  5. Peruskäskyt Emacsissa
  6. APUA !! Emacs antaa apua näin
Vilkaise lisäksi lukua 11, joka käsittelee yleisimpiä ongelmatilanteita kertoen, miten selvitä omin avuin ja milloin on aika hakea asiantuntijan apua.

Luvut 7 - 10 muodostavat jatko-osan. Näitä lukuja, joista kukin muodostaa oman suhteellisen itsenäisen kokonaisuutensa, voit lukea myöhemmin tarpeidesi ja kiinnostukseksi mukaan. Niissä kerrotaan

Tämän oppaan liitteenä on taulukko Tiivistelmä Emacsin keskeisistä käskyistä.

Jos kuitenkin olet aloittelija ja sinulla on kiire päästä tekemään Emacsilla aivan yksinkertaisia asioita, niin

Jos oppaan luettuasi tunnet tarvitsevasi lisää tietoja Emacsin monipuolisemmista käyttömahdollisuuksista, voit lukea niitä Emacsin infopuusta (tässä oppaassa luvussa 6.4 kuvattavalla tavalla).

Oppaassa käytettävät merkinnät

Esitettäessä käskyjä, virheilmoituksia tms. käytetään tässä oppaassa normaalista poikkeavaa kirjasinlajia, esimerkiksi emacs foo.

Emacsissa käskyt alkavat kontrolli- tai muulla erikoismerkillä. Niiden esittämiseen käytämme seuraavia merkintöjä:

C-x
tarkoittaa control-x:ää eli merkin x painamista Control-näppäimen ollessa alas painettuna. Control on Shift-näppäimen tapaan yksinään hyödytön ja vaatii aina toisen näppäimen painamista. Useimmissa näppäimistöissä Control-näppäin sijaitsee alhaalla vasemmalla. Siinä on yleensä teksti CONTROL tai CTRL.
M-x
(meta-x) tarkoittaa alkujaan erityisen Meta-näppäimen käyttämistä yhdessä x:n kanssa. Koska useimmista näppäimistöistä puuttuu sellainen näppäin, on vastaava toiminto yleensä toteutettu jommallakummalla seuraavista tavoista (ja usein molemmat olevat käytettävissä):

Muista näppäimistä käytetään usein englanninkielisiä lyhenteitä:

RET
Return eli rivinvaihto. Tämä näppäin on näppäimistön oikeassa reunassa, ja siinä voi lukea esim. RET, RETURN tai CR tai siinä voi olla nuoli, joka menee ensin alaspäin ja kääntyy sitten vasempaan. Usein tämä näppäin on muita isokokoisempi.
SPC
Space bar eli välilyönti. Tämä on pitkä vaakasuora näppäin, joka sijaitsee näppäimistön alarivissä keskellä.
DEL
Delete eli merkin tuhoaminen taaksepäin. Tämä näppäin on yleensä ylhäällä oikealla ja siinä on vasemmalle osoittava nuoli tai teksti DEL tai DELETE.
TAB
Tabulaattori. Tämä näppäin on yleensä vasemmalla ESC-näppäimen alla, ja siinä on oikealle osoittava nuoli tai teksti TAB. Saman vaikutuksen saa C-i:llä (control-i:llä).
Tekstiä sisältävät käskyt päättyvät rivinvaihtoon eli Return-näppäimen painallukseen. Tätä emme jäljempänä aina erikseen mainitse.

Oppaan historiaa

Tällä oppaalla on pitkähkö historia. Sen esimuotoja olivat Tera Palovuoren kirjoittama Aloittelijan Emacs-opas ja Joanna Ojan kesällä 1991 kirjoittama aineisto. Myöhemmin etenkin Sanna Suominen kirjoitti lisää materiaalia. Ylläpito siirtyi Jukka Korpelalle, joka pyrki kirjoittamaan aineiston yhtenäiseen asuun. Toukokuussa 2001 hän päivitti ja muokkasi sen osaksi sivustoaan Datatekniikka ja viestintä. Vrt. Unix-oppaan kohtaan Oppaan historia ja muuta selittelyä.

Mitä Emacsilla voi tehdä?

Emacsin perusominaisuudet

Emacs on monipuolinen editori eli ohjelma, jolla voi paitsi kirjoittaa ja korjailla tekstejä myös esim. etsiä tekstistä haluttua merkkijonoa taikka tehdä automaattisesti suhteellisen mutkikkaitakin muutoksia tekstiin.

Käsiteltävä teksti voi olla esimerkiksi

Jos tekstinkäsittelyssä tarvitaan esimerkiksi tekstin tasausta ja automaattista tavutusta taikka useita erilaisia kirjasimia, kannattaa Emacsin asemesta yleensä käyttää jotakin mikrotietokoneille saatavissa olevaa tekstinkäsittelyohjelmaa (esim. Microsoft Word).

Emacsin lisäominaisuuksia

Emacsissa on erilaisia toimintatiloja eli moodeja erityyppisten tekstien käsittelyä varten. Emacs osaa esimerkiksi avustaa Fortran- tai C-kielellä kirjoitettavan ohjelman siistissä sisentämisessä. Emacs ei kuitenkaan osaa avustaa esim. tavuttamisessa tai suomenkielisen tekstin oikeinkirjoituksen tarkistamisessa.

Emacsin käytön alkeet oppii nopeasti. Toisaalta käyttäjä voi tarpeidensa kasvaessa ja taitojensa lisääntyessä monin tavoin sovittaa Emacsia erilaisiin käyttötarkoituksiin.

Emacsilla voi jakaa kuvaruudun kahteen tai useampaan osaan, ikkunaan, joiden avulla voi käsitellä samanaikaisesti useampia tekstejä. Tekstistä toiseen kopioiminen ja tekstialueiden liikutteleminen paikasta toiseen on helppoa.

Emacs on muutakin kuin pelkkä editori. Emacsin käskyillä voi käynnistää Emacsin sisäisiä ohjelmia tai antaa komentotulkin suoritettaviksi komentoja. Esimerkkeinä tällaisista toiminnoista kuvataan tämän oppaan luvuissa 6 - 9 infopuun tietojen lukeminen, meilin ja nyysien käyttö, komentojen antaminen ja hakemiston editointi.

Perustietoja Emacsista, nimitykset

Miten Emacs käyttää kuvaruutua

Emacsin näyttö jakautuu ainakin aluksi

Aloitettaessa voi ikkunassa näkyä Emacsin versionumero ja tekijänoikeutta koskeva ilmoitus. Teksti katoaa painettaessa mitä tahansa näppäintä. Aluksi kuvaruutu siis voi näyttää seuraavantapaiselta (tyhjä tila esitetään tässä todellista pienempänä):


GNU Emacs 18.57.16 of Mon Jul 1 1991 on batman.hut.fi (berkeley-unix)
Copyright (C) 1990 Free Software Foundation, Inc. 
Type C-h for help; C-x u to undo changes. ('C-' means use CTRL key.)

GNU Emacs comes with ABSOLUTELY NO WARRANTY; type C-h C-w for full details
You may give out copies of Emacs; type C-h C-c to see the conditions.
Type C-h C-d for information on getting the latest version. 
Type C-h t for a tutorial on using Emacs.



----Emacs: *scratch*           (Lisp Interaction) ----All----------

Kuva 1. Emacsin aloitusruutu

Ikkuna (window)

Emacsin ruutu voi jakautua useampiin alueisiin eli ikkunoihin. Aloitettaessa näkyy yksi iso teksti-ikkuna ja tilarivi, joka kertoo, minkä puskurin sisältö on ikkunassa, eli mitä ikkunassa tapahtuu. Näytön alin rivi on käskyrivi, jota käytetään mm. käskyjen antamiseen.

Näyttö voidaan jakaa yhteen tai useampaa ikkunaan, joissa voi olla eri tekstejä tai saman tekstin eri kohtia. Jos sama teksti on esillä useammassa ikkunassa, niin ikkunoissa on saman puskurin (buffer) sisältö ja yhdessä ikkunassa tehty toiminto näkyy muissakin ikkunoissa.

Ikkunoita voi jakaa joko pysty- tai vaakasuoraan. Vaakasuorat ikkunat erottuvat toisistaan tilariveillä ja pystysuorat ikkunat katkoviivalla. Usean pienen ikkunan hahmottaminen on kuitenkin hankalaa, joten kerralla kannattaa tyytyä pariin kolmeen ikkunaan.

Se ikkuna, jossa kursori sijaitsee, on ns. valittu ikkuna. Käskyt kohdistuvat valittuun ikkunaan.

Seuraavassa on kuva kahteen osaan jaetusta ikkunasta. Ylemmässä ikkunassa näkyy alkuosa leikillisestä ohjetekstistä, alemmassa ikkunassa erään C-kielisen ohjelman alku.


                        How to program in 'C' - addendum

1) Rewrite standard functions and give them your own obscure names. 
2) Use obscure, proprietary, non-portable, compiled library packages so
   that you never have to move from the platform you love so well. 
3) Use very descriptive comments like 
        /* printf("Hello world\n"); */ 
 before each function call 
4) REMEMBER - Carriage returns are for weenies.
----Emacs: ohjeet                (Fundamental)----Top--------------------
/* Alkulukujen laskenta Eratostheneen seulalla. */ 
/* Yksinkertainen perusversio. */

#include <stdio.h>

#define N 1000

char jaollinen[N+1]; 
/* Laskennan lopussa jaollinen[i] on 1 tai 0 sen mukaan, onko i alkuluku vai
   ei. Huomaa, että taulukko nollautuu alussa, koska se on globaali. */
----Emacs: eratos.c                (C)----Top----------------------------

Kuva 2. Ikkuna jaettuna kahteen osaan.

Puskuri (buffer)

Työskentelyn aikana Emacs tallettaa tekstin puskureihin (buffer). Jokaisella muokattavalla tiedostolla tai käskyn tulostuksella on oma puskurinsa. Kerralla käsitellään kuitenkin vain yhtä kursorin osoittamaa ns. valittua puskuria.

Puskurin sisältöä voi olla näkyvissä kuvaruudulla tai puskuri voi olla kokonaan taustalla. Puskurista toiseen siirtyminen ei hävitä puskuria tai sen sisältöä.

Käskyrivi (minibuffer, echo area)

Näytön alinta riviä kutsutaan suomen kielellä käskyriviksi. Nimitys on huono, sillä käskyrivillä on useampi tehtävä täytettävänään. Sen kautta annetaan Emacsille käskyjä ja käskyille argumentteja ja sen kautta Emacs välittää käyttäjälle lyhyitä viestejä mm. mahdollisista virhetilanteista. Sellaisessa yhteydessä, jossa Emacs lukee käskyriviltä tietoja, käytetään usein nimitystä minipuskuri (minibuffer); tämä korostaa sitä seikkaa, että kyseessä on Emacsin tavallisiin puskureihin verrattava alue, jossa toimivat Emacsin normaalit editointikäskyt. Yhdestä ainoasta merkistä koostuvat käskyt eivät kaiutu, ja useamman merkin käskytkin kaiuttuvat vain muistin tueksi silloin, kun käyttäjä pitää käskyn antamisen keskellä tauon.

Jos Emacs ei tunnista käskyä tai ei voi muusta syystä suorittaa sitä, niin Emacs antaa äänimerkin tai väläyttää ruutua ja kenties tulostaa käskyriville virheilmoituksen.

Usein käskyt, joiden suorittaminen kestää pitkään, tulostavat käskyriville kolmeen pisteeseen ... päättyvän viestin, jotta käyttäjä tietää odottaa. Suorituksen päätyttyä Emacs tulostaa perään sanan done.

Jos jokin käsky tarvitsee argumentin, esim. tiedoston, puskurin tai funktion nimen, niin Emacs tulostaa tätä koskevan kehotteen käskyriville.

Seuraavassa esimerkissä käyttäjä on antanut käskyn C-x C-f (lue tiedosto ja sijoita se uuteen puskuriin). Tämän jälkeen Emacs odottaa haettavan tiedoston nimeä käskyrivillä siten, että se on tulostanut tiedostonnimen oletusarvoisen alkuosan. Jos käyttäjä haluaa antaa hakemistossa ~/mail olevan tiedoston nimen, hän voi kirjoittaa varsinaisen nimen näkyvissä olevan alkuosan perään. Kuvaruudun alareunassa tilanne näkyy seuraavasti:


--**-Emacs: foobar              (Text Fill) ---All---
Find file: ~/mail

Jos käsky on kesken kirjoittamisen tai kesken suorituksen, sen voi vielä perua painamalla C-g:tä. Emacs kilauttaa kelloa ja kirjoittaa käskyriville Quit.

Tilarivi (mode line) ja toimintatilat eli moodit

Tilarivi (mode line) kertoo, mitä ikkunassa tapahtuu. Se löytyy kunkin ikkunan alareunasta, yleensä käänteisellä tekstillä (valkoinen teksti mustalla taustalla). Se kertoo, mikä on puskurin nimi, onko puskuria muutettu ja mikä osa tekstistä on näkyvissä. Erityisesti se kertoo, missä toimintatilassa eli moodissa Emacs on.

Esimerkki tilarivistä:


--**-Emacs: testi.doc              (Text Fill) ---All----------

Yllä olevassa esimerkissä Yleisessä tapauksessa tilarivi on tämän näköinen:


--CH-Emacs: BUFFER               (MAJOR MINOR) --SIJ--

CH on **, jos puskurin sisältöä on muutettu, ja %%, jos puskuria voi vain lukea, muttei kirjoittaa.

BUFFER on puskurin nimi, yleensä käsiteltävän tiedoston nimi.

MAJOR tarkoittaa päätoimintatilaa, jolla määrätään puskurin ominaisuudet eli käsitelläänkö esim. tekstiä vai C-kielistä ohjelmakoodia. Vain yksi päätoimintatila voi olla päällä. Oletustoimintatila on Fundamental, jolla ei ole mitään erikoisominaisuuksia. Usein Emacs valitsee toimintatilan käsiteltävän tiedoston nimen loppuosan perusteella; jos nimi esim. loppuu merkkeihin .f, niin Emacs valitsee Fortran-toimintatilan. Kuvauksen päätoimintatilasta saa (silloin kun Emacs on kyseisessä tilassa) käskyllä C-h m (vrt. kohtaan 6.3)

MINOR on sivutoimintatila, joka on muista riippumaton ominaisuus tälle puskurille. Hyvä esimerkki on tekstimoodissa yleisesti käytetty automaattinen rivinvaihto (auto-fill-mode). Kerralla voi olla asetettuna useita sivutiloja. Usein sivutoimintatila muuttaa ns. näppäinsidoksia eli sitä, mitä mikin näppäin ja näppäinyhdistelmä vaikuttaa; näppäinsidokset saa selville käskyllä C-h b (vrt. kohtaan 6.3)

SIJ (sijainti tiedostossa) kertoo, mitä kohtaa tekstistä katsotaan; SIJ voi olla

Kursori ja merkki (cursor, point and mark)

Kursori on kuvaruudulla näkyvä merkki siitä, missä kohtaa tekstissä kulloinkin ollaan. Kursori on useimmissa päätteissä joko suorakaide tai alaviiva. Joskus kursori voi olla vilkkuva.

Editointitoimenpiteet, kuten uuden tekstin kirjoittaminen, kohdistuvat kohtaan, jossa kursori on. Kursorin osoittama kohta on sen merkin edessä, jonka päällä itse suorakaide tai alaviiva on.

Useita ikkunoita käsiteltäessä aktiivinen ikkuna on se, jossa kursori sijaitsee. Kerralla ei voi olla useampia kursoreita.

Merkki (mark) on näkymätön piste tekstissä, joka täytyy erikseen itse asettaa. Kerran asetettu merkki pysyy samassa paikassa, kunnes sitä siirretään. Tosin useat käskyt varsinaisen toimintansa ohessa muuttavat merkin paikkaa. Erityinen merkinasettamiskäsky on C-@. Useissa päätteissä saman asian ajaa C-SPC (pidetään control-näppäintä alhaalla ja painetaan välilyöntinäppäintä).

Asettamalla merkin ja viemällä kursorin toiseen kohtaan tekstiä voit käsitellä välissä olevaa tekstiä alueena (region). Voit esim. muokata, poistaa tai kopioida alueita.

Alueen käsittelyn kannalta on samanarvoista, kumpi on tekstissä aiemmin, kursori vai merkki.

Asettamalla merkin voi myös pitää kirjaa tärkeistä tekstin kohdista, joihin pitää palata. Emacs pystyy muistamaan 16 viimeisintä asetusta.

Emacsin aloitus ja lopetus

Aloitus, tiedoston avaus

Emacs käynnistetään komentotulkista komennolla emacs. Jos halutaan suoraan avata tiedosto editoitavaksi, voidaan antaa sen nimi komennon argumenttina, esimerkiksi emacs testi.doc.

Jos Emacs käynnistetään X-päätteeltä, kannattaa ohjata käskyn suoritus taustalle &-merkillä, esim. emacs koe.txt &. Emacs avaa tällöin oman ikkunansa.

Käynnistyessään Emacs suorittaa käyttäjän tekemät omat asetukset tämän kotihakemistosta .emacs-tiedostosta, jos sellainen on olemassa. Asetukset kirjoitetaan alustustiedostoon .emacs erityisellä merkintätavalla, Lisp-kielen murteella. Yksinkertainen käyttö ei kuitenkaan vaadi Lispin osaamista. Alustustiedoston perustaminen ei ole mitenkään välttämätöntä.

Emacs kannattaa käynnistää yhden pääteistunnon aikana vain kerran ja vain tarvittaessa, sillä silloin se kuormittaa konetta vähiten. Mikäli välillä pitää päästä käsiksi komentotulkkiin, voidaan Emacs pysäyttää taustalle käskyllä C-z. Takaisin Emacsiin päästään fg-komennolla.

Jos käynnistettäessä ei anneta argumenttina tiedoston nimeä, Emacs aluksi avaa *scratch*-puskurin, jonka sisältö on tyhjä. Jos halutaan luoda uusi tiedosto, voi tekstin kirjoittaa *scratch*-puskuriin ja sitten tallettaa sen käskyllä C-x C-w; tällöin Emacs kysyy käskyrivillä, millä tiedostonimellä teksti talletetaan.

Vanha teksti saadaan editoitavaksi käskyllä

C-x C-f

Senkin yhteydessä Emacs lukee tiedoston nimen käskyriviltä.

Voidaan myös käyttää käskyä

C-x 4 C-f

jolloin Emacs (tiedostonnimen luettuaan) avaa toisen ikkunan.

Jos käskyn C-x C-f tai C-x 4 C-f yhteydessä annetaan tiedostonnimi, jota vastaavaa tiedostoa ei löydy, Emacs ilmoittaa, että kyseessä on uusi tiedosto, ja luo sille tyhjän puskurin.

Lopetus, tiedoston talletus

Kuten edellä esitettiin, Emacsin käyttö kannattaa yleensä keskeyttää C-z:lla, ellei ole tarkoitus lopettaa koko pääteistuntoa.

Jos toisaalta olet keskeyttänyt Emacsin C-z:lla ja yrität lopettaa istunnon logout-komennolla, saat ilmoituksen There are suspended jobs eikä istunto katkea. Tällöin on paras palata Emacsiin fg-komennolla, lopettaa Emacs siististi seuraavassa kuvattavalla tavalla ja sitten antaa logout-komento.

Emacsin lopettaa käsky

C-x C-c

Jos jokin puskureista on tallettamatta, Emacs kysyy, talletetaanko ne:

Save file /u/lai/lk/viu/koe.txt? (y or n)

Tähän vastataan pelkällä y- tai n-kirjaimella, siis painamatta Returnia. Mikäli kaikkia muutoksia ei oteta talteen, niin Emacs vielä varmistaa, että halutaan todella lopettaa:

Modified buffers exist; exit anyway? (yes or no)

(Puskureita on muutettu; lopetetaanko siitä huolimatta?)

Tähän vastataan kirjoittamalla yes tai no ja painamalla Returnia.

Tiedoston talletus samalle nimelle tapahtuu käskyllä C-x C-s.

Joskus tämä ei toimi siksi, että jostakin syystä C-s aiheuttaa lukituksen (XOFF), josta enemmän kohdassa 11.1. Lukituksen voi vapauttaa C-q:lla. Tällöin voi esim. käyttää käskyä C-x s ja vastata jokaisen puskurin kohdalla, miten menetellä.

Tiedosto voidaan tallettaa toiselle nimelle aiemmin mainitulla käskyllä C-x C-w.

Peruutus, hätäkatkaisin

Jos Emacsissa tulee aloittaneeksi käskyn, jota ei haluakaan suorittaa, voi käskyn keskeyttää painamalla C-g:tä.

Jos vahingossa tulee muuttaneeksi puskurin sisältöä, voi käskyillä C-x u tai C-_ palata askel askeleelta takaisinpäin, kunnes väärä toimenpide on peruutettu.

Joskus harvoin, lähinnä käytettäessä hitaita linjoja, voi ehtiä painamaan peräkkäin kaksi C-g:tä sillä tavoin, että Emacs tulkitsee tilanteen hätäkeskeytykseksi (Emergency Escape). Tällöin Emacs kysyy kaksi kysymystä:

Auto-save? (y or n)
Abort (and dump core)? (y or n)

Vastaa näihin joko y tai n ja perään rivinvaihto. Myöntävä vastaus ensimmäiseen kysymykseen johtaa kaikkien puskureiden talletukseen. Myöntävä vastaus jälkimmäiseen keskeyttää Emacsin suorituksen, jolloin muistin senhetkinen tila tallettuu core-tiedostoon ja palataan komentotulkkiin. core-tiedostot ovat yleensä hyvin suuria, eikä niitä kannata turhan takia säilyttää.

Komentorivin valitsimet

Komentorivin valitsimet ovat ohjeita, joita annetaan Emacsille sitä käynnistettäessä. Jo komentotulkissa voidaan kertoa, että halutaan käsitellä jotain tiettyä tiedostoa, suorittaa heti alkuun joku tietty käsky tai ladata valmiiksi jokin Emacsin toiminto.

Esimerkkejä tärkeimmistä valitsimista:

emacs tentit
Emacs alkaa suoraan käsitellä tiedostoa tentit.
emacs -q
Emacs ei lue alustustiedostoa .emacs.
emacs +30 tent
Alkaa käsitellä tiedostoa tent siten, että kursori menee suoraan riville 30.
emacs -f vm
Käynnistää Emacsin ja meiliohjelman Vm.
emacs -f mail
Käynnistää Emacsin meilinlähetystilaan.
emacs -f gnus
Käynnistää Emacsin ja nyysiohjelman Gnus.

Peruskäskyt Emacsissa

Tekstin kirjoittaminen ja yksinkertainen editointi

Jos olet aiemmin käyttänyt jotakin muuta editoria, se on ehkä ollut sellainen, jossa on erikseen syöttötila (tekstin kirjoittamista varten) ja editointitila (tekstin korjailua tai muuttamista varten). Emacs on erilainen:

Jos siis haluat kirjoittaa uuden tekstin, voit Emacsin käynnistettyäsi ruveta suoraan kirjoittamaan. Näet ruudulla koko ajan, miltä teksti näyttää. Joskus, kun koneen kuormitus on suuri, voi kuitenkin kestää muutaman sekunnin, ennenkuin merkki tulee näkyviin, mutta sinun ei tarvitse odottaa sitä vaan voit kirjoittaa hetken aikaa "sokkona".

Perustilassaan Emacs ei jaa tekstiä riveiksi, vaan sinun on tehtävä se itse painamalla Return-näppäintä rivin lopussa. Jos haluat automaattisen riveiksi jakamisen, katso vinkki kohdasta 10.4. Tyhjiä rivejä saa tekstiin painamalla Returnia monta kertaa peräkkäin.

Kun kuvaruutu tulee täyteen, Emacs automaattisesti siirtää tekstiäsi ylöspäin, t.s. alkuosa menee pois näkyvistä ja ruudun alaosaan tulee tyhjää tilaa.

Jos kirjoitat virheellisen merkin, voit poistaa sen DEL-näppäimellä ja kirjoittaa uuden tilalle.

Kirjoitettuasi tekstin loppuun voit tallettaa sen ja poistua Emacsista, kuten kohdassa 4.2 selostettiin.

Vaikka edellä esitetty riittääkin kaikkein yksinkertaisimpaan käyttöön eli Emacsin käyttöön kirjoituskoneen tapaan, on syytä opetella ainakin muutama yksinkertainen tapa editoida tekstiä.

Emacsin editointi- eli muokkauskäskyt voivat koskea yksittäisiä merkkejä, sanoja, lauseita tai muunlaisia tekstin osia. Niitä käsitellään tämän luvun myöhemmissä osissa. Tässä kuvaamme lyhyesti vain yksinkertaista editointia ja liikkumista tekstissä.

Jos huomaat, että tekstiin on tullut virhe, voit siirtää kursorin kyseiseen kohtaan, tehdä korjauksen ja esim. mennä taas jatkamaan kirjoittamista tekstin loppuun käskyllä M-> (siis painamalla ensin ESC-näppäintä ja kirjoittamalla sitten suurempi kuin -merkin).

Päätteeltä kirjoitettavat tavalliset merkit (muut kuin kontrollimerkit tai muut Emacsin käskyt) menevät kursorin osoittamaan paikkaan, sen merkin eteen, jonka päällä kursori on. Jos siis tekstissäsi on sana kirjottaa, voit korjata sen oikeammaksi viemällä kursorin ensimmäisen t-kirjaimen kohdalle ja painamalla i-näppäintä. Kirjoittamasi merkit menevät vanhan tekstiin väliin, eivät päälle; Emacs siirtää automaattisesti rivin loppuosaa eteenpäin.

Merkkien poisto kuvataan seuraavassa kohdassa. Merkin korvaaminen toisella on helpointa tehdä niin, että poistetaan väärä merkki ja kirjoitetaan samaan kohtaan uusi.

Yksinkertaisimmat kursoria liikuttavat käskyt ilmenevät seuraavasta:


                        C-p, edellinen rivi.

C-b, merkki taaksepäin.                   C-f, merkki eteenpäin.

                        C-n, seuraava rivi.

Englannin kielen sanat previous, next, backward ja forward auttavat muistamaan käskyt.

Useimmiten voi C-p:n, C-n:n, C-b:n ja C-f:n asemesta käyttää myös erityisiä nuolinäppäimiä (nuoli ylös, nuoli alas, nuoli vasemmalle, nuoli oikealle), jotka ovat näppäimistössä erillisenä ryhmänä.

Rivin alkuun pääsee käskyllä C-a ja rivin loppuun C-e:llä.

Monet usein käytettävät käskyt koostuvat yhdestä tai kahdesta kontrollimerkistä. Koska Emacsissa kuitenkin on paljon enemmän toimintoja kuin näin voidaan esittää, suuri osa käskyistä on sellaisia, että ne koostuvat M-x:stä ja käskysanasta tai yhdysviivalla toisiinsa sidotuista sanoista, esim. M-x auto-fill-mode. Tällaiset käskyt lopetetaan painamalla Returnia. Ne ovat usein aika pitkiä, mutta niitä kirjoittaessa voi käyttää ns. tunnistusta TAB-näppäimellä: kirjoitetaan M-x ja käskyn sanallisen osan alku ja painetaan TABia, jolloin Emacs täydentää käskyn kokonaan tai osittain. Jos esimerkiksi kirjoitat M-x au ja painat TABia, tulee käskyriville

M-x auto-

merkiksi osittaisesta tunnistuksesta; kun lopussa on yhdysviiva, on tunnistus vasta osittainen. Jos jatkat kirjoittamalla f:n ja painamalla uudestaan TABia, tunnistus on täydellinen

M-x auto-fill-mode

jolloin voit painaa Returnia ja Emacs suorittaa halutun toimenpiteen.

Merkkien, sanojen ja rivien poisto

Merkin voi poistaa seuraavilla käskyillä: Backspace ei toimi Emacsissa, vaan se (samoin kuin C-h) herättää Emacsin avustustilan. Jos erehdyksessä painat Backspacea, pääset normaalitilaan painamalla C-g.

Sanoja voi poistaa Emacsissa joko eteenpäin tai taaksepäin:

C-k poistaa loppurivin. Jos sitä käytetään rivin alussa, jää tekstiin tyhjä rivi poistetun tilalle. Tyhjän rivin voi poistaa painamalla toisen kerran C-k.

Jos tuli vahingossa tuhottua tekstiä, jota ei pitänytkään poistaa, katso ohjeita seuraavasta luvusta.

Peruutus ja tekstin palautus

Jos vahingossa poistaa merkin, rivin lopun tai muuta tärkeätä, voi ottaa askeleita taaksepäin, peruuttaa. Käskyt C-x u tai C-_ peruuttavat askeleittain taaksepäin.

Jos on C-k -käskyllä poistanut rivin lopun tai useampia peräkkäisiä rivejä, ne voi palauttaa uuteen kursorin osoittamaan paikkaan käskyllä C-y (yank).

Mikäli C-k:ta on käytetty useasti ja eri paikoissa, on jokainen poisto otettu muistiin ns. poistorenkaaseen (kill-ring). Esille ne saadaan liikkumalla haluttuun paikkaan ja kirjoittamalla C-y, joka tulostaa viimeisimmän poiston. Heti perään painetaan M-y, joka tuo esille viimeistä edellisen poiston, seuraava M-y tuo yhtä aikaisemman ja niin edelleen, kunnes päästään haluttuun kohtaan.

Käskyn toisto

Jos haluaa kerralla siirtyä useamman merkin eteenpäin, voi kirjoittaa monta C-f:ää peräkanaa tai antaa numeroilla, kuinka monta kertaa käskyä toistetaan. Numeroita ennen painetaan ESC-näppäintä. Esimerkiksi M-4 C-f (painetaan ESC, 4 ja control-f) siirtää kursoria neljä merkkiä eteenpäin.

Mikä tahansa käsky voidaan tällä tavoin saada toistumaan, jopa tavallinen kirjainmerkki: kirjoittamalla M-10 s saadaan aikaan kymmenen s-kirjainta.

Liikkuminen tekstissä

Kohdassa 5.1 jo mainittiin, miten liikutaan yksi askel kerrallaan sivu- ja pystysuunnassa. Joskus askeltaminen on liian hidasta, ja silloin pitää harppoa sanoittain, lauseittain tai sivuittain.

Muistanet, että C-f ja C-b siirtävät kursoria merkin eteen- ja taaksepäin. Vastaavasti M-f ja M-b siirtävät kursoria eteen ja taakse sana kerrallaan. Sanojen erottimina toimivat tabulaattorit, välilyönnit, rivinvaihdot ja jotkin erikoismerkit, kuten valitettavasti meidän skandinaaviset "ääkkösemme".

Muistisääntönä voi pitää, että merkit ja sanat tottelevat samantapaisia käskyjä, ja rivejä ja lauseita voi käsitellä keskenään samantyyppisillä käskyillä. Eli jos C-a liikuttaa kursorin rivin alkuun, niin M-a siirtää sen aina edellisen lauseen alkuun. Vastaavasti C-e siirtää kursorin rivin loppuun ja M-e siirtää sen lauseen loppuun.

Kokonaisen ruudullisen eteenpäin siirtää käsky C-v. Vastaavasti taaksepäin yhden ruudullisen pääsee M-v:llä. Oikeastaan nämä eivät siirry eteenpäin ihan koko ruudullista. Esimerkiksi

C-v:llä siirryttäessä ruudun uuden sisällön kaksi ensimmäistä riviä ovat samat kuin vanhan sisällön kaksi viimeistä.

Kerralla koko tiedoston alkuun pääsee käskyllä M-< ja tiedoston loppuun käskyllä M->.

Jos haluaa siirtyä esim. kolmen sanan verran eteenpäin, voi joko toistaa käskyä M-f kolmesti tai antaa käskylle argumenttina numeron 3. Eli M-3 M-f (painetaan ESC, 3, ESC ja f).

Liikkuminen puskureissa

Puskurien käytöstä hyvä esimerkki saadaan käynnistämällä Emacs jo komentotulkista komennolla emacs koe.txt testi.doc eli luetaan kerralla kaksi tiedostoa puskureihin. Ellei annetun nimistä tiedostoa ole, luodaan tyhjä puskuri. Aina käynnistyessään Emacs tekee myös puskurin nimeltä *scratch*.

Puskuri testi.doc täyttää nyt koko koko näytön. Lista muista Emacsissa olevista puskureista saadaan näppäilemällä C-x C-b. Tämä jakaa näytön ja luo uuden ikkunan nimeltä *Buffer List*, josta alla esimerkki:


MR   Buffer     Size            Mode            File
--   ------     ----            ----            ----
.    testi.doc          0       Fundamental     /u/guests/viu/elisptesti.doc
     koe.txt            0       Fundamental     /u/guests/viu/elisp/koe.txt
     *scratch*          0       Lisp Interaction
*    *Buffer List*      299     Buffer Menu
--%%-Emacs: *Buffer List*                   (Buffer Menu)----All-----------

Puskurilistauksesta pääsee eroon kirjoittamalla C-x 1. Käsky kasvattaa valitun ikkunan koko näytön kokoiseksi.

Puskuria voi vaihtaa käskyllä C-x b, jonka jälkeen annetaan puskurin nimi. Puskurien nimet löytyvät puskurilistauksen toisesta sarakkeesta Buffer. Oletusarvoisesti Emacs tarjoaa edellisen puskurin nimeä, johon siirtymiseksi riittää Return-näppäimen painaminen.

Jos näytöllä on samaan aikaan useampia puskureita, voi puskurista toiseen liikkua komennolla C-x o.

Puskuri poistetaan kokonaan eli tapetaan käskyllä C-x k ja antamalla tarpeettoman puskurin nimi. Jos puskurissa on tallettamattomia muutoksia, Emacs vielä varmistaa, ettei puskuria tuhota erehdyksessä.

Ikkunoiden käsittely

Ikkuna on kurkistusaukko puskuriin. Alussa näytöllä on yksi iso ikkuna. Sitä, mikä puskuri ikkunassa näkyy, voidaan vaihtaa. Näyttö voidaan haluttaessa jakaa myös pienempiin ikkunoihin, joista voidaan katsoa eri puskureihin.

Kursorin osoittama ikkuna jaetaan kahtia käskyllä C-x 2. Syntyy kaksi keskenään samanlaista, tilarivin erottamaa ikkunaa, jotka ovat kooltaan puolet alkuperäisestä. Molemmat ikkunat avautuvat samaan puskuriin, eli toisessa ikkunassa tehdyt muutokset näkyvät myös toisessa. Voit toki editoida toisessa ikkunassa jotain toista tiedostoa. Haet vain uuden tiedoston editoitavaksi komennolla C-x C-f. Ikkunaa voi myös kasvattaa yhden rivin verran komennolla C-x ^. Se ikkuna kasvaa, jossa kursori käskyn antamisen aikana on.

Ikkuna jaetaan pystysuoraan käskyllä C-x 5. Näyttö jakautuu keskeltä kahtia katkoviivoituksella. Molemmat näin syntyneet ikkunat ovat samanlaisia, kummallakin on oma tilarivinsä ja kumpaakin voidaan käsitellä täysin itsenäisesti.

Pystysuorasti jaettu ikkuna ei ole kaikista selkeimmän näköinen. Riveistä on näkyvissä noin puolet, ja vain $-merkki rivin lopussa osoittaa, että rivi jatkuu ikkunan rajojen ulkopuolelle.

Jos näytöllä on monta ikkunaa, voi kursorin vaihtaa toiseen ikkunaan käskyllä C-x o. Jos ruudulla on vaikka 3 - 4 ikkunaa, komennolle voi antaa myös numeroargumentin ja hypätä usea ikkuna kerrallaan. Esim. M-2 C-x o siirtyy yhden ikkunan "yli".

Aktiivisen ikkunan saa suurennettua koko näytön kokoiseksi käskyllä C-x 1. Tämä peittää muut ikkunat "alleen".

Aktiivisen ikkunan taas hävittää käsky C-x 0. Se siirtää ikkunan sisällön pois näkyvistä ja kasvattaa muiden näytöllä olevien ikkunoiden kokoa. Ikkunassa ollut puskuri ei kuitenkaan häviä mihinkään, vaan jää "taustalle". Jos näytöllä on vain yksi ainoa ikkuna, jota yritetään poistaa, Emacs antaa virheilmoituksen.

Tiedostojen käsittely

Kertausta: Käsky C-x C-f tiedoston_nimi lukee tiedoston Emacsiin. C-x 4 f toinen_tiedosto hakee tiedoston avaten sille toisen ikkunan.

Jos käytät käskyä C-x C-f, Emacs avaa tiedoston käsittelyä varten uuden puskurin siirtäen vanhan puskurin taustalle (mutta hävittämättä sitä). Koska puskurien määrä helposti kasvaa liian isoksi, voi käyttää käskyä C-x C-v, joka lukee tiedoston nykyiseen puskuriin (tarjouduttuaan ensin tarvittaessa tallettamaan sen vanhan sisällön).

Toisen tiedoston sisällön saa lisättyä puskuriin kursorin osoittamaan paikkaan käskyllä C-x i. Emacs lukee tiedoston nimen käskyriviltä.

Käskyllä C-x C-s tiedosto talletetaan samalle nimelle kuin aiemmin. Tämä korvaa tiedoston aiemman sisällön, jonka Emacs siirtää varmuuskopioksi (back-up file); ne tunnistaa nimen lopussa olevasta tildemerkistä ("matomerkistä") ~. Jos sinulla esimerkiksi on tiedosto docu, jota olet editoinut Emacsilla, niin talletuksen yhteydessä Emacs siirtää tiedoston aiemman sisällön nimelle docu~.

Käsky C-x s tallettaa kaikki Emacsissa olevat muutetut puskurit. Toiselle nimelle tiedosto voidaan tallettaa käskyllä C-x C-w uusi_nimi.

Emacs hyväksyy tiedostonnimiin mitä tahansa merkkejä. Esim. skandinaavisten merkkien (ä, ö, å) käyttöä kannattaa kuitenkin välttää, koska komentotulkille ne ovat suuri ongelma.

Mikäli tiedosto on tällaiselle nimelle luotu, sen voi kätevästi muuttaa käskyllä M-x rename-file. Silloin Emacs kysyy ensin, mikä tiedosto uudelleennimetään, ja sitten uuden nimen.

Alueiden käsittely

Alueiden (region) merkitsemiseen ja käsittelyyn ovat käytettävissä mm. seuraavat käskyt (kertaa kohta 3.6 kursori ja merkki):
C-@
Aseta merkki kursorin kohdalle.
C-x C-x
Vaihda merkin ja kursorin paikat keskenään.
M-h
Merkitse kappale eli aseta merkki ja kursori sen kappaleen ympärille, jossa kursori on.
C-x h
Merkitse koko puskuri.
C-w
Tuhoa merkitty alue.
M-w
Ota merkitty alue poistorenkaaseen.
C-x TAB
Sisennä merkitty alue.
C-y
Lisää kursorin kohdalle viimeisen poistorenkaassa olleen tekstin (yank).
Edellä "kappale" tarkoittaa sellaista tekstin osaa, joka joko alkaa sisennyksellä tai on erotettu edeltävästä tekstistä tyhjällä rivillä. Kappale päättyy siihen, missä seuraava kappale alkaa.

Jos halutaan siirtää alue paikasta toiseen, niin alueen merkitsemisen jälkeen tuhotaan se C-w:llä, siirretään kursori uuteen paikkaan ja annetaan käsky C-y (vrt. kohtaan 5.3). Jos taas halutaan kopioida alue, menetellään muutoin samoin mutta C-w:n asemesta käytetään M-w:tä. Tällä menetelmällä voidaan myös siirtää tai kopioida tekstiä puskurista toiseen, koska ns. poistorenkaan sisältö säilyy puskuria vaihdettaessa.

Haku ja korvaus

Haku: C-s tai C-r

Usein on tarvetta hakea tekstistä jotakin merkkijonoa tehokkaammalla tavalla kuin silmäilemällä tekstiä ruudullinen kerrallaan. Emacsin hakukäskyistä kuvaamme tässä vain C-s:n ja C-r:n, jotka suorittavat ns. inkrementaalisen haun. Joskus C-s:ää ei voi käyttää, katso ohjeita kohdasta 11.1. Pitempi synonyymi käskylle C-s on M-x isearch-forward.

Kun kirjoitat C-s:n, käskyriville ilmestyy

I-search:

Kun sitten kirjoitat haettavan merkkijonon ensimmäisen merkin, se tulee näkyviin em. tekstin perään ja samalla Emacs hakee merkin ensimmäisen esiintymän (kursorin paikasta lähtien). Kun kirjoitat seuraavan merkin, sekin tulee näkyviin ja Emacs jatkaa tarvittaessa hakua. Käytännössä voit kirjoittaa haettavaa merkkijonoa omaan tahtiisi ja Emacs hakee sitä omaan tahtiinsa. Kun löytyy esiintymä, josta eteenpäin et halua jatkaa hakua ainakaan saman tien, paina ESC-näppäintä, jolla pääset pois hakutilasta. Myös esim. millä tahansa kursoria siirtävällä kontrollimerkillä kuten C-a:lla tullaan pois hakutilasta. Jos myöhemmin haluat hakea samaa merkkijonoa uudestaan, voit kirjoittaa C-s C-s.

Jos ennen haun lopettamista annetaan uusi C-s, Emacs etsii siihen mennessä annetun merkkijonon seuraavan esiintymän.

Hakiessaan merkkijonoa Emacs ei kiinnitä huomiota isojen ja pienten kirjainten eroon kirjainten a - z osalta.

C-r toimii muutoin aivan samoin kuin C-s mutta hakee taaksepäin.

Korvaus: M-%

Jos haluat korvata jonkin merkkijonon toisella, esim. jonkin käyttämäsi termin paremmalla, koko tekstissä tai sen osassa, voit käyttää ns. query replace -toimintoa. Anna aluksi käsky M-%. Käskyriville ilmestyy teksti

Query replace:

Kirjoita sitten korvattava merkkijono, esim. foo, ja paina Returnia, jolloin käskyriville tulee em. tekstin tilalle seuraavanlainen:

Query replace foo with:

jolloin voit kirjoittaa korvaavan merkkijonon, esim. bar, ja taas painaa Returnia. Nyt Emacs lähtee hakemaan korvattavan merkkijonon ensimmäistä esiintymää kursorin paikasta lähtien ja näyttää tekstiä niin, että kursori on kyseisen esiintymän perässä. Kun käskyriville tulee teksti

Query replacing foo with bar:

on Emacs erityisessä tilassa, jossa se odottaa päätöstäsi kyseisen esiintymän osalta. Voit ilmaista valintasi yleensä yhdellä merkillä:

SPC
tehdään tämä muutos
DEL
ei tehdä tätä muutosta
ESC
ei tehdä tätä muutosta ja lopetetaan korvaaminen kokonaan
.
tehdään tämä muutos mutta sitten lopetetaan korvaaminen kokonaan
!
tehdään tämä ja kaikki seuraavat muutokset automaattisesti

Valintasi jälkeen Emacs hakee seuraavan esiintymän jne. Viimeisen esiintymän käsittelyn jälkeen käskyriville tulostuu sana Done ja ollaan normaalissa editointitilassa.

Jos korvattava merkkijono annetaan pienin kirjaimin, niin Emacs löytää myös sellaiset esiintymät, joissa on vastaavia isoja kirjaimia, ja korvauksessa käyttää samanlaista kirjoitusasua kuin korvattavassa esiintymässä. Jos esimerkiksi korvattava merkkijono on foo ja korvaava bar, niin Emacs löytää myös esiintymät FOO ja Foo korvaten ne merkkijonoilla BAR ja Bar.

APUA !! Emacs antaa apua näin

Yleistä

Jos kohtaat hämäriä virheilmoituksia tai muuten sekavia tilanteita, katso ensin luvusta 11, löytyisikö siitä ensiapua.

Emacsin etuihin kuuluu sen sisäänrakennettu avustustila, mutta saadakseen siitä parhaan hyödyn irti käyttäjän pitää olla tottunut Emacsin ikkunoihin, puskureihin ja niiden käsittelyyn.

Tutorial

Lukemisen tässä vaiheessa kannattaa käydä läpi Emacsin oma englanninkielinen learn-by-doing tutorial-ohjelma. Se opettaa melko nopeasti käyttämään Emacsin perustoimintoja kädestä pitäen.

Tutorial käynnistyy käskyllä C-h t, ja se antaa itse varsin selkeät ohjeet jatkosta.

Avustustila (C-h)

Painamalla C-h:ta yhden kerran pääset avustustilaan. Emacs antaa käskyrivillä kehotteen:

   C-h (Type ? for further options) -

Painamalla kysymysmerkkiä tai toisen kerran C-h:ta saat listan valitsimista, ja vielä kerran C-h:ta painamalla saat perusteellisen selvityksen. Tärkeimmät valitsimet ovat:

Vaikka valitsimet on edellä esitetty isokirjaimisina, voidaan yhtä hyvin käyttää pieniä kirjaimia.

Infopuu

Emacsissa itsessään on laaja dokumentaatio Emacsista ns. infopuussa. Vaikka monilla muillakin Emacsin sisäisillä tavoilla voidaan saada tietoja Emacsin toiminnoista, infopuu on yhtenäinen, selittävästä tekstistä koostuva tietokokonaisuus. Esimerkiksi vaikka toimintatilan kuvauksen saa käskyllä C-h m, niin kyseinen kuvaus on lähinnä lista käytettävistä käskyistä ja sopii siis asioiden tarkistamiseen niille, jotka jo tietävät, mistä on kysysymys. Sen sijaan infopuusta löytyy käskyluettelon lisäksi sanallinen selostus itse toimintatilan luonteesta.

Infopuu on puumainen: siinä oleva dokumentti koostuu "alaspäin", yhä yksityiskohtaisempiin tietoihin menevistä solmuista (node). Eri solmuista voi olla viittauksia (reference) toisiinsa, jopa toisten dokumenttien solmuihin.

Kuten edellä esitettiin, infojärjestelmä käynnistetään käskyllä C-h i.

Mistä tahansa infojärjestelmässä pääsee takaisin ylimmän tason solmuun eli päähakemistoon käskyllä d, kun taas q (quit) lopettaa infon käytön, jolloin palataan siihen tilanteeseen Emacsissa, josta info käynnistettiin.

Infojärjestelmää käytettäessä näytön ylin rivi on hakemiston otsikko, jossa kerrotaan tiedosto (File), jossa dokumentti sijaitsee, solmun (Node) nimi (ylimmällä tasolla Top) ja muuta tärkeätä tietoa. Esimerkiksi kun infojärjestelmä on käynnistetty (C-h i), ylin rivi on seuraavanlainen:

File: dir Node: Top This is the top of the INFO tree

Aloitusruudussa on myös lyhyet käyttöohjeet. Niiden jälkeen on muuta tekstiä. Tähdellä * alkavat rivit ovat mahdollisia valintoja, joihin pääsee siirtymällä kursorilla valinnan kohdalle ja painamalla m-näppäintä ja Returnia tai painamalla m-näppäintä, kirjoittamalla valinnan nimi ja painamalla Returnia.

Valittavana olevat dokumentit ovat osaksi Emacsin omia dokumentteja, Gnu-projektin muiden ohjelmien käyttöohjeita tai paikallisia englannin- tai suomenkielisiä ohjeita. Ohjeet eivät välttämättä ole ajan tasalla.

Usein (mm. aloitustilanteessa) solmussa on tietoa enemmän, kuin yhdelle ruudulliselle mahtuu. Tekstin sisällä voi liikkua normaaliin tapaan (esim. C-v:llä ruudullisen eteenpäin). Lisäksi voi siirtyä noin ruudullisen verran eteenpäin välilyönnillä.

Infopuussa on mm. laajahko dokumentaatio Emacsista itsestään. Jos haluat lukea sitä, siirry (infojärjestelmän käynnistämisen jälkeen) esim. C-v:llä ja C-n:llä sille riville, jolla lukee

* Emacs: (emacs). The extensible self-documenting text editor.

ja paina m-kirjainta. Infon kysymys Menu item (default Emacs): kuitataan painamalla Returnia.

Tällöin tulee näkyviin infopuun Emacsia koskevan haaran ylimmän tason solmu. Siitä voi edelleen valita jonkin alihaaran jne. Tässä solmussa otsikkorivi on seuraava:

File: emacs, Node: Top, Next: Distrib, Up: (DIR)

Otsikosta käy ilmi, että tästä solmusta seuraava solmu on Distrib (joka käsittelee Emacsin jakelua). Siihen voi siirtyä pelkällä n-näppäimen painalluksella. Toisaalta u-näppäimellä voi siirtyä hakemistopuun ylempään haaraan eli tässä tapauksessa ylimpään solmuun (päähakemistoon). Tällaiset helpot siirtymiset ovat mahdollisia silloin, kun otsikkorivillä ovat kohdat Next ja Up. Korostettakoon, että jos infopuussa suunnistaessasi eksyt, pääset aina päähakemistoon d:llä.

Tavallisempaa kuin siirtyminen n:llä seuraavaan solmuun on valita (esim. C-v:tä ja C-n:ää käyttäen) jokin *:llä alkava rivi, painamalla m:ää jne. Näin päästään vastaavaan infopuun haaraan, josta voidaan suunnistaa edelleen yksityiskohtaisempiin tietoihin. Jos solmun tekstissä ei ole *:llä alkavaa riviä, se on alimman tason solmu.

Kun poistut infojärjestelmästä q:lla, Emacs ei hävitä Info-puskuria vaan piilottaa sen näkyvistä. Jos saman Emacs-istunnon aikana käynnistät infojärjestelmän uudestaan (C-h i), pääset jatkamaan juuri samasta kohdasta, mihin viimeksi jäit.

man emacs

Unixin komennolla man emacs saatava tieto ei kuvaa Emacsin käskyjä mutta kylläkin mm. optiot, joita voi antaa Emacsin käynnistyskomennossa; suuri osa niistä liittyy ns. X-ikkunointiin. Lisäksi se antaa tiedon siitä, mistä löytyy erilaisia Emacsiin liittyviä tiedostoja, mm. erilaisia dokumentteja ja Lisp-koodi, joka määrittelee suurimman osan editointikäskyistä.

Tietoja Emacsista WWW:ssä

Gnu-projektin "kodin" http://www.gnu.org/ kautta löytyy laaja Gnu-Emacsin dokumentaatio, mm. GNU Emacs Manual, joka on saatavissa useissa eri muodoissa, mm. kätevänä hypertekstiversiona.

Gnu-Emacsista, kuten hyvin monesta muustakin aihepiiristä, on tehty ns. fakki eli kokoelma vastauksia usein esitettyihin kysymyksiin (engl. FAQ, (answers to) Frequently Asked Questions). Se on olemassa useassa muodossa, joista virallisin (mutta valitettavasti vain tekstimuotoinen) lienee
http://www.cis.ohio-state.edu/hypertext/faq/usenet/GNU-Emacs-FAQ/top.html
ja eräs hiukan vanhempi mutta hypertekstimuotoinen on
http://www.eecs.nwu.edu/emacs/faq/

Tietoja erityisaiheista:

Viestintä

Johdanto viestintään Emacsilla

Tässä luvussa kuvataan Emacsin tarjoamia välineitä meilin ("sähköpostin") ja nyysien ("newsien", "uutisryhmien") käyttöön. Kutsumme niitä ohjelmiksi, millä tarkoitetaan tässä sitä, että ne ovat Emacsin alla käytettäviä toimintoja. Niitä ei siis käynnistetä Unixin komentotasolta vaan Emacsista.

Nämä välineet ovat vaihtoehtoja erilaisille itsenäisille meili- ja nyysiohjelmille. Unix-oppaassa kuvataan esim. itsenäisen meiliohjelman Pine käyttö.

Meiliohjelmat Rmail ja Mail

Mitä Rmail ja Mail ovat

Rmail on tarkoitettu meilin lukemiseen Emacsin alla, Mail taas on vain meilin lähettämistä varten. Rmaililla voi lukea meilejä, vastata niihin (reply), lähettää niitä edelleen (forward) sekä tallettaa viestejä. Meilin sisäinen talletusmuoto on erillinen Rmail-formaatti.

Rmailin käynnistäminen ja lopettaminen

Rmail käynnistetään käskyllä M-x rmail. Ikkunaan tulee ensimmäinen lukematon viesti ja käskyriville ilmoitus uusien viestien määrästä. Jos uutta meiliä ei ole tullut, Rmail antaa tästä ilmoituksen ja näyttää viimeisimmän meilin; tämän jälkeen käyttäjä voi selailla vanhoja meilejä.

Käynnistettäessä Rmail lukee meilit käyttäjän meililaatikosta ja tallettaa ne RMAIL-nimiseksi tiedostoksi käyttäjän kotihakemistoon erityisessä Rmail-formaatissa.

Uusien viestien lukeminen tapahtuu painamalla välilyöntiä.

Rmail lopetetaan painamalla q-kirjainta. Tällöin palataan siihen tilanteeseen Emacsissa, mistä Rmail käynnistettiin.

Mailin käynnistäminen

Mailin voi käynnistää käskyllä C-x m (tai M-x mail) taikka C-x 4 m, joista jälkimmäinen avaa samalla uuden ikkunan. Koko puskuri on varattu kirjeen kirjoittamiselle, ja siinä voi käyttää normaaleja Emacsin editointikäskyjä.

Aluksi Mail kirjoittaa näytön alkuun seuraavan:

To:
Subject: 
--text follows this line--
Kursori jää tekstin To: perään, ja käyttäjä voi suoraan kirjoittaa vastaanottajan meiliosoitteen. Sen jälkeen siirrytään seuraavan rivin loppuun (esim. C-n C-e) ja kirjoitetaan viestin otsikko. Seuraavaksi mennään koko tekstin loppuun (esim. M->) ja ryhdytään kirjoittamaan itse viestiä. Sen kirjoittamisen jälkeen tilanne näyttää seuraavantapaiselta:
To: Jukka.Korpela@malibutelecom.com
Subject: Testimeili
--text follows this line-- 
Tämä on testiviesti.

Meili lähetetään käskyllä C-c C-c, jonka jälkeen Emacs ilmoittaa lähettämisestä. Tällöin Mail-ohjelman käyttö päättyy eli palataan tilanteeseen, josta aloitettiin meilin lähettäminen.

Apua!

Sekä Rmailissa että Mailissa saa apua käskyllä C-h, joka käynnistää toimintatilan kuvauksen. Myös muut Emacsin sisäiset avunannot toimivat (ks. kohtaa 6.3). Infopuussa on varsin kattavat ohjeet molemmille ohjelmille.

Meilien lukeminen ja jatkokäsittely

Rmail näyttää käynnistyessään ensimmäisen lukemattoman viestin tai, ellei uutta meiliä ole tullut, viimeisen luetun viestin. Seuraava ruudullinen viestiä saadaan näkyviin painamalla välilyöntiä, ja edelliseen ruutuun voidaan palata painamalla Delete-näppäintä.
SPC
Näyttää seuraavan ruudullisen viestiä.
DEL
Näyttää edellisen ruudullisen viestiä.
n
Siirtyy seuraavaan tuhoamattomaan viestiin (next).
p
Siirtyy edelliseen tuhoamattomaan viestiin (previous).
M-n
Pakottaa siirtymään seuraavaan viestiin, vaikka se olisi tuhottu.
M-p
Pakottaa siirtymään edelliseen viestiin, vaikka se olisi tuhottu.
>
Siirtyy RMAIL-tiedoston viimeiseen viestiin.
j
Siirtyy RMAIL-tiedoston ensimmäiseen viestiin, ellei numeroargumentilla toisin määrätä. Esim. C-u 3 j siirtyy kolmanteen viestiin.

Kun uutta meiliä tulee vanhaa luettaessa

Jos uutta meiliä tulee Rmailia käytettäessä, sen voi siirtää systeemin meililaatikosta RMAIL-tiedostoon ja luettavaksi painamalla g:tä (get new mail).

Miten kannattaa lopettaa Rmail

Rmailin voi lopettaa kuten aiemmin esitettiin, painamalla q:ta, joka on näppäinlyhennys käskylle M-x rmail-quit. Tällöin RMAIL-puskuri jää olemaan ja voit palata siihen jatkamaan viestien selailua ilman uutta Rmailin käynnistystä vaihtamalla puskuria käskyllä C-x b RMAIL.

Puskurin voi myös tappaa (C-x k), jolloin Emacs varmistaa, haluatko tallettaa RMAIL-tiedoston. Tätä voi käyttää paniikkitilanteissa, jolloin ei ole aivan varma, onko tehnyt jotain, jota ei olisi kannattanut tehdä; silloin tietysti kerrotaan, että muutoksia ei haluta tallettaa.

Jos vahingossa tai tahallaan tappaa ja lopettaa Emacsinsa, se kysyy, talletetaanko muutokset. Tämä pätee myös RMAIL-tiedostoon.

Meilin kirjoittaminen ja lähetys

Mail-ohjelman voi käynnistää käskyllä C-x m tai toiseen ikkunaan käskyllä C-x 4 m tai Rmailin sisällä käskyllä m.

Puskurissa *mail* on valmiina kentät otsikkotiedoille To: ja Subject:. Omia kenttiään voi lisätä seuraavaan tapaan:

To:
viestin vastaanottaja, ainoa pakollinen kenttä
Subject:
viestin otsikko
Keywords:
avainsanoja, jotka kuvaavat viestin sisältöä
Fcc:
kopio viestistä tähän tiedostoon
Cc:
kopiot viestistä myös näille käyttäjille
Bcc:
kopiot viestistä niin, ettei se näy muille käyttäjille
Reply-to:
kenelle ohjataan viestiin tulevat vastaukset.

Rivin --text follows this line-- jälkeen kaikki teksti on itse kirjettä eli vastaanottajalle päätyvää viestiä.

Käskyllä C-c C-w lisätään viestin perään käyttäjän kotihakemistosta tiedosto .signature.

Kirjoitettuasi viestin lähettäminen tapahtuu painamalla C-c C-c, jolloin viesti lähetetään, *mail*-puskuri tuhotaan ja palataan puskuriin, josta maili päätettiin lähettää.

Meiliin vastaaminen

Meiliin vastaaminen (reply) onnistuu käskyllä r. Tällöin Rmail käynnistää Mailin toisessa ikkunassa ja asettaa tarpeelliset otsikkokentät valmiiksi. Otsikkotietoja voidaan muutella: voit lisätä tai poistaa vastaanottajia tai lisätä uusia otsikkotietoja.

Alkuperäisen viestin saat kopioitua vastaukseesi käskyllä C-c C-y. Voit myös vaihtaa takaisin RMAIL-tiedostoon ja valita näkyville jonkin toisen viestin ja kopioida senkin sisällön parhaillasi kirjoittamaasi viestiin käskyllä C-c C-y.

Viesti tulee taas tekstin --text follows this line-- jälkeen ja jälleen käskyllä C-c C-w lisätään .signature.

Jos välillä "unohdat" vastauksesi ja jatkat meiliesi selailua, pääset palaamaan aloittamaasi viestiin käskyllä c, continue.

Lähettäminen tapahtuu käskyllä C-c C-c, jonka jälkeen palataan takaisin Rmailiin, tai käskyllä C-c C-s, joka vain lähettää viestin mutta jättää *mail*-puskurin esille jatkotoimenpiteitä varten.

Kopio meilistä itselle

Joskus voi tulla tarvetta ottaa lähetettävästä viestistä kopio itselleen. Helpointa on lisätä itsensä vastaanottajien joukkoon, mutta myös automaattisia tapoja viestien tallettamiseen on. Bcc:n eli muille näkymättömän kopion saa automaattisesti itselleen lisäämällä .emacsiinsa rivin

(setq mail-self-blind t)

Meilin lähetys eteenpäin

Joskus tulee tarve välittää saamansa viesti edelleen ("forwardoida") jollekulle toiselle. Siihenkin on Rmailissa mahdollisuus käskyllä f.

Tällöin Emacs kopioi edelleen lähetettävän viestin kokonaisuudessaan puskuriin *mail* ja kysyy sille uuden vastaanottajan. Viestiin on mahdollista tehdä omia korostuksiaan ja poistaa tarpeettomia pätkiä.

Lähettäminen tapahtuu käskyllä C-c C-c.

Meilin tuhoaminen

Kun viesti on käynyt tarpeettomaksi, se kannattaa tuhota pois levytilaa viemästä. Rmailissa tuhoaminen tapahtuu kahdessa vaiheessa, mikä antaa mahdollisuuden muuttaa mieltään. Ensin merkitään viestit tuhottaviksi, ja Rmail käyttäytyy ikäänkuin ne olisivat poistetut. Oikeilla käskyillä ne ovat vielä löydettävissä. Toisessa vaiheessa viestit hävitetään lopullisesti.
d
Merkitsee viestin tuhottavaksi ja siirtyy seuraavaan tuhoamattomaan viestiin (delete).
C-d
Merkitsee viestin tuhottavaksi ja siirtyy edelliseen tuhoamattomaan viestiin.
u
Poistaa tuhoamismerkinnän ensimmäiseltä viestiltä taaksepäin mennessä (undelete).
e tai x
Tuhoaa viestit lopullisesti; Rmailin lopettaminen tekee tämän automaattisesti.

Meilien talletus

Emacs tallettaa kaikki meilit automaattisesti RMAIL-tiedostoon käyttäjän kotihakemistoon. Tallettaessaan Emacs käyttää erikoista Rmail-formaattia eli lisää tiedostoon ohjausmerkkejä, jotta Rmail osaisi näyttää viestin kerrallaan ja liittää viestiin oikeat attribuutit (onko vastattu, muokattu jne.).

Yksittäisten viestien tallettaminen onnistuu sekä RMAIL-formaatissa että tavallisessa, ns. Unix mail -formaatissa. Jos samalle nimelle talletetaan useampia viestejä, menee uudempi viesti tiedoston perään.

o
Tallettaa viestin Rmail-formaatissa kysyen, mille nimelle talletetaan.
i
Rmail vierailee o:lla talletetussa tiedostossa eli näyttää tiedoston sisällön (talletetun viestin).
C-o
Tallettaa viestin Unix mail-formaatissa, ilman ohjauskoodien lisäyksiä.

Tunnisteiden hyödyntäminen

Jokaiseen Rmailin viestiin liittyy tunnisteita (labels), joista ilmenee, onko viesti luettu, vastattu, talletettu, muokattu, tuhottu vai lähetetty edelleen. Omia tunnisteitaan voi myös lisätä, jotta viestin löytää nopeammin.

Tunnisteen lisäys tapahtuu käskyllä a. Rmailin tuntemat tunnisteet voi täydentää tabulaattorilla.

Tunnisteet näkyvät tilarivin oikeassa reunassa viestin numeron yhteydessä tai otsikoiden yhteenvedossa (kts. seuraava kappale). Käskyllä l voi nopeasti kaivaa esiin kaikki tuhottaviksi merkityt viestit, talletetut viestit tai jo vastatut viestit.

Tunniste poistetaan käskyllä k.

Meilien käsittely otsikkoriveittäin Rmailissa

Rmailia voi käyttää ilman, että koskaan näkee muuta kuin viestin kerrallaan, mutta jos meiliä tulee paljon, eikä kaikkea ehdi kerralla lukea, voi tehdä otsikoista yhteenvedon ja valita, mitä lukea ja mitä säästää myöhemmäksi.

Käskyllä h avataan toiseen ikkunaan RMAIL-summary-puskuri, jossa on viestin numero, lähettäjä, viestin tunnisteet ja aihe.

Esimerkki Rmail-SUMMARY-puskurista:

17  18-Jun    Paivi.Hyvarinen@hut.fi   tärkeää, Opaskokous
18  20-Jun    jkorpela@vipunen.hut.fi  opasopas
19  25-Jun    kiravuo@meridian.hut.fi  Netiketti
Näissä otsikoissa voi liikkua kuten viesteissäkin:
SPC
Näyttää seuraavan ruudullisen viestiä toisessa ikkunassa.
DEL
Näyttää edellisen ruudullisen viestiä.
n
Siirtyy seuraavaan tuhoamattomaan viestiin.
p
Siirtyy edelliseen tuhoamattomaan viestiin.
C-n
Siirtyy seuraavaan viestiin.
C-p
Siirtyy edelliseen viestiin.
>
Siirtyy RMAIL-tiedoston viimeiseen viestiin.
j
Siirtyy kursorin osoittamaan viestiin.
d
Merkitsee tuhottavaksi kursorin osoittaman viestin ja siirtyy seuraavaan.
u
Poistaa tuhoamismerkin kursorin osoittamasta tai viimeisimmästä tuhotusta viestistä.
q
Lopettaa Rmailin.
x
Poistuu yhteenvedosta ja tuhoaa ikkunan.

Meilialiakset Rmailissa

Rmailissa voi määritellä oman meilialiaksen monimutkaisille osoitteille tai tietylle ryhmälle, jolle lähetetään usein meiliä. Aliakset säilytetään .mailrc-tiedostossa käyttäjän kotihakemistossa.

Aliasmäärittely on seuraavaa muotoa:

alias nimi lista

missä nimi on se nimi, joka aliakselle halutaan antaa, ja lista on lista osoitteista yhdellä rivillä välilyönnillä erotettuna.

Esimerkki alias-määrittelystä:

  alias itse viu@uta.fi viu@vehka.cs.uta.fi viu@vipunen \
  viu@niksula viu@pepperone
Huomaa, että \ tarkoittaa rivin jatkuvan vielä rivinvaihdonkin yli. Jos auto-fill-mode on päällä, jolloin Emacs katkaisee rivit automaattisesti, täytyy joko auto-fill-mode ottaa pois päältä tai tuhota rivinvaihto käsin.

Meiliohjelma Vm

Yleistä Vm:stä

Vm (view mail) on vaihtoehtoinen meiliohjelma Emacsiin. Toisin kuin vakiona tuleva Rmail, se käyttää viestien tallettamiseen Unixin normaalia meililaatikkoformaattia. Vm:stä löytyvät samat perustoiminnot kuin Rmailista, mutta käskyt saattavat olla eri näppäimen takana.

Vm:n käynnistäminen ja lopettaminen

Vm käynnistetään käskyllä M-x vm. Systeemin meililaatikossa olevat meilit luetaan kansioon INBOX ja esitetään käyttäjälle. Tässä yhteydessä kansio voidaan ymmärtää tiedostoksi, jossa useita viestejä säilytetään otsikkoineen.

Puskurissa näytetään ensimmäisen lukemattoman viestin otsikot ja käskyrivillä kerrotaan, kuinka monta lukematonta ja uutta viestiä kansiosta löytyy.

Viestin rungon saa esille välilyöntiä painamalla, ja viestin loputtua siirtyminen seuraavaan viestiin tapahtuu painamalla välilyöntiä tai näppäintä n.

Lopettaminen tapahtuu näppäimellä q, jolloin viestit siirretään kotihakemistoosi tiedostoon INBOX, tai x, jolloin ei muutoksia talleteta.

Apua!

Apua saa näppäimellä ?. Toisella painalluksella se herättää käskyn C-h m, toimintatilan kuvauksen. Muodostuvan *help*-ikkunan saa häivytettyä käskyllä C-x 1 tai siirtymällä *help*-ikkunaan käskyllä C-x o ja tappamalla puskurin käskyllä C-x k. Myös muut Emacsin sisäiset avunannot toimivat; käskyllä C-h ? saa listan vaihtoehdoista.

Myös Emacsin infopuussa on hyvät ja selkeät ohjeet Vm:n käytöstä.

Meilien lukeminen ja käsitteleminen

Kun ohjelma käynnistetään, näkyviin tulee ensimmäinen viesti, jota ei ole luettu. Näpppäimellä h saa näkyviin INBOX-Summaryn, joka listaa kaikista viesteistä lähettäjän, viestin otsikon ja viestin numeron. Voit siirtyä INBOX-Summary-puskuriin komennolla C-x o. Jos viestejä on paljon, voit suurentaa INBOX-Summary-ikkunan koko ruudun kokoiseksi käskyllä C-x 1.
SPC
Näyttää sen viestin, jonka kohdalla kursori on. Vierittää myös viestiä ruudullisen eteenpäin ja viestin loputtua siirtyy seuraavaan viestiin.
DEL, b
Vierittää viestiä ruudullisen taaksepäin.
n
Siirtyy seuraavaan viestiin.
p
Siirtyy edelliseen viestiin.
N
Kuten n, mutta näyttää myös jo luetut tai tuhottavaksi merkityt viestit.
P
Kuten p, mutta näyttää myös jo luetut tai tuhottavaksi merkityt viestit.
M-n
Siirtyy seuraavaan lukemattomaan viestiin.
M-p
Siirtyy edelliseen lukemattomaan viestiin.
RET
Kysyy viestin numeron ja siirtyy siihen.
TAB
Palaa viimeksi näytettyyn viestiin.
Jos uutta meiliä saapuu vanhoja käsiteltäessä, sen voi hakea systeemin meililaatikosta käsiteltäväksi näppäimellä g.

Meiliin vastaaminen ja viestien lähetys

Lähetettyyn viestiin voi vastata Vm:ssä joko vain lähettäjälle tai kaikille viestin vastaanottaneille, alkuperäistä viestiä lainaten tai ei. Myös kokonaan uuden viestin lähettäminen tai vanhan viestin jälleenlähetys ovat mahdollisia.
r
Vastaa vain viestin lähettäjälle (reply).
R
Vastaa vain viestin lähettäjälle lainaten viestiä.
f
Vastaa kaikille viestin saaneille.
F
Vastaa kaikille viestin saaneille lainaten viestiä.
z
Lähettää viestin edelleen annetuille tunnuksille (forward).
m
Aloittaa uuden viestin kirjoittamisen (mail).
Käskyt avaavat *mail*-puskurin ja asettavat tarvittavat kentät valmiiksi. Omia kenttiään voi lisätä ja alkuperäisiä muutella, kunhan varsinainen viestin teksti tulee rivin --text follows this line-- jälkeen. Katso lisäkenttien vaihtoehtoja kohdasta 7.2.8.

Valmis viesti lähetetään käskyllä C-c C-c. Jos haluaa lisätä kotihakemistostaan tiedoston .signature viestin loppuun, niin käsky on C-c C-w.

Kopio meilistä itselle

Jos on tarpeen saada jostain viestistä kopio itselleen, voi laittaa itsensä vastaanottajalistalle, To:-kenttään pilkulla erotettuna, Cc:-kenttään tai Bcc:-kenttään. Voit katsoa kentistä lisää kohdasta 7.2.8.

Suositeltavampaa on erikseen harkita, onko viesti niin tarpeellinen, että siitä pitää säilyttää kopiota itsellään. Mutta myös kaikkien viestien kopioiminen on mahdollista. Automaattinen kaikkien viestien talteen ottaminen tapahtuu lisäämällä .emacsiin joko rivit

;; Tallettaa lähtevän meilin kotihakemistoon
;; tiedostoon Mail.Out
(setq vm-archive-file-name (expand-file-name "~/Mail.Out"))
tai rivit
;; Lähettäjän nimi lisätään Bcc:-kenttään automaattisesti, eli
;; jokainen lähtevä meili lähetetään itselle.
(setq mail-self-blind t)

Meilien tuhoaminen ja tallettaminen

Meilin käsittelyn nopeuttamiseksi kannattaa pitää INBOX-tiedosto lyhyenä ja tuhota pois tarpeettomat viestit ja tallettaa tarpeelliset viestit muihin kansioihin. Tässä yhteydessä kansio tarkoittaa talletuksessa olevia viestejä otsikoineen ja tiedosto ilman otsikkoja.
d
Merkitsee viestin tuhottavaksi (delete).
u
Poista tuhoamismerkinnän viestistä (undelete).
k
Merkitsee tuhottavaksi viestit, joilla on sama aihe (kill).
#
Tuhoaa merkityt viestit.
q
Tallettaa kansion ja lopettaa (quit).
s
Tallettaa viestin kansioon tai lisää sen jo olemassa olevan kansion perään (save).
w
Tallettaa viestin tiedostoon ilman otsikkotietoja tai lisää sen jo olemassa olevan tiedoston perään (write).
S
Tallettaa koko käsiteltävän kansion.
Jos talletukseen käytetään muita kansioita kuin INBOX, niihin voidaan kurkistaa käskyllä v (visit). Vm kysyy, mitä kansiota käytetään, ja näyttää kansion normaalisti. Lopetettaessa tämän kansion selailu q:lla tai x:llä palataan taas INBOX-kansioon.

Meilialiakset Vm:ssä

Vm:ssä voi määritellä oman meilialiaksen monimutkaisille osoitteille tai tietylle ryhmälle, jolle lähetetään usein meiliä. Aliakset säilytetään .mailrc-tiedostossa käyttäjän kotihakemistossa.

Aliasmäärittely on seuraavaa muotoa:

alias nimi lista

missä nimi on se nimi, joka aliakselle halutaan antaa, ja lista on lista osoitteista yhdellä rivillä välilyönnillä erotettuna.

Esimerkki alias-määrittelystä:

  alias itse viu@uta.fi viu@vehka.cs.uta.fi viu@vipunen \
  viu@niksula viu@pepperone
Huomaa, että \ tarkoittaa rivin jatkuvan vielä rivinvaihdonkin yli. Jos auto-fill-mode on päällä, jolloin Emacs katkaisee rivit automaattisesti, täytyy joko auto-fill-mode ottaa pois päältä tai tuhota rivinvaihto käsin.

Yhteenveto otsikkotiedoittain

Suuren meilimäärän käsittelyä helpottaa otsikkotiedoista luotava yhteenveto. Tällöin voi valita kiireellisimmän näköiset viestit ja jättää loput luettavaksi myöhemmin.

Käsky h (headers) järjestää meiliotsikot toiseen ikkunaan näyttäen lähettäjän, päiväyksen ja viestin aiheen:

   1       Jukka Korpela     Jun 18    8/362   "emacs"
   2       Joanna Kaarina Oj Aug 19    2/23    "testi1"
   3  U    Mail Delivery Sub Aug 23   14/349   "Returned mail"
   4       Joanna Kaarina Oj Aug 23    2/5     "Näyte"
-> 5  N    Joanna Kaarina Oj Sep  5    2/7     "myöskin"
Nuoli osoittaa, mikä viesteistä on seuraavana luettavissa. Lukeminen tapahtuu painamalla välilyöntiä. n siirtyy seuraavaan viestiin ja p edelliseen. M-n siirtyy suoraan seuraavaan lukemattomaan viestiin ja M-p edelliseen lukemattomaan viestiin.

Viestejä voi ryhmitellä käskyllä G (group). Mahdollisia järjestyksiä ovat mm. päivämäärä, viestin aihe, lähettäjä tai oletusarvoinen saapumisjärjestys. Listan vaihtoehdoista saa vastaamalla kehotteeseen välilyönnillä.

Nyysiohjelma Gnus

Yleistä Gnusista

Gnus on Emacsin sisällä käytettävä nyysiohjelma eli väline viestien lukemiseen nyyseistä ("newseistä", "uutisryhmistä") ja viestien kirjoittamiseen sinne. Monien mielestä Gnus on kätevämpi kuin esimerkiksi erillinen, suoraan Unixin komentotasolta käynnistettävä nyysiohjelma rn.

Nyyseistä yleisesti kertoo laajahko Nyysiopas.

Toiminta Gnusissa tapahtuu kolmessa puskurissa: nyysiryhmille, artikkelien aiheille ja itse artikkeleille on omat puskurinsa. Tämä helpottaa valikoimista: voi itse päättää, mitä ryhmää haluaa lukea, ja voi jo otsikoista katsella, onko keskustelu kovinkin kiivasta.

Seuraavassa kuvataan Gnusin perustoimintoja. Lisätietoja löytyy mm. Gnus FAQ:sta ja gnus.orgista, jossa on laaja Gnus Manual.

Käynnistys ja lopetus

Gnus käynnistyy käskyllä M-x gnus tai, jos ei halua käyttää oletusarvoista nyysipalvelinta, käskyllä C-u M-x gnus. Jos et tiedä, mikä on käyttämässäsi koneessa oletusarvoinen nyysipalvelin, lienee parasta ensimmäisellä kerralla antaa käsky C-u M-x gnus. Silloin käskyriville tulostuu esim. teksti

NNTP server: nntp

jolloin tässä tapauksessa oletusarvoinen nyysipalvelin on nntp. Jos haluat käyttää sitä, paina vain Returnia ja voit jatkossa käynnistää Gnusin käskyllä M-x gnus. Jos et, kirjoita (Emacsia normaalisti käyttäen) sanan nntp tilalle haluamasi palvelimen nimi, esimerkiksi otax.

Käynnistettäessä Gnus lataa itsensä, ottaa yhteyden nyysipalvelimeen ja tarkistaa, onko uusia artikkeleita. Näiden alkuvalmistelujen jälkeen Gnus näyttää nyysiryhmät ja näissä olevien lukemattomien artikkelien lukumäärät.

Ellei ryhmiä ja niissä olevia artikkeleita ole paljon, voi koko istunnon selvittää painelemalla välilyöntiä. Välilyönti valitsee ryhmän tai luettavan artikkelin tai näyttää seuraavan sivun tai sillä voi siirtyä sekä seuraavaan artikkeliin että ryhmään edellisen tultua luetuksi.

Lopettaminen tapahtuu painamalla q-näppäintä *Newsgroups*-puskurissa. Mahdollisen makkarasormisuuden varalta Gnus vielä tarkistaa, että todella haluat lopettaa.

Apua!

Kaikissa Gnusin puskureissa toimivat seuraavat avunpyyntökäskyt:
?
Antaa käskyriville yhteenvedon tärkeimmistä näppäimistä.
C-h m
Antaa toimintatilan kuvauksen.
C-c TAB
Käynnistää Emacsin infon ja näyttää Gnusin käyttöohjeen, eli siis sama kuin C-h i ja m gnus.

Yksinkertainen käyttö

Kaikkein yksinkertaisinta (mutta ei suinkaan tehokkainta) on käyttää pelkkää välilyöntiä käskynä Gnusin sisällä. Tämä perustuu siihen, että välilyönnillä on Gnusissa monta vaikutusta tilanteen mukaan: Ryhmätilassa voi siirtyä seuraavaan ryhmään n:llä ja edelliseen ryhmään p:llä (myös emacsmaiset C-n ja C-p). Ryhmän kaikki artikkelit voidaan merkitä luetuiksi (catch up) käskyllä c, jolloin Gnus vielä kysyy varmistuksen, haluatko todella tehdä niin.

Kun ryhmä on valittu, Gnus näyttää siitä ruudun yläosassa otsikkolistauksen varaten alaosan artikkelille.

Takaisin ryhmälistaukseen palataan q:lla ja siitä taas q:lla pois (takaisin siihen tilaan, josta Gnus käynnistettiin).

Gnusia käytettäessä on tärkeää ymmärtää, millä tasolla milloinkin ollaan, muun muassa siksi, että ryhmätasolla saattaa samalla kirjainkomennolla olla eri merkitys kuin artikkelitasolla. Seuraavassa kuvataan toiminnan eri tasoja Gnusin yhteydessä sekä perustoimintoja kullakin tasolla:

Unixin komentotulkki.
Tältä tasolta voidaan käynnistää Emacs komennolla emacs tai, jos Emacs oli aiemmin käynnistetty ja sitten keskeytetty C-z:lla, komennolla fg.
Emacsin perustaso.
Tältä tasolta voidaan käynnistää Gnus käskyllä C-u M-x gnus tai M-x gnus. Tältä tasolta päästään Unixin komentotulkin tasolle esim. tilapäisesti käskyllä C-z.
Gnusin ryhmätaso.
Tällä tasolla näkyy lista ryhmien nimistä ja ryhmiin liittyviä muita tietoja. Toimintoja: Ryhmätasosta kerrotaan enemmän seuraavassa kohdassa 7.4.5 Ryhmien hallinta.
Otsikko- ja artikkelitaso
Tälle tasolle tultaessa näkyy lista artikkelien otsikkotiedoista. Artikkeli voidaan avata luettavaksi, jolloin ruutu jakautuu kahtia niin, että yläosassa on em. lista ja alaosassa itse artikkeli tai osa siitä. Tämä taso siis oikeastaan sisältää kaksi loogisesti eri tasoa, otsikkotason ja artikkelitason. Toimintoja: Otsikko- ja artikkelitasosta kerrotaan enemmän kohdassa Yhden ryhmän artikkelien hallinta.

Ryhmien hallinta (ryhmätason komennot)

Allaolevassa esimerkissä on osa otaxin tarjoamista ryhmistä. Numero ilmaisee, montako lukematonta artikkelia on ryhmässä. Tähti * ilmoittaa, että ryhmässä tkk.tekola.vipunen on tärkeäksi merkitty artikkeli. Kirjain U on merkki siitä, ettei ryhmää enää tilata jatkossa (unsubscribed).
       9: aloita_tasta
 *     1: tkk.tekola.vipunen
       5: atk.tietoliikenne
      26: atk.unix
 U    53: control
Ryhmän voi valita välilyönnillä tai yhtäsuuruusmerkillä =, joka ei suoraan näytä ensimmäistä artikkelia.

Seuraavaan ryhmään pääsee näppäimellä n, N tai C-n. N ja C-n siirtyvät myös jo luettuihin ryhmiin tai poistettuihin ryhmiin. Vastaavasti p, P ja C-p siirtyvät edelliseen ryhmään.

Määrättyyn ryhmään pääsee antamalla käskyn j ja kirjoittamalla ryhmän nimen. Emacs osaa täydentää nimeä tabulaattorilla ja välilyönnillä.

Koska kaikkien ryhmien lukeminen veisi paljon aikaa, kannattaa käyttää ahkerasti näppäintä u. Se poistaa ryhmän luettavien ryhmien joukosta; ryhmän saa takaisin siirtymällä ryhmän kohdalle ja painamalla näppäintä u uudestaan.

Iso L listaa kaikki ryhmät riippumatta siitä, onko ryhmä merkitty u:lla tai onko ryhmässä artikkeleja, joita ei ole luettu (L = Long list). Pieni l taas näyttää vain tilatut ryhmät, joissa on artikkeleja, joita ei ole vielä luettu (l = short list).

Kesken newsien lukemisen voi antaa käskyn g, joka hakee ne artikkelit, jotka mahdollisesti ovat saapuneet Gnusin käynnistämisen jälkeen. Pieni g pitää kirjoittaa ryhmien nimilistauksessa. Artikkelia luettaessa g siirtyy artikkelin alkuun. Uusien artikkelien hakeminen on yleensä aiheellista vain, jos Gnusin käyttökerta kestää pitkään tai on erityistä syytä olettaa, että on tullut uusia kiinnostavia juttuja.

Gnus pitää kirjaa luetuista artikkelista ja ryhmien järjestyksestä tiedostossa .newsrc. Ryhmiä voi järjestellä komentotulkissa sort-komennolla, lue man sort tai Emacsin normaalitilassa käskyllä M-x sort-lines. Mutta myös Gnusissa voi vaihtaa ryhmien järjestystä: voit poimia ryhmiä poistokehään C-k:lla ja palauttaa ne C-y:llä jonnekin muualle.

Yhden ryhmän artikkelien hallinta (artikkelitason komennot)

Esimerkki yhden ryhmän (otaxin ryhmä otax.ekakerta) otsikkolistauksesta:
D 18: [ 53:kiravuo@otax.] News-etiketti osa 1; Johdanto
D 19: [166:kiravuo@otax.] News-etiketti osa 2; Kirjoittamisen perusteet
K 20: [173:kiravuo@otax.] News-etiketti osa 3; Keskustelu
  21: [130:kiravuo@otax.] News-etiketti osa 4; Ryhmät
  22: [109:kiravuo@otax.] News-etiketti osa 5; Hyötykäyttöä
- 23: [ 63:kiravuo@otax.] News-etiketti osa 6; Sanasto
Yllä on otaxin ryhmän aloita_tasta otsikoita. Rivin alussa D osoittaa, että artikkeli on luettu tai merkitty luetuksi. K on ns. tapettu otsikko; tällä aiheella varustetut otsikot merkitään käsitellyiksi, eikä niitä tarvitse enää lukea. Viiva - tarkoittaa, että artikkeli on hyödylliseksi havaittu ja merkitty myöhempää käyttöä varten.

Artikkelien otsikoita käsiteltäessä ja artikkeleita luettaessa voi käyttää mm. seuraavia käskyjä:

SPC
Vierittää artikkelia ruudullisen eteenpäin.
DEL
Vierittää artikkelia ruudullisen taaksepäin.
RET
Vierittää artikkelia yhden rivin eteenpäin.
n
Siirtyy seuraavaan lukemattomaan artikkeliin.
p
Siirtyy edelliseen lukemattomaan artikkeliin.
N
Siirtyy seuraavaan artikkeliin, oli se luettu tai ei.
P
Siirtyy edelliseen artikkeliin, oli se luettu tai ei.
C-n
Siirtää kursorin seuraavan otsikon kohdalle.
C-p
Siirtää kursorin edellisen otsikon kohdalle.
M-n
Siirtää kursorin seuraavan lukemattoman artikkelin otsikon kohdalle.
M-p
Siirtää kursorin edellisen lukemattoman artikkelin otsikon kohdalle.
j
Hyppää annetulla numerolla määrättyyn artikkeliin (jump).
J
Kuten j, mutta valitsee artikkelin luettavaksi.
l
Palaa viimeksi luettuun artikkeliin.
^
Näyttää sen artikkelin, johon tämä artikkeli on vastaus (follow-up). Näyttää siis parent-artikkelin ("isäartikkelin").
k
Merkitsee tällä samalla otsikolla olevat artikkelit tapetuiksi ja valitsee seuraavan otsikon luettavaksi (kill).
C-k
Merkitsee tällä otsikolla olevat artikkelit tapetuiksi.
t
Vaihtaa (toggle) artikkelin otsakkeiden (headers) näyttämisen tilan. Normaalisti Gnus näyttää vain eräät hyödyllisimmät otsakkeet, ja käskyllä t pääsee tilaan, jossa kaikki otsakkeet näkyvät, ja sitten tästä tilasta normaalitilaan.

Artikkelin kirjoittaminen

Artikkelin aloittaminen tapahtuu näppäimellä a. Ensin Gnus kysyy ryhmän, johon viesti menee, sitten viestin aiheen. Jakelualue eli distribution on yleensä valmiiksi oikea, eli sen voi kuitata Returnilla. Tämän jälkeen Gnus luo puskurin *post-news*, johon voi viestinsä kirjoittaa. Lähettäminen tapahtuu käskyllä C-c C-c.

Jos lähettää viestinsä useisiin ryhmiin, on ristiinpostitus (cross-post) suositeltavaa, eli lisätään muut ryhmät pilkulla erotettuna Newsgroups:-kenttään. Useimmat nyysiohjelmat osaavat tällöin merkitä viestin luetuksi myös muista ryhmistä, eikä lukijoiden tarvitse katsella samaa artikkelia useasti.

Esimerkki ristiinpostauksesta:

Newsgrops: tky.alayhd.sik,tky.alayhd.yleinen

Ennen varsinaisen artikkelin kirjoittamisen aloittamista hyväksytään vain yksi ryhmä kysyttäessä, mihin ryhmään kirjoitetaan. Muut ristiinpostausryhmät voi kirjoittaa *post-news*-puskurin luomisen jälkeen Newsgroups:-riville eli siinä vaiheessa, kun on kirjoittamassa itse artikkelia.

Mikäli kotihakemistossa on tiedosto .signature sopivilla oikeuksilla varustettuna, Gnus lisää sen artikkelin loppuun automaattisesti. Sopivat oikeudet ovat lukuoikeus tiedostoon ja suoritusoikeus kotihakemistoon.

Artikkelin lähettämisen testausta varten on omat *.test-ryhmänsä, esim. otax.test ja sfnet.test. Muissa ryhmissä kokeiluartikkelit saattavat aiheuttaa kielteisiä reaktioita, ns. "liekitystä" (flame-wars).

Ennenkuin kirjoittaa mitään Otaniemeä pidemmälle pitää harkita kahdesti; kaikista mahdollisista kiistöistä huolimatta kirjoittaja edustaa itsensä lisäksi opinahjoaan ja omaa kansallisuuttaan.

Jos myöhemmin haluaa peruuttaa (cancel) artikkelinsa, se tapahtuu käskyllä C artikkelin otsikkotietojen kohdalla (siis iso C-kirjain, ei control-näppäin). Peruuttaminen on järkevää esimerkiksi silloin, kun artikkelin sisältö (esim. myynti-ilmoitus) ei enää ole voimassa.

Artikkeliin vastaaminen

Artikkeliin voi vastata lähettämällä meiliä kirjoittajalle (reply) tai sitten kommentoida julkisesti (follow-up) ryhmässä. Tilanteesta riippuu, kumpi on oikea tapa.

Meilivastauksen kirjoittamiseksi annetaan käsky r tai R. Niiden erona on, että jälkimmäinen lainaa vastaukseen alkuperäisen viestin sisennettynä. Tässä vaiheessa voi muutella haluamiaan otsikkokenttiä, esim. lisätä ylimääräisiä vastaanottajia. Viesti lähetetään käskyllä C-c C-c.

Samalla tavalla f tai F lähettää kommenttiartikkelin. Jälkimmäistä käytettäessä on yleensä syytä editoida lainausta pois niin, että vain olennaisin tulee esille.

Otsikkotietoja voi muutella, vaihtaa vaikka ryhmää tai lisätä muita ryhmiä. Mikäli keskustelu on ollut kovin rönsyilevää, kannattaa välillä korjata aihe (Subject:-rivillä) ajankohtaisemmaksi.

Artikkelien jatkokäsittelyä

Artikkelin voi tallettaa itselleen käskyllä C-o. Käsky käyttää tallettamiseen normaalia Unixin mailformaattia.

Yksittäisen artikkelin voi tuhota eli merkitä luetuksi näppäimellä d. Kokonaisista kommenttiketjuista pääsee eroon k:lla ja C-k:lla.

Joskus artikkeleissa on tärkeää tietoa, jota ei kannata tallettaa tiedostoksi, mutta jonka haluaisi muistaa hetken kauemmin. Tällöin voi artikkelin merkitä näppäimellä u. Merkki pysyy niin kauan, kunnes artikkeli vanhenee tai tuhotaan käsin d-kirjaimella.

Oli artikkelilla mikä tahansa merkki (luettu, tapettu yms.), sen voi poistaa käskyllä M-u.

Kill-tiedosto

Jos joku kirjoittaja on raivostuttava tampio, hänet voi laittaa kill-tiedostoon. Se tarkoittaa ettei hänen juttujansa tarvitse lukea, vaan Gnus automaattisesti merkitsee ne "tapetuiksi". Myös joitakin avainsanoja sisältävät aiheet voidaan lisätä kill-tiedostoon.

Kill-tiedostoa voi editoida Gnusin sisällä. Käsky M-k tekee paikallisen kill-tiedoston, joka koskee vain tiettyä ryhmää, kun taas M-K tekee globaalin, kaikki ryhmät kattavan kill-tiedoston. Tiedoston editointi lopetetaan käskyllä C-c C-c.

Esimerkki kill-tiedostosta:

(gnus-kill "Subject" "testi")
; Merkitsee testiartikkelit tapetuiksi
(gnus-kill "From" "Joanna.Oja@hut.fi")
; Merkitsee Joanna Ojan artikkelit tapetuiksi

Komentotulkkiin käsiksi

Yleistä

Vaikka kuinka Emacs on hyvä, ja se ainoa oikea, pitää välillä käyttää komentotulkkiakin. Yksinkertaisinta on jättää Emacs taustalle C-z:lla ja tehtävän päätyttyä taas palata takaisin komennolla fg.

Hyvin suurta osaa komentotulkin komennoista voi käyttää Emacsista. Muun muassa tiedostojen käsittely on Dired-moodin kanssa helpommin hahmotettavissa, ja käsiteltäväkseen voi valita mielivaltaisen tiedostoryhmän.

Suoraan komentotulkkiin pääsee poistumatta Emacsista usealla eri tavalla. Näitä keinoja käsitellään seuraavassa.

Yksittäiset Unix-komennot

Käskyllä M-! voi suorittaa minkä tahansa Unix-komennon; komennon tuottama tulostus menee puskuriin *Shell Command Output*. Jos komennolle annetaan nollasta eroava numeroargumentti, sen tulostus ohjataan aktiiviseen puskuriin kursorin näyttämään paikkaan, esim. M-2 M-! ls.

Käsky M-| suorittaa Unix-komennon ja antaa sille syötteeksi alueen (region) sisältämän tekstin ja tulostaa puskuriin *Shell Command Output*.

Komentotulkki puskuriin

M-x shell käynnistää tavallisen keskustelevan komentotulkin, joka pyörii yhdessä Emacsin puskurissa. Se on kätevä, jos pitää tallettaa komentojen tulostuksia tai antaa samantyyppisiä komentoja useita. Emacsin totuttujen käskyjen lisäksi ovat käytettävissä shell-moodin omat käskyt, jotka matkivat komentotulkkia.

Emacs ei odota, että shelliä koko ajan käytettäisiin, vaan voit vaihdella puskurista toiseen ilman, että se vaikuttaa shellin toimintaan. Jos haluat useampia aliprosesseja, vaihda puskurin nimeä käskyllä M-x rename-buffer ja käynnistä uusi shell. Voit .cshrc:ssä määritellä muuttujalla ESHELL, mitä komentotulkkia Emacs käyttää, esim. setenv ESHELL /bin/sh.

Komento shellille lopetetaan Return-näppäimellä. Ohjelman suoritus jätetään taustalle käskyllä C-c C-z ja keskeytetään käskyllä C-c C-|. Käskylistaus löytyy toimintatilan kuvauksesta C-h m.

Hakemiston editointi (Dired)

Diredin käynnistäminen

Diredillä voi käsitellä hakemistoa tai muunlaista joukkoa tiedostoja.

Dired käynnistyy käskyllä C-x d (tai toiseen ikkunaan käskyllä C-x 4 d). Emacs kysyy (käskyrivillä), mitä hakemistoa halutaan käsitellä. Tässä yhteydessä voidaan ilmoittaa myös tiedostonnimi, joka sisältää *-merkin, jolloin merkitys on samanlainen kuin Unixin komentotasolla. Siis esimerkiksi R* tarkoittaa kaikkia niitä tiedostoja, joiden nimi alkaa isolla R-kirjaimella.

Toisin kuin yleensä Emacsissa, Dired-tilassa näppäiltävät tavalliset merkit eivät kirjoitu puskuriin, eikä Dired-puskuriin ylipäänsä voi kirjoittaa. Sen sijaan useimmat kirjaimet toimivat käskyinä Diredille. Numerot taas toimivat argumentteina käskyille, ohjaten mm. käskyn toistoa. Käskyt kohdistuvat yleensä kursorin osoittamaan tiedostoon.

Eroon Diredistä pääsee poistamalla puskurin komennolla C-x k.

Käskyt

Käskylistan saa Dired-moodissa käskyllä C-h m. Tarkemman käyttöohjeen saa infopuun solmusta Tree Dired. Seuraavassa on tärkeimmät käskyt:
d
Merkitsee tiedoston hävitettäväksi (delete).
~
Merkitsee Emacsin varmuuskopiot (tiedostot, joiden nimi loppuu matomerkkiin eli tildeen ~) hävitettäviksi.
u
Poistaa hävitysmerkinnän (unflag).
x
Suorittaa merkityt hävitykset.
f
Lukee tiedoston (tai hakemistolistauksen, jos kyseessä on hakemisto) uuteen puskuriin.
o
Kuten f, mutta avaa uuden ikkunan jättäen Dired-ikkunan näkyviin.
c
Kopioi tiedoston (copy).
r
Muuttaa tiedoston nimeä (rename).
C
Pakkaa tiedoston (compress).
U
Purkaa pakatun tiedoston (uncompress).

Huomautuksia

Hyödyllisiä lisäominaisuuksia

Oma .emacs

Kuten kohdassa 4.1 kuvattiin, Emacs käynnistyessään suorittaa automaattisesti tiedostossa .emacs olevat käskyt, jos senniminen tiedosto on käyttäjän kotihakemistossa. Tällainen tiedosto voidaan haluttaessa perustaa aivan normaalisti Emacsilla.

On melko tavallista, että käyttäjät kopioivat .emacs-tiedostoja toisilta, kokeneemmilta käyttäjiltä. Tässä on omat vaaransa. Voi tulla yllätyksiä, jos ei ymmärrä, mitä .emacsissa olevat asiat aiheuttavat. Emacsin versionmuutokset voivat saada aikaan ongelmia, jos .emacsissa on jotakin kovin erikoista. Silloin .emacsin alkuperäinen tekijä ehkä osaa tehdä tarvittavat korjaukset, mutta tiedoston kopioinut ehkä ei, eikä hän välttämättä enää tavoita tekijää. Yleensä siis kannattaa tehdä .emacs itse tai ainakin ymmärtää sen sisältö.

Yksinkertaisimmassa tapauksessa .emacs-tiedostoon kirjoitettavat käskyt ovat muotoa
(setq muuttuja arvo)
missä muuttuja on jokin Emacsin tuntemista muuttujista.

Kirjoittaessasi .emacs-alustustiedostoon ole tarkka sulkujen määrästä, hipsujen (heittomerkkien) suunnasta ja siitä, että kommenttimerkki ; (puolipiste) ei missään vaiheessa vaihdu vaikkapa kaksoispisteeksi.

Seuraavassa on esimerkki .emacsin sisällöstä, jossa on muutamia yksinkertaisia asetuksia. Puolipisteellä alkavat rivit ovat kommentteja, jotka vain kertovat (toivottavasti), mitä sitä seuraavilla riveillä olevat asiat tekevät.

; Tämä asettaa aloituspuskurin moodin tekstimoodiksi.
; Oletusarvoisesti käytettäisiin Lisp-Interaction-modea.
(setq initial-major-mode 'text-mode)
; Jokainen uusi puskuri on tekstimoodissa.
(setq default-major-mode 'text-mode)
; Tekstimoodi katkaisee pitkät rivit rivinvaihdolla.
(setq text-mode-hook '(lambda () (auto-fill-mode 1)))
; Asettaa oikean marginaalin 65. merkin kohdalle
(setq default-fill-column 65)

Kontrollimerkit ja erikoismerkit tekstissä

Joskus on tarve kirjoittaa itse tekstiin kontrollimerkkejä. Esimerkiksi C-l kirjoitettuna tiedostoon aiheuttaa sivunvaihdon tulostettaessa tiedostoa. Pelkän C-l:n kirjoittaminen aiheuttaa Emacsissa kuitenkin "näytön putsauksen" eli Emacs piirtää ruudun uudelleen. Siksi on kirjoitettava ensin C-q ja sitten vasta C-l, jotta tiedostoon kirjoittuisi C-l sivun vaihdon merkiksi.

Kaikki muutkin control- ja meta-merkit (ESC-merkit) voidaan kirjoittaa tiedostoon saamalla tavalla kirjoittamalla C-q vain eteen. Täten C-q toimii eräänlaisena lainaamisen (quote) merkkinä.

Mikä hyvänsä ISO-Latin-1-merkistön merkki voidaan kirjoittaa tiedostoon siten, että näppäillään C-q ja merkin oktaalikoodi kolmimerkkisenä. Esimerkiksi kun tiedämme, että plus-miinusmerkin ± oktaalikoodi ISO-Latin-1:ssä on 261, voimme kirjoittaa ±:n tiedostoon näppäilemällä C-q 261. Monien merkkien, esimerkiksi aksentilla varustettujen kirjainten kuten à kirjoittamiseen on kuitenkin kätevämpää käyttää iso-accents-mode-toimintatilaa.

Esimerkiksi jos tiedosto on siirretty PC:stä Unix-koneeseen, saattavat kotoiset ääkkösemme näkyä muodossa \204, \224 jne. Kyseessä ovat itse asiassa merkit, joiden oktaalikoodit ovat 204, 224 jne. ja jotka eivät ISO-Latin-1:n mukaan esitä mitään kirjoittuvaa merkkiä. Nämä merkit on helppo muuttaa kirjaimiksi käskyllä M-x replace-string, joka etsii kursorista eteenpäin kaikki annetunlaiset merkkijonot vaihtaen ne halutuksi. M-x replace-string ei kysy erikseen joka muutoksen kohdalla menettelytapaa kuten kohdassa 5.10.2 kuvattu M-x query-replace. Muuten käskyt toimivat samalla periaatteella. Kun olet antanut käskyn M-x replace-string, Emacs kysyy komentorivillä, mikä merkkijono korvataan. Jos haluat korvata esimerkiksi muodossa \204 näkyvän merkin ä-kirjaimella, kirjoita C-q 204 ja paina Returnia. Tämän jälkeen Emacs kysyy, millä korvataan, ja tähän vastataan antamalla ä-kirjain ja painamalla Returnia. Tämän jälkeen voi siirtyä tiedoston alkuun ja aloittaa korvaamaan muodossa \224 näkyvää merkkiä ö-kirjaimella ihan samalla tavalla. (Vastaavasti voidaan tällaisessa tapauksessa \216 korvata Ä:llä, \231 Ö:llä, \206 å:lla ja \217 Å:lla.)

Tekstimoodi

Tekstimoodi on päätoimintatila pelkän tekstin käsittelyyn. Jokainen näppäin toimii kuten tavallisessa kirjoituskoneessa, ja lisäksi ovat käytettävissä Emacsin liikkumiskäskyt, avustuskäskyt ja funktiot.

Tekstimoodin voi valita käskyllä M-x text-mode.

Erityisen mainittavia piirteitä on vain muutama. Tabulaattori sisentää aina tekstiä. Lauseen saa asetettua kauniisti sivun keskelle käskyllä M-S, kun taas M-s keskittää yhden rivin.

Rivien automaattinen katkaisu

Käsky

M-x auto-fill-mode

muuttaa Emacsin tilan sellaiseksi, että se automaattisesti katkaisee kirjoittamasi rivit. Voit siis kirjoittaa painamatta lainkaan Returnia (paitsi halutessasi aloittaa uuden kappaleen).

Merkiksi em. tilasta ilmestyy tilariville sivutoimintatilan kohdalle teksti Fill.

Takaisin normaalitilaan pääsee antamalla sama käsky uudestaan.

Em. tilassa Emacs ei käsittele tekstiin jo kirjoitettuja rivejä, vaikka ne olisivat ylipitkiä. Sellaiset tilanteet voit itse käsitellä kappale kerrallaan viemällä kursorin jonnekin kappaleen alueelle ja antamalla käskyn M-q.

Huomaa kuitenkin, että Emacs ei lainkaan tavuta sanoja, joten pitkiä sanoja sisältävästä tekstistä voi tulla ikävän näköistä. Voit tietysti itse erikseen korjata pahimmat kohdat.

Jos haluat jatkuvasti käyttää em. tilaa, voit (sen sijaan että aina Emacsin käynnistettyäsi antaisit käskyn M-x auto-fill-mode) lisätä alustustiedostoon .emacs seuraavat rivit (missä voit korvata luvun 65 haluamallasi rivinpituudella):

;; Jokainen uusi puskuri on tekstimoodissa.
(setq default-major-mode 'text-mode)
;; Tekstimoodi katkaisee pitkän rivin rivinvaihdolla.
(setq text-mode-hook
      '(lambda () (auto-fill-mode 1)))
;; Asettaa oikean marginaalin 65. merkin kohdalle
(setq default-fill-column 65)

Päällekirjoitusmoodi

Joskus halutaan korjailla tekstiä siten, että kirjoitettavat merkit menevät vanhojen merkkien päälle, t.s. merkki korvaa kursorin kohdalla olevan merkin eikä mene sen eteen. Emacs saadaan tällaiseen toimintatilaan käskyllä

M-x overwrite-mode

Tällöin tilariville ilmestyy sivutoimintatilan merkiksi teksti Ovwrt.

Takaisin normaalitilaan päästään samalla käskyllä.

Emacsin muuttujat

Listan kaikista kullakin hetkellä Emacsissa asetetuista muuttujista saa käskyllä M-x list-options. Se näyttää sekä muuttujan arvon että muuttujasta annetun dokumentaation - saman, jonka saa käskyllä C-h v muuttujan-nimi.

Muuttujien arvoja on helppo muutella *List Options*-puskurissa. Näppäimet n ja p liikkuvat määrittelystä toiseen, näppäimellä x vaihdetaan muuttujan arvoa edestakaisin nil:in ja t:n välillä ja näppäin s antaa käskyrivin kautta muuttujalle uuden arvon.

Jos vain haluat asettaa arvon jollekin muuttujalle, se käy myös tähän tapaan: anna käsky M-x set-variable ja sitten vastaa kysymyksiin variable ja value kirjoittamalla kyseisen muuttujan nimi ja sille annettava arvo.

Tällaiset muuttujien arvojen asetukset eivät säily Emacsin käyttökerrasta toiseen. Pysyväksi muuttujan arvon asetuksen saa kirjoittamalla sen asianmukaisessa muodossa .emacs-tiedostoon.

Kellonaika tilariville

M-x display-time asettaa tilarivin keskelle kellonajan. Jos haluat mukaan myös päiväyksen, on kätevintä hoitaa asia lisäämällä alustustiedostoon .emacs seuraavat rivit:
(setq display-time-day-and-date t)
(display-time)

Emacsin näppäimien uudelleenmäärittely

Näppäinsidoksia voidaan vaihtaa joko tietyssä päätoimintatilassa tai koko Emacsin laajuisesti, niin että näppäin on uudelleensidottu jokaisessa puskurissa. Ensimmäinen vaihtoehto on M-x local-set-key ja jälkimmäinen M-x global-set-key. Ensin se kysyy näppäimen, joka halutaan sitoa, ja sitten sen funktion nimen, joka halutaan suoritettavaksi. Lisää tietoa aiheesta löytyy infopuusta komennolla C-h i, haaran Emacs alahaarasta Rebinding.

Ikkunan "vierityksen" asettaminen

Normaalisti Emacs tiedostossa liikuttaessa tai tekstiä lisättäessä tarvittaessa "vierittää" tekstiä ikkunassa eteen- tai taaksepäin noin puoli ikkunallista. Jos et pidä "hypähtävästä" vaikutelmasta, voit korjata tilanteen asettamalla muuttujan scroll-step arvoksi halutun rivimäärän, esim. yksi. Jos siis haluat vaikkapa pysyväksi sellaisen asetuksen, että "vierittää" tekstiä vain yhden rivin kerrallaan, kirjoita .emacs-tiedostoon rivi
(setq scroll-step 1)

Ongelmaksi tällöin jää, että ylipitkät rivit tiedostossa voivat sotkea: siirrytäänkin useampia rivejä. Emacsin infossa sanotaan:

Scrolling happens automatically if point has moved out of the visible portion of the text when it is time to display. Usually the scrolling is done so as to put point vertically centered within the window. However, if the variable `scroll-step' has a nonzero value, an attempt is made to scroll the buffer by that many lines; if that is enough to bring point back into visibility, that is what is done.

Mistä etsiä ohjelmia?

Emacs-ohjelmiston mukana tulevat ohjelmat löytyvät hakemistosta /p/emacs/lisp. Paikalliset ylläpidon asentamat ohjelmat ovat hakemistossa /p/emacs/lisp/hut.

Tavallisia ongelmatilanteita

Jumittuminen

Tavallisimpia ongelmatilanteita on "jumittuminen": Emacs ei tunnu mitenkään reagoivan siihen, että yrität näpytellä päätteeltä jotain. Mahdollisia selityksiä on useita:

Kuvaruudun sotkeutuminen

Joskus kuvaruudun sisältö saattaa syystä tai toisesta sotkeutua ilman, että Emacs olisi tullut hulluksi. Tällöin voit kokeilla C-l:ää, joka piirtää ruudun uudelleen eli "siistii" ruudun.

Joka rivin loppuun ilmestynyt ^M

Melko usein käy niin, että toisesta tietokonejärjestelmästä siirretyn tiedoston jokaisen rivin lopussa näyttää olevan ^M kun sitä katsotaan Emacsilla. Tämä ei ole vakavaa. Ilmiö johtuu siitä, että eri järjestelmissä on erilaisia rivinvaihtojen esitysmuotoja, eivätkä ^M:t (jotka itse asiassa vain kertovat, että datassa on ylimääräisiä carriage return -koodeja) vaikuta yleensä mitään datan käsittelyssä.

Jos kuitenkin ^M:t vaivaavat sinua, voit poistaa ne esimerkiksi Emacsilla. K.s ohjetta tästä dokumentissa Rivinvaihdot ja kappaleet datan käsittelyssä, joka myös valottaa ongelman taustaa.

Tavallisia virheilmoituksia

Tässä luvussa on joitakin Emacsin tavallisia virheilmoituksia ja niiden lyhyet selitykset.
(New file)
Jos tarkoitus ei ollut tehdä uutta tiedostoa vaan editoida vanhaa, niin tiedoston nimi on virheellinen tai tiedosto on tuhoutunut.
Auto save file is newer; consider M-x recover-file
Emacsin tekemä ns. auto save -tiedosto (ks. kohtaa 11.1) on uudempi kuin alkuperäinen tiedosto. M-x recover-file korvaa alkuperäisen sisällön varmuuskopiolla. Muista sen jälkeen antaa käsky M-x auto-save-mode, sillä em. korvauksen yhteydessä se kääntyy pois päältä.
Auto-saving...
Ilmoitus siitä, että Emacs on suorittamassa tekstin automaattista tallettamista (vrt. kohtaan 11.1) , koska olet tehnyt paljon muutoksia. Kun tekstin perään ilmestyy sana done, talletus on päättynyt ja kaikki jatkuu normaalisti.
Buffer XXX has shrunk a lot; not autosaving it.
Olet tuhonnut puskurista XXX suurimman osan, ja Emacsin mielestä ei ole turvallista tehdä siitä ns. auto save -tiedostoa (vrt. kohtaan 11.1). Jos itse päätät tallettaa sen välissä käskyllä C-x C-s, Emacs suostuu taas tekemään siitä varmistukset.
Command attempted to use minibuffer while in minibuffer
Olet jo suorittamassa käskyrivillä (minipuskurissa) käskyä. Ellei C-g auta, olet siirtynyt kesken käskyn suorituksen pois käskyriviltä ja se on jäänyt aktiiviseksi. Korjaus: siirry C-x o:lla käskyriville ja paina C-g.
Core dumped.
Emacs kaatui ja teki muistivedoksen tiedostoon ~/core. Tästä tiedostosta saattaa olla apua asiantuntijalle, jos hän ryhtyy selvittelemään vikatilannetta.
Error in init file
Alustustiedostossa .emacs on jotain vikaa. Korjaa se. Jotta voisit editoida, sinun täytyy alustustiedoston viallisuuden takia antaa käynnistyskomennossa valitsin -q, siis emacs -q .emacs. Varmista mm. etteivät merkit ; ja : tai ` ja ' ole menneet sekaisin.
File not found and directory doesn't exist
On yritetty etsiä olematonta hakemistoa. Tarkista kirjoitusasu.
File not found and directory write-protected
On yritetty hakea olematonta tiedostoa hakemistosta, johon ei ole kirjoitusoikeuksia. Tarkista tiedoston nimen kirjoitusasu.
Garbage collecting...
Emacs suorittaa sisäistä siivoustaan eikä ehdi juuri nyt palvella sinua. älä huolestu, odota vain. Kun em. tekstin perään ilmestyy sana done, Emacs on saanut siivouksensa tältä erää loppuun ja kaikki jatkuu normaalisti.
Mark set
Tämä on vain ilmoitus merkin (mark) asettamisesta. Ks. kohtaa 3.6.
Mismatched parentheses
Varoitus siitä, että Emacsin mielestä sulkumerkit eivät ole tasapainossa vaan esim. loppusulkuja on enemmän kuin alkusulkuja. Tutki, onko varoitus aiheellinen.