Ero sivun ”Emacsin peruskäyttö” versioiden välillä

Linux.fista
Siirry navigaatioon Siirry hakuun
(→‎Aluksi: Lisäsin tietoa Emacsin aputoiminnosta)
 
(8 välissä olevaa versiota 4 käyttäjän tekeminä ei näytetä)
Rivi 8: Rivi 8:
Komennot koostuvat toimintonäppäimestä ja itse komennosta, joka on yleensä myös vain yksi näppäin. Joskus näppäinyhdistelmällä avataan erillinen komentorivi, johon voidaan syöttää pidempiä komentoja.
Komennot koostuvat toimintonäppäimestä ja itse komennosta, joka on yleensä myös vain yksi näppäin. Joskus näppäinyhdistelmällä avataan erillinen komentorivi, johon voidaan syöttää pidempiä komentoja.


Tässä artikkelissa käytetään myös Emacsin itsensä käyttämää tapaa näppäinyhdistelmien merkitsemiseen, eli esimerkiksi C-x tarkoittaa näppäinyhdistelmää Ctrl+x (eli sekä x:ää että Ctrl-näppäintä painetaan samaan aikaan) ja M-f tarkoittaa näppäinyhdistelmää Alt+f (tai ensin Esciä ja sitten f:ää). Lisäksi esimerkiksi C-x s tarkoittaa, että ensin painetaan näppäinyhdistelmä Ctrl+x ja sitten s:ää. Näppäinyhdistelmässä C-x C-f voi Ctrl-näppäintä painaa pohjassa samalla kun painaa ensin x:ää ja sitten f:ää.
Tässä artikkelissa käytetään myös Emacsin itsensä käyttämää tapaa näppäinyhdistelmien merkitsemiseen, eli esimerkiksi C-x tarkoittaa näppäinyhdistelmää Ctrl+x (eli Ctrl-näppäin pidetään alhaalla painettaessa x:ää) ja M-f tarkoittaa näppäinyhdistelmää Alt+f ("Meta"+f; vaihtoehtoisesti ensin painetaan Esciä ja sitten f:ää). Lisäksi esimerkiksi C-x s tarkoittaa, että ensin painetaan näppäinyhdistelmä Ctrl+x ja sitten s:ää. Näppäinyhdistelmässä C-x C-f voi Ctrl-näppäintä pitää pohjassa samalla kun painaa ensin x:ää ja sitten f:ää.


Emacsissa voi samaan aikaan olla auki useampia tiedostoja ja ne voivat näkyä samanaikaisesti eri ikkunoissa. Tällöin kaikki toimenpiteet kohdistuvat aktiiviseen ikkunaan eli siihen, jossa kursori on sillä hetkellä.
Emacsissa voi samaan aikaan olla auki useampia tiedostoja ja ne voivat näkyä samanaikaisesti eri ikkunoissa. Tällöin kaikki toimenpiteet kohdistuvat aktiiviseen ikkunaan eli siihen, jossa kursori on sillä hetkellä.
Rivi 15: Rivi 15:


Emacs ei yleensä kaiuta komentoja. Jos komento kuitenkin koostuu useammasta osasta (esim. M-3 C-x o), ja jossain vaiheessa käyttäjä pysähtyy hetkeksi miettimään, Emacs tulostaa sivun alalaitaan näkyviin tähän mennessä syötetyn komennon.
Emacs ei yleensä kaiuta komentoja. Jos komento kuitenkin koostuu useammasta osasta (esim. M-3 C-x o), ja jossain vaiheessa käyttäjä pysähtyy hetkeksi miettimään, Emacs tulostaa sivun alalaitaan näkyviin tähän mennessä syötetyn komennon.
Emacsin mukana tulee interaktiivinen tutoriaali, jonka voi avata <code>C-h t</code> komennolla. Sen avulla käyttäjä voi oppia käyttämään Emacsia käyttämällä sen tekstinkäsittelyominaisuuksia. On muutenkin hyvä tutustua Emacsin laadukkaaseen aputoimintoon, ja aputoiminnon ohjeen saa avattua <code>C-h ?</code> komennolla. Erityisen hyödyllinen on <code>C-h m</code> joka näyttää tällä hetkellä käytössä olevat näppäinkomennot.


== Käynnistäminen ==
== Käynnistäminen ==
Rivi 22: Rivi 24:
  emacs +13 testi.txt  
  emacs +13 testi.txt  
Jos Emacs käynnistyy näin graafiseen tilaan ja sitä halutaan käyttää tekstitilassa, on käytettävä lisäksi valitsinta -nw:
Jos Emacs käynnistyy näin graafiseen tilaan ja sitä halutaan käyttää tekstitilassa, on käytettävä lisäksi valitsinta -nw:
  emacs testi.txt -nw
  emacs -nw testi.txt
Jos Emacsille annetaan tässä useampia tiedostoja, se avaa ne eri ikkunoihin, joista lisää myöhemmin.
Jos Emacsille annetaan tässä useampia tiedostoja, se avaa ne eri ikkunoihin, joista lisää myöhemmin.


Käynnistyksen jälkeen Emacs avaa tervetuloikkunan, jossa näkyy muutamia peruskomentoja, tiedot käytettävästä Emacsin versiosta yms. Tästä pääsee pois itse tiedostoon painamalla jotain näppäintä (esimerkiksi nuolia).
Käynnistyksen jälkeen Emacs avaa tervetuloikkunan, jossa näkyy muutamia peruskomentoja, tiedot käytettävästä Emacsin versiosta yms. Tästä pääsee pois itse tiedostoon painamalla jotain näppäintä (esimerkiksi nuolia). Yksi esitetyistä komennoista on Emacsin pikakurssi ("Tutorial"), joka voi olla hyvinkin hyödyllinen.


== Tiedoston avaaminen, sulkeminen ja tallentaminen ==
== Tiedoston avaaminen, sulkeminen ja tallentaminen ==
Kun tiedostoon on tehty muutoksia, se voidaan tallentaa näppäinyhdistelmällä C-x s. Tällöin Emacs varmistaa tallentamisen näyttämällä ruudun alareunassa ilmoituksen
Kun tiedostoon on tehty muutoksia, se voidaan tallentaa näppäinyhdistelmällä C-x s. Tällöin Emacs varmistaa tallentamisen näyttämällä ruudun alareunassa ilmoituksen
  Save file /home/kayttaja/emacstesti? (y, n, !, ., q, C-r, d or C-h)
  Save file /home/kayttaja/emacstesti? (y, n, !, ., q, C-r, d or C-h)
jolloin tiedosto voidaan tallentaa painamalla y:tä. Vastaavasti n:ää painamalla tiedostoa ei tallennetakaan.
jolloin tiedosto voidaan tallentaa painamalla y:tä. Vastaavasti n:ää painamalla tiedostoa ei tallennetakaan. Painamalla d:tä nähtäisiin tiedostoon tehdyt [[diff|muutokset]] viime tallentamisen jälkeen (lopetetaan q:lla), C-r siirtyisi tähän puskuriin (lopetetaan q:lla). ! tallentaisi kaikki tallentamattomat puskurit.


Tiedosto voidaan avata näppäinyhdistelmällä C-x C-f. Tällöin Emacsin alareunaan ilmestyy teksti
Tiedosto voidaan tallentaa toiselle nimelle komennolla C-x C-w. Jos halutaan luoda uusi tiedosto, se voidaan kirjoittaa <tt>*scratch*</tt>-puskuriin ja tallentaa komennolla C-x C-w, jolloin Emacs siirtää sen sisällön puskuriin, jonka nimi on tallennetun tiedoston nimi. Parempi tapa on kuitenkin "avata" olematon tiedosto nimellä komennolla C-x C-f. Tällöin tiedoston käsittely sovelletaan tiedoston nimen päätteen mukaan ja tiedoston varmuuskopiointi aloitetaan heti.
 
Tiedosto voidaan avata näppäinyhdistelmällä C-x C-f oli se olemassa tai ei. Tällöin Emacsin alareunaan ilmestyy teksti
  Find file: ~/työhakemisto/
  Find file: ~/työhakemisto/
jossa avattava tiedosto voidaan hakea tiedostojärjestelmästä. Tiedostopolkua voidaan täydentää tabulaattorilla, ja sen painaminen toistamiseen listaa alkuosaan täsmäävät mahdollisuudet. Tiedostoon voidaan viitata möys sen täydellisellä tiedostopolulla kirjoittamalla se vain suoraan välittämättä valmiiksi ilmestyneestä työhakemiston polusta. Kun polun kirjoittaminen aloitetaan /-merkillä, Emacs jättää huomiotta automaattisesti lisäämänsä työhakemiston polun.
jossa avattava tiedosto voidaan hakea tiedostojärjestelmästä. Tiedostopolkua voidaan täydentää tabulaattorilla, ja sen painaminen toistamiseen listaa alkuosaan täsmäävät mahdollisuudet. Tiedostoon voidaan viitata myös sen täydellisellä tiedostopolulla kirjoittamalla se vain suoraan välittämättä valmiiksi ilmestyneestä työhakemiston polusta. Kun polun kirjoittaminen aloitetaan merkillä "/" tai "~", Emacs jättää huomiotta automaattisesti lisäämänsä työhakemiston polun.


Tiedoston avaaminen - kuten muutkin komennot - voidaan keskeyttää näppäinyhdistelmällä C-g.
Tiedoston avaaminen &ndash; kuten muutkin komennot &ndash; voidaan keskeyttää näppäinyhdistelmällä C-g.


Emacs lopetetaan näppäinyhdistelmällä C-x C-c, jolloin Emacs kysyy jokaisen auki olevan tiedoston kohdalla, tallennetaanko se. Jos jonkin tiedoston (puskurin) sisältöä ei tallenneta, Emacs vielä varmistaa, että se halutaan varmasti lopettaa:
Emacs lopetetaan näppäinyhdistelmällä C-x C-c, jolloin Emacs kysyy jokaisen auki olevan tiedoston kohdalla, tallennetaanko se. Jos jonkin tiedoston (puskurin) sisältöä ei tallenneta, Emacs vielä varmistaa, että se halutaan varmasti lopettaa:
  Modified buffers exist; exit anyway? (yes or no)   
  Modified buffers exist; exit anyway? (yes or no)   
jolloin kirjoittamalla <tt>yes</tt> Emacs lopetetaan eikä tallentamattomia puskureita tallenneta. <tt>no</tt> peruuttaisi sammuttamisen.
jolloin kirjoittamalla <tt>yes</tt> Emacs lopetetaan eikä tallentamattomia puskureita tallenneta. <tt>no</tt> peruuttaisi sammuttamisen. Joitakin puskureita, kuten *scratch*, ei oletusarvoisesti huomioida, vaikka niitä olisi muutettukin.


== Toimitilat ==
== Toimitilat ==
Rivi 47: Rivi 51:
Toimitila näkyy ruudun alareunassa olevassa palkissa, joka voisi näyttää seuraavalta:
Toimitila näkyy ruudun alareunassa olevassa palkissa, joka voisi näyttää seuraavalta:
  -uuu:---F1  emacsopas      15% L15    (Fundamental)------------------
  -uuu:---F1  emacsopas      15% L15    (Fundamental)------------------
Mikä tarkoittaisi sitä, että toimitilana on ''Fundametal'', joka on yleinen tila tekstin kirjoittamiseen. Lisäksi siinä näkyy, että ollaan dokumentin rivillä 15 jota ennen on 15% dokumentista. Muokattavan tiedoston (puskurin) nimi on <tt>emacsopas</tt>.
Mikä tarkoittaisi sitä, että toimitilana on ''Fundametal''. Lisäksi siinä näkyy muun muuassa, että ollaan dokumentin "emacsopas" rivillä 15 jota ennen on 15% dokumentista. Muokattavan tiedoston (puskurin) nimi on <tt>emacsopas</tt>. Normaalia tekstitiedostoa käsitellään toimitilassa ''Text'', ''Fundamental''-tila on yleinen tila kirjoittamiseen, jossa emacs ei oleta mitään tekstin luonteesta.


== Puskureista ==
== Puskureista ==
Kuten aiemmin todettiin, kaikki tiedostot avataan erillisiin puskureihin. Oletetaan, että olemme käynnistäneet Emacsin normaalisti ilman parametreja, ja sitten avaamme C-x C-f -komennolla vuorotellen tiedostot <tt>testi1.tex</tt> ja <tt>testi2</tt>. Tällöin niistä jälkimmäisenä avattu (esim. <tt>testi2</tt>) jää nyt näkyviin, ja ensin avattu <tt>testi1</tt> jää taustalle samannimiseen puskuriin. Nyt näiden välillä voi liikkua komennolla C-x b, jonka seurauksena alareunaan ilmestyy kysymys
Kuten aiemmin todettiin, kaikki tiedostot avataan erillisiin puskureihin. Oletetaan, että olemme käynnistäneet Emacsin normaalisti ilman parametreja, ja sitten avaamme C-x C-f -komennolla vuorotellen tiedostot <tt>testi1.tex</tt> ja <tt>testi2</tt>. Tällöin niistä jälkimmäisenä avattu (esim. <tt>testi2</tt>) jää nyt näkyviin, ja ensin avattu <tt>testi1</tt> jää taustalle samannimiseen puskuriin. Nyt näiden välillä voi liikkua komennolla C-x b, jonka seurauksena alareunaan ilmestyy kysymys
  Switch to buffer (default testi1):
  Switch to buffer (default testi1):
Nyt puskuriin <tt>testi1</tt> voitaisiin siirtyä painamalla enteriä. Johonkin muuhun puskuriin (esim. Emacsin oletuksena luomaan <tt>*scratch*</tt>-puskuriin) voisi siirtyä kirjoittamalla sen nimen ja painamalla enteriä. Puskureiden nimiä voi täydentää tabulaattorilla, joten niitä ei tarvitse kirjoittaa kokonaan.
Nyt puskuriin <tt>testi1</tt> voitaisiin siirtyä painamalla enteriä. Johonkin muuhun puskuriin (esim. Emacsin oletuksena luomaan <tt>*scratch*</tt>-puskuriin) voisi siirtyä kirjoittamalla sen nimen ja painamalla enteriä. Puskureiden nimiä voi täydentää tabulaattorilla, joten niitä ei tarvitse kirjoittaa kokonaan. Jos siirrytään puskuriin, jota ei ole olemassa, se luodaan. Tällöin sen sisältö voidaan tallentaa komennolla C-x C-w, tavallinen C-x s ei tallenna sitä (näin luotu puskuri ei liity tiedostoon ennen itse tiedoston nimeämistä)!


Kaikki puskurit voi listata komennolla C-x C-b. Tämä jakaa ikkunan kahteen osaan, ja nykyisen dokumentin alle ilmestyy seuraavanlainen lista puskureista:
Kaikki puskurit voi listata komennolla C-x C-b. Tämä jakaa ikkunan kahteen osaan, ja nykyisen dokumentin alle ilmestyy seuraavanlainen lista puskureista:
Rivi 62: Rivi 66:
   * *Messages*            1093  Fundamenta
   * *Messages*            1093  Fundamenta
</pre>
</pre>
Listassa näkyy puskureiden nimet <tt>Buffer</tt>-kohdassa, niiden koot, tiedostonimet ja tyypit. C-sarakkeessa on piste sen puskurin kohdalla, joka on tällä hetkellä auki. Toiseen puskuriin voi siirtyä nyt normaalisti komennolla C-b. Puskurilista voidaan jättää taustalle komennolla C-x 1 (useamman ikkunan käsittelystä lisää myöhemmin).  
Listassa näkyy puskureiden nimet <tt>Buffer</tt>-kohdassa, niiden koot, tiedostonimet ja tyypit. C-sarakkeessa on piste sen puskurin kohdalla, joka on tällä hetkellä auki. Toiseen puskuriin voi siirtyä nyt normaalisti komennolla C-x b. Puskurilista voidaan jättää taustalle komennolla C-x 1 (useamman ikkunan käsittelystä lisää myöhemmin).  


Puskureita voidaan poistaa komennolla C-x k, joka kysyy poistettavan puskurin nimeä:
Puskureita voidaan poistaa komennolla C-x k, joka kysyy poistettavan puskurin nimeä:
Rivi 69: Rivi 73:


== Ikkunoiden käsittely ==
== Ikkunoiden käsittely ==
Kuten aiemmin jo hieman viitattiin, Emacsissa on mahdollista pitää auki useampia ikkunoita samanaikaisesti. Aktiivisena oleva ikkuna voidaan jakaa pystysuunnassa kahteen osaan komennolla C-x 2.  Tällöin komennon kirjoitushetkellä aktiivisessa ikkunassa ollut puskuri näkyy molemmissa syntyvissä ikkunoissa. Molemmissa ikkunoissa tehdyt muutokset myös muokkaavat samaa puskuria, ja muutokset näkyvät välittömästi myös toisessa puskurissa.
Kuten aiemmin jo hieman viitattiin, Emacsissa on mahdollista pitää auki useampia ikkunoita samanaikaisesti. Aktiivisena oleva ikkuna voidaan jakaa pystysuunnassa kahteen osaan komennolla C-x 2.  Tällöin komennon kirjoitushetkellä aktiivisessa ikkunassa ollut puskuri näkyy molemmissa syntyvissä ikkunoissa. Molemmissa ikkunoissa tehdyt muutokset myös muokkaavat samaa puskuria, ja muutokset näkyvät välittömästi myös toisessa ikkunassa.


Vastaavasti ikkuna voidaan jakaa vaakasuunnassa komennolla C-x 3. Tässä tilassa rivin alussa tai lopussa näkyvät dollarimerkit ($) tarkoittavat, että rivi jatkuu vielä tämän merkin jälkeenkin. Huomaa ero "normaalilevyisiin" ikkunoihin, joissa rivin alku näkyy aina kokonaan ja rivin lopussa oleva kenoviiva \ tarkoittaa sitä, että seuraavalla rivillä oleva teksti on nykyisen rivin loppuosaa.
Vastaavasti ikkuna voidaan jakaa vaakasuunnassa komennolla C-x 3. Tässä tilassa rivin alussa tai lopussa näkyvät dollarimerkit ($) tarkoittavat, että rivi jatkuu vielä tämän merkin jälkeenkin. Huomaa ero "normaalilevyisiin" ikkunoihin, joissa rivin alku näkyy aina kokonaan ja rivin lopussa oleva kenoviiva \ tarkoittaa sitä, että seuraavalla rivillä oleva teksti on nykyisen rivin loppuosaa.
Rivi 79: Rivi 83:
Kursori siirretään aktiivisesta ikkunasta seuraavaan komennolla C-x o, ja useamman ikkunan yli voidaan kerralla hypätä komennolla M-3 C-x o, joka toistaisi kolmesti (M-3) ikkunan vaihtokomenon. Vastaavaa toistokomentoa voi käyttää muidenkin komentojen yhteydessä.
Kursori siirretään aktiivisesta ikkunasta seuraavaan komennolla C-x o, ja useamman ikkunan yli voidaan kerralla hypätä komennolla M-3 C-x o, joka toistaisi kolmesti (M-3) ikkunan vaihtokomenon. Vastaavaa toistokomentoa voi käyttää muidenkin komentojen yhteydessä.


Aktiivisen ikkunan kokoa voidaan kasvattaa yhdellä rivillä komennolla C-x ^. Aktiivinen ikkuna suurennetaan koko ruudun kokoiseksi komennolla C-x 1 ja piilotetaan komennolla C-x 0.
Aktiivisen ikkunan kokoa voidaan kasvattaa yhdellä rivillä komennolla C-x ^. Aktiivinen ikkuna suurennetaan koko ruudun kokoiseksi komennolla C-x 1 ja piilotetaan komennolla C-x 0. Tällöin ikkunassa auki ollut puskuri ei kuitenkaan häviä minnekään, vaan jää "taustalle".
 
== Tiedostojen käsittely ==
Aiemmin olemme avanneet tiedostoja komennolla C-x C-f ja tallentaneet niitä C-x s:llä. C-x C-f avaa tiedoston uuteen puskuriin. Tiedosto voidaan kuitenkin avata myös nykyiseen puskuriin komennolla C-x C-v. Jos kyseiseen puskuriin tehtyjä muutoksia ei ole tallennettu, Emacs varoittaa käyttäjää siitä ja kysyy, halutaanko varmasti jatkaa.
 
C-x i liittää toisen tiedoston sisällön nykyiseen puskuriin siihen kohtaan, missä kursori sillä hetkellä on.
 
C-x C-s tallentaa tiedoston ja luo ensimmäisellä tallennuskerralla sen aiemmasta versiosta varmuuskopion nimelle <tt>tiedostonimi~</tt>.
 
== Haku ja korvaus ==
Aktiivisena olevasta puskurista voidaan etsiä merkkijonoa komennolla C-s. Tällöin ruudun alareunaan ilmestyy teksti
I-search:
ja voidaan kirjoittaa etsittävä merkkijono. Tällöin Emacs etsii tiedostosta seuraavan kohdan, jossa haettu merkkijono on ja korostaa sen kuten myös muut löytämänsä merkkijonot. Komennolla C-s siirrytään seuraavaan löydettyyn merkkijonoon. Jos haettua merkkijonoa ei löydy, alareunaan tulee ilmoitus
Failing I-search: hakusana
C-r toimii samalla tavalla, mutta hakee merkkijonoa liikkuen tiedostossa taaksepäin.
 
Tekstissä esiintyviä merkkijonoja voidaan korvata toisella seuraavasti: annetaan ensin komento M-% (esim. alt+shift+5), jolloin alareunaan ilmestyy teksti "<tt>Query replace:</tt>". Tämän jälkeen kirjoitetaan korvattava ilmaisu ja painetaan enteriä. Nyt tämän tekstin pitäisi näyttää seuraavalta
  Query replace korvattava_merkkijono with:
ja nyt kirjoitetaan korvaava merkkijono ja painetaan enteriä. Tämän jälkeen Emacs korostaa kaikki löytämänsä korvattavat merkkijonot ja siirtyy niistä ensimmäisen kohdalle ja kysyy, mitä tehdään. Vastausvaihtoehdot ovat:
*Välilyönti tai y korvaa ilmaisun ja siirtyy seuraavaan
*n tai Del jättää korvaamatta tämän kohdan ja siirtyy seuraavaan
*Enter ja q lopettavat korvaamisen
*! korvaa kysymättä kaikki loput kohdat
*E muuttaa korvaavaa merkkijonoa
*. tekee tämän muutoksen ja lopettaa korvaamisen sen jälkeen.
 
== Kopioiminen ja liittäminen &ndash; alueet ==
Emacsissa tekstin kopioiminen ja liittäminen tehdään käsittelemällä alueita. Alueella tarkoitetaan sitä osaa tiedostosta, joka alkaa ''merkistä'' ja päättyy kursorin nykyiseen paikkaan. Merkki voidaan asettaa komennolla C-@.
 
Asetetaan nyt merkki halutun alueen alkuun ja viedään kursori alueen loppuun (tai päinvastoin). Nyt merkitsemämme alueen teksti voidaan poistaa komennolla C-w. Poistettu teksti siirtyy eräänlaiselle leikepöydälle (''poistorenkaaseen''), josta se on mahdollista liittää kursorin kohdalle komennolla C-y.
 
Vastaavasti alue voitaisiin kopioida käyttäen komennon C-w tilalla komentoa M-w, joka kopioi merkityn alueen, jonka jälkeen alue voidaan liittää samaan tapaan kuin edellä komennolla C-y.
 
Puskurin voi valita kokonaan komennolla C-x h, ja valitun alueen voi sisentää komennolla C-TAB.




[[Luokka:Ohjeet]]
[[Luokka:Ohjeet]]

Nykyinen versio 19. huhtikuuta 2024 kello 12.03

Emacs on monipuolinen tekstieditori, mutta sen käyttäminen voi aluksi tuntua vaikealta. Tässä artikkelissa tutustutaan Emacsin peruskäyttöön. Lisätietoja Emacsista löytyy artikkelista Emacs.

Tässä artikkelissa käsitellään Emacsin käyttöä komentoriviltä. Graafinen versio toimii yleensä samalla tavalla.

Aluksi[muokkaa]

Emacsissa ei ole samalla tavalla erillistä komento- ja syöttötilaa kuten esimerkiksi Vimissä, vaan käynnistämisen jälkeen tekstiä voi kirjoittaa suoraan aukeavaan ikkunaan ja komennot annetaan näppäinyhdistelminä.

Komennot koostuvat toimintonäppäimestä ja itse komennosta, joka on yleensä myös vain yksi näppäin. Joskus näppäinyhdistelmällä avataan erillinen komentorivi, johon voidaan syöttää pidempiä komentoja.

Tässä artikkelissa käytetään myös Emacsin itsensä käyttämää tapaa näppäinyhdistelmien merkitsemiseen, eli esimerkiksi C-x tarkoittaa näppäinyhdistelmää Ctrl+x (eli Ctrl-näppäin pidetään alhaalla painettaessa x:ää) ja M-f tarkoittaa näppäinyhdistelmää Alt+f ("Meta"+f; vaihtoehtoisesti ensin painetaan Esciä ja sitten f:ää). Lisäksi esimerkiksi C-x s tarkoittaa, että ensin painetaan näppäinyhdistelmä Ctrl+x ja sitten s:ää. Näppäinyhdistelmässä C-x C-f voi Ctrl-näppäintä pitää pohjassa samalla kun painaa ensin x:ää ja sitten f:ää.

Emacsissa voi samaan aikaan olla auki useampia tiedostoja ja ne voivat näkyä samanaikaisesti eri ikkunoissa. Tällöin kaikki toimenpiteet kohdistuvat aktiiviseen ikkunaan eli siihen, jossa kursori on sillä hetkellä.

Emacs käsittelee kaikkia tekstejä puskureissa (engl. buffer). Esimerkiksi auki olevan tiedoston sisältö on puskurissa, jonka nimi on tiedoston nimi.

Emacs ei yleensä kaiuta komentoja. Jos komento kuitenkin koostuu useammasta osasta (esim. M-3 C-x o), ja jossain vaiheessa käyttäjä pysähtyy hetkeksi miettimään, Emacs tulostaa sivun alalaitaan näkyviin tähän mennessä syötetyn komennon.

Emacsin mukana tulee interaktiivinen tutoriaali, jonka voi avata C-h t komennolla. Sen avulla käyttäjä voi oppia käyttämään Emacsia käyttämällä sen tekstinkäsittelyominaisuuksia. On muutenkin hyvä tutustua Emacsin laadukkaaseen aputoimintoon, ja aputoiminnon ohjeen saa avattua C-h ? komennolla. Erityisen hyödyllinen on C-h m joka näyttää tällä hetkellä käytössä olevat näppäinkomennot.

Käynnistäminen[muokkaa]

Emacs voidaan käynnistää yksinkertaisesti komennolla

emacs

Komennolle voidaan antaa parametrina avattavan tiedoston tiedostonimi ja myös kohta, josta tiedostoa aletaan lukemaan. Esimerkiksi seuraava avaisi tiedoston testi.txt ja siirtyisi suoraan tiedoston riville 13:

emacs +13 testi.txt 

Jos Emacs käynnistyy näin graafiseen tilaan ja sitä halutaan käyttää tekstitilassa, on käytettävä lisäksi valitsinta -nw:

emacs -nw testi.txt

Jos Emacsille annetaan tässä useampia tiedostoja, se avaa ne eri ikkunoihin, joista lisää myöhemmin.

Käynnistyksen jälkeen Emacs avaa tervetuloikkunan, jossa näkyy muutamia peruskomentoja, tiedot käytettävästä Emacsin versiosta yms. Tästä pääsee pois itse tiedostoon painamalla jotain näppäintä (esimerkiksi nuolia). Yksi esitetyistä komennoista on Emacsin pikakurssi ("Tutorial"), joka voi olla hyvinkin hyödyllinen.

Tiedoston avaaminen, sulkeminen ja tallentaminen[muokkaa]

Kun tiedostoon on tehty muutoksia, se voidaan tallentaa näppäinyhdistelmällä C-x s. Tällöin Emacs varmistaa tallentamisen näyttämällä ruudun alareunassa ilmoituksen

Save file /home/kayttaja/emacstesti? (y, n, !, ., q, C-r, d or C-h)

jolloin tiedosto voidaan tallentaa painamalla y:tä. Vastaavasti n:ää painamalla tiedostoa ei tallennetakaan. Painamalla d:tä nähtäisiin tiedostoon tehdyt muutokset viime tallentamisen jälkeen (lopetetaan q:lla), C-r siirtyisi tähän puskuriin (lopetetaan q:lla). ! tallentaisi kaikki tallentamattomat puskurit.

Tiedosto voidaan tallentaa toiselle nimelle komennolla C-x C-w. Jos halutaan luoda uusi tiedosto, se voidaan kirjoittaa *scratch*-puskuriin ja tallentaa komennolla C-x C-w, jolloin Emacs siirtää sen sisällön puskuriin, jonka nimi on tallennetun tiedoston nimi. Parempi tapa on kuitenkin "avata" olematon tiedosto nimellä komennolla C-x C-f. Tällöin tiedoston käsittely sovelletaan tiedoston nimen päätteen mukaan ja tiedoston varmuuskopiointi aloitetaan heti.

Tiedosto voidaan avata näppäinyhdistelmällä C-x C-f oli se olemassa tai ei. Tällöin Emacsin alareunaan ilmestyy teksti

Find file: ~/työhakemisto/

jossa avattava tiedosto voidaan hakea tiedostojärjestelmästä. Tiedostopolkua voidaan täydentää tabulaattorilla, ja sen painaminen toistamiseen listaa alkuosaan täsmäävät mahdollisuudet. Tiedostoon voidaan viitata myös sen täydellisellä tiedostopolulla kirjoittamalla se vain suoraan välittämättä valmiiksi ilmestyneestä työhakemiston polusta. Kun polun kirjoittaminen aloitetaan merkillä "/" tai "~", Emacs jättää huomiotta automaattisesti lisäämänsä työhakemiston polun.

Tiedoston avaaminen – kuten muutkin komennot – voidaan keskeyttää näppäinyhdistelmällä C-g.

Emacs lopetetaan näppäinyhdistelmällä C-x C-c, jolloin Emacs kysyy jokaisen auki olevan tiedoston kohdalla, tallennetaanko se. Jos jonkin tiedoston (puskurin) sisältöä ei tallenneta, Emacs vielä varmistaa, että se halutaan varmasti lopettaa:

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

jolloin kirjoittamalla yes Emacs lopetetaan eikä tallentamattomia puskureita tallenneta. no peruuttaisi sammuttamisen. Joitakin puskureita, kuten *scratch*, ei oletusarvoisesti huomioida, vaikka niitä olisi muutettukin.

Toimitilat[muokkaa]

Emacsilla ei ole suoranaisesti erillisiä komento- ja syöttötiloja, mutta silti siinä on eri toimitiloja. Tilat riippuvat muokattavan dokumentin tyypistä, ja Emacs tunnistaa tyypin yleensä tiedostopäätteen perusteella. Esimerkiksi .c-päätteisiä tiedostoja käsitellään C-kielisinä lähdekooditiedostoina ja .tex-tiedostoja LaTeX-tiedostoina. Toimitila vaikuttaa mm. siihen, rivittääkö Emacs tekstiä automaattisesti.

Toimitila näkyy ruudun alareunassa olevassa palkissa, joka voisi näyttää seuraavalta:

-uuu:---F1  emacsopas      15% L15    (Fundamental)------------------

Mikä tarkoittaisi sitä, että toimitilana on Fundametal. Lisäksi siinä näkyy muun muuassa, että ollaan dokumentin "emacsopas" rivillä 15 jota ennen on 15% dokumentista. Muokattavan tiedoston (puskurin) nimi on emacsopas. Normaalia tekstitiedostoa käsitellään toimitilassa Text, Fundamental-tila on yleinen tila kirjoittamiseen, jossa emacs ei oleta mitään tekstin luonteesta.

Puskureista[muokkaa]

Kuten aiemmin todettiin, kaikki tiedostot avataan erillisiin puskureihin. Oletetaan, että olemme käynnistäneet Emacsin normaalisti ilman parametreja, ja sitten avaamme C-x C-f -komennolla vuorotellen tiedostot testi1.tex ja testi2. Tällöin niistä jälkimmäisenä avattu (esim. testi2) jää nyt näkyviin, ja ensin avattu testi1 jää taustalle samannimiseen puskuriin. Nyt näiden välillä voi liikkua komennolla C-x b, jonka seurauksena alareunaan ilmestyy kysymys

Switch to buffer (default testi1):

Nyt puskuriin testi1 voitaisiin siirtyä painamalla enteriä. Johonkin muuhun puskuriin (esim. Emacsin oletuksena luomaan *scratch*-puskuriin) voisi siirtyä kirjoittamalla sen nimen ja painamalla enteriä. Puskureiden nimiä voi täydentää tabulaattorilla, joten niitä ei tarvitse kirjoittaa kokonaan. Jos siirrytään puskuriin, jota ei ole olemassa, se luodaan. Tällöin sen sisältö voidaan tallentaa komennolla C-x C-w, tavallinen C-x s ei tallenna sitä (näin luotu puskuri ei liity tiedostoon ennen itse tiedoston nimeämistä)!

Kaikki puskurit voi listata komennolla C-x C-b. Tämä jakaa ikkunan kahteen osaan, ja nykyisen dokumentin alle ilmestyy seuraavanlainen lista puskureista:

CRM Buffer                Size  Mode              File
. * testi1.tex             615  LaTeX             ~/test1.tex
    testi2                3836  Fundamental       ~/testi2
    *scratch*              191  Lisp Interaction
  * *Messages*            1093  Fundamenta

Listassa näkyy puskureiden nimet Buffer-kohdassa, niiden koot, tiedostonimet ja tyypit. C-sarakkeessa on piste sen puskurin kohdalla, joka on tällä hetkellä auki. Toiseen puskuriin voi siirtyä nyt normaalisti komennolla C-x b. Puskurilista voidaan jättää taustalle komennolla C-x 1 (useamman ikkunan käsittelystä lisää myöhemmin).

Puskureita voidaan poistaa komennolla C-x k, joka kysyy poistettavan puskurin nimeä:

Kill buffer (default testi2):

Jossa poistaminen kohdistuu oletuksena sillä hetkellä auki olevaan puskuriin (tässä testi2), joka voitaisiin siis poistaa vain painamalla enteriä. Jos halutaan poistaa jokin muu puskuri, kirjoitetaan sen nimi (tai alku nimestä ja painetaan tabulaattoria) ja painetaan sitten enteriä. Kokeile esimerkiksi poistaa äsken taustalle jätetty puskurilistan sisältävä puskuri *Buffer list*.

Ikkunoiden käsittely[muokkaa]

Kuten aiemmin jo hieman viitattiin, Emacsissa on mahdollista pitää auki useampia ikkunoita samanaikaisesti. Aktiivisena oleva ikkuna voidaan jakaa pystysuunnassa kahteen osaan komennolla C-x 2. Tällöin komennon kirjoitushetkellä aktiivisessa ikkunassa ollut puskuri näkyy molemmissa syntyvissä ikkunoissa. Molemmissa ikkunoissa tehdyt muutokset myös muokkaavat samaa puskuria, ja muutokset näkyvät välittömästi myös toisessa ikkunassa.

Vastaavasti ikkuna voidaan jakaa vaakasuunnassa komennolla C-x 3. Tässä tilassa rivin alussa tai lopussa näkyvät dollarimerkit ($) tarkoittavat, että rivi jatkuu vielä tämän merkin jälkeenkin. Huomaa ero "normaalilevyisiin" ikkunoihin, joissa rivin alku näkyy aina kokonaan ja rivin lopussa oleva kenoviiva \ tarkoittaa sitä, että seuraavalla rivillä oleva teksti on nykyisen rivin loppuosaa.

Useampia ikkunoita

Ikkunoiden jakamista voidaan jatkaa periaatteessa rajattomasti, ja osa ikkunoista voidaan jakaa vaakasuunnassa ja osa pystysuunnassa.

Uuteen ikkunaan voidaan toki avata jokin muu tiedosto (puskuri) komennolla C-x C-f tai C-x b.

Kursori siirretään aktiivisesta ikkunasta seuraavaan komennolla C-x o, ja useamman ikkunan yli voidaan kerralla hypätä komennolla M-3 C-x o, joka toistaisi kolmesti (M-3) ikkunan vaihtokomenon. Vastaavaa toistokomentoa voi käyttää muidenkin komentojen yhteydessä.

Aktiivisen ikkunan kokoa voidaan kasvattaa yhdellä rivillä komennolla C-x ^. Aktiivinen ikkuna suurennetaan koko ruudun kokoiseksi komennolla C-x 1 ja piilotetaan komennolla C-x 0. Tällöin ikkunassa auki ollut puskuri ei kuitenkaan häviä minnekään, vaan jää "taustalle".

Tiedostojen käsittely[muokkaa]

Aiemmin olemme avanneet tiedostoja komennolla C-x C-f ja tallentaneet niitä C-x s:llä. C-x C-f avaa tiedoston uuteen puskuriin. Tiedosto voidaan kuitenkin avata myös nykyiseen puskuriin komennolla C-x C-v. Jos kyseiseen puskuriin tehtyjä muutoksia ei ole tallennettu, Emacs varoittaa käyttäjää siitä ja kysyy, halutaanko varmasti jatkaa.

C-x i liittää toisen tiedoston sisällön nykyiseen puskuriin siihen kohtaan, missä kursori sillä hetkellä on.

C-x C-s tallentaa tiedoston ja luo ensimmäisellä tallennuskerralla sen aiemmasta versiosta varmuuskopion nimelle tiedostonimi~.

Haku ja korvaus[muokkaa]

Aktiivisena olevasta puskurista voidaan etsiä merkkijonoa komennolla C-s. Tällöin ruudun alareunaan ilmestyy teksti

I-search:

ja voidaan kirjoittaa etsittävä merkkijono. Tällöin Emacs etsii tiedostosta seuraavan kohdan, jossa haettu merkkijono on ja korostaa sen kuten myös muut löytämänsä merkkijonot. Komennolla C-s siirrytään seuraavaan löydettyyn merkkijonoon. Jos haettua merkkijonoa ei löydy, alareunaan tulee ilmoitus

Failing I-search: hakusana

C-r toimii samalla tavalla, mutta hakee merkkijonoa liikkuen tiedostossa taaksepäin.

Tekstissä esiintyviä merkkijonoja voidaan korvata toisella seuraavasti: annetaan ensin komento M-% (esim. alt+shift+5), jolloin alareunaan ilmestyy teksti "Query replace:". Tämän jälkeen kirjoitetaan korvattava ilmaisu ja painetaan enteriä. Nyt tämän tekstin pitäisi näyttää seuraavalta

 Query replace korvattava_merkkijono with:

ja nyt kirjoitetaan korvaava merkkijono ja painetaan enteriä. Tämän jälkeen Emacs korostaa kaikki löytämänsä korvattavat merkkijonot ja siirtyy niistä ensimmäisen kohdalle ja kysyy, mitä tehdään. Vastausvaihtoehdot ovat:

  • Välilyönti tai y korvaa ilmaisun ja siirtyy seuraavaan
  • n tai Del jättää korvaamatta tämän kohdan ja siirtyy seuraavaan
  • Enter ja q lopettavat korvaamisen
  • ! korvaa kysymättä kaikki loput kohdat
  • E muuttaa korvaavaa merkkijonoa
  • . tekee tämän muutoksen ja lopettaa korvaamisen sen jälkeen.

Kopioiminen ja liittäminen – alueet[muokkaa]

Emacsissa tekstin kopioiminen ja liittäminen tehdään käsittelemällä alueita. Alueella tarkoitetaan sitä osaa tiedostosta, joka alkaa merkistä ja päättyy kursorin nykyiseen paikkaan. Merkki voidaan asettaa komennolla C-@.

Asetetaan nyt merkki halutun alueen alkuun ja viedään kursori alueen loppuun (tai päinvastoin). Nyt merkitsemämme alueen teksti voidaan poistaa komennolla C-w. Poistettu teksti siirtyy eräänlaiselle leikepöydälle (poistorenkaaseen), josta se on mahdollista liittää kursorin kohdalle komennolla C-y.

Vastaavasti alue voitaisiin kopioida käyttäen komennon C-w tilalla komentoa M-w, joka kopioi merkityn alueen, jonka jälkeen alue voidaan liittää samaan tapaan kuin edellä komennolla C-y.

Puskurin voi valita kokonaan komennolla C-x h, ja valitun alueen voi sisentää komennolla C-TAB.