Pikaopas 3 ( 14.11.1997 )
GNU-Emacs editori
Yleistä. Maailmalla liikkuu useita emacs-variaatioita, joista tässä käsitellään vain sitä oikeaa emacsia, GNU-Emacsia.
Emacs on monipuolinen ohjelmoitava kuvaruutueditori. Se on alunperin kotoisin MIT:sta (Massachusetts Institute of Technology). Emacs toimii kaikilla kuvaruutupäätteillä, joissa suora kursorin osoitus on mahdollista.
Emacs tuntee monia tiedostotyyppejä niiden nimistä ja sovittaa jotkut toiminnat tyypin mukaan. Jos tiedoston nimi päättyy merkkeihin .c tai .h, emacs olettaa sen sisältävän C-kielistä ohjelmaa, .tex käynnistää joko TeX tai LaTeX -toiminnat jne. Joissain moodeissa jotkut ``normaalinäppäimet'' toimivat poikkeavalla tavalla, (esim. < ja > HTML-moodissa).
Näyttö, puskurit ja tiedostot. Kuvaruudun alin rivi (minibuffer) on varattu emacsin ilmoituksille ja käskyjen ja niiden argumenttien antamiseen.
Sen yläpuolella on tilarivi, jossa on seuraavat merkinnät vasemmalta oikealle:
--**- jos tiedostoon on tehty muutoksia, joita ei ole talletettu
--%%- jos tiedostoa ei voi muuttaa
Emacs käsittelee tietoa puskureissa (buffer), jokaista tiedostoa omassa puskurissaan. Puskureiden nimet ovat käyttäjän vapaasti määriteltävissä, oletuksena puskurin nimi on sama kuin puskurissa olevan tiedoston nimi.
Käsiteltävänä voi olla yhtäaikaa useita puskureita eri ikkunoissa. Yksi puskuri voi myös olla samanaikaisesti useammassa ikkunassa, jolloin näkyvillä voi olla saman tiedoston eri kohtia.
Merkinnöistä. Kaikki emacsin käskyt voidaan antaa komentorivikäskyinä, tärkeimmät on myös sidottu kontrolli- tai metanäppäimiin. Taulukoissa on selityksen perässä suluissa näppäintoimintoa vastaava komentorivikäsky.
Seuraavassa C-X tarkoittaa kontrollimerkkiä, joka syntyy painamalla yhtäaikaa <CONTROL>- ja <X>-näppäimiä. M-X tarkoittaa merkkiä, joka saadaan joko painamalla yhtäaikaa <META>- ja <X>-näppäimiä tai painamalla peräkkäin <ESC>- ja <X>-näppäimiä.
Huom: Emacsissa on hyvin runsaasti käskyjä lähes mikä tahansa kontrolli- tai metamerkki tai niiden yhdistelmä on sidottu johonkin käskyyn.
Käynnistys ja lopettaminen. Emacs käynnistyy kirjoittamalla komentoriville emacs tiedosto. Jos tiedostoa ei ole olemassa, emacs tyhjentää kuvaruudun tilariviä lukuunottamatta ja vie kursorin koti-positioon (kuvaruudun vasen yläkulma) ja uuden tekstin syöttö voi alkaa. Jos tiedosto on jo olemassa, emacs lukee sen puskuriin, näyttää ensimmäisen ruudullisen ja vie kursorin koti-positioon.
C-X C-C poistuu emacsista, pyytää varmistuksen jokaisesta puskurista, jonka muutoksia ei ole talletettu (save-buffers-kill-emacs)
C-G C-G C-G C-X C-C ``hätäpysäytys''
C-Z jättää emacsin taustalle (suspend-emacs)
Tekstin kirjoittaminen. Emacs toimii normaalisti lisäystilassa eli kirjoitetut merkit menevät kursorin osoittamaan paikkaan entisten väliin, ei niiden päälle. Komentorivikäsky overwrite-mode vaihtaa emacsin päällekirjoitustilaan tai, jos emacs oli päällekirjoitustilassa, takaisin lisäystilaan (vaihtokytkintoiminta, toggle).
Kaikki ``normaalimerkit'' voi kirjoittaa tiedostoon sellaisenaan (ISO 8859.1) merkit (välilyönnistä ÿ-kirjaimeen) toimivat, jos standard-display-european on asetettu). Kontrollimerkkien lisääminen puskuriin tapahtuu kirjoittamalle ensin C-Q ja sitten joko lisättävä kontrollimerkki sellaisenaan tai sen oktaaliarvo kolminumeroisena. (Oktaaliarvot katso esimerkiksi man ascii)
Liikkuminen. Se puskuri, jossa kursori on, on aktiivinen puskuri. Tekstin lisääminen ja useimmat muut toiminnot kohdistuvat aktiiviseen puskuriin siihen kohtaan, missä kursori on.
C-P kursori edelliselle riville (previous-line), myös <nuoli ylös>
C-N kursori seuraavalle riville (next-line), myös <nuoli alas>
C-B kursori merkki taaksepäin (backward-char), myös <nuoli vasemmalle>
C-F kursori merkki eteenpäin (forward-char), myös <nuoli oikealle>
M-B kursori edellisen sanan alkuun (backward-word)
M-F kursori seuraavan sanan alkuun (forward-word)
C-A kursori rivin alkuun (beginning-of-line)
C-E kursori rivin loppuun (end-of-line)
M-A kursori lauseen alkuun (backward-sentence)
M-E kursori lauseen loppuun (forward-sentence)
M-{ kursori edellisen kappaleen alkuun (backward-paragraph)
M-} kursori seuraavan kappaleen alkuun (forward-paragraph)
C-V kursori yksi ikkunallinen eteenpäin (scroll-up)
M-V kursori yksi ikkunallinen taaksepäin (scroll-down)
M-< kursori puskurin (tiedoston) alkuun (beginning-of-buffer)
M-> kursori puskurin (tiedoston) loppuun (end-of-buffer)
M-R kursori ikkunan keskimmäisen rivin alkuun (move-to-window-line)
C-L piirtää kuvaruudun uudestaan siten, että rivi, jolla kursori on, tulee ikkunassa keskimmäiseksi (recenter)
Nuolinäppäimet toimivat kaikilla ``tunnetuilla'' päätetyypeillä. Joissakin päätteissä emacsin käyttämä alustussekvenssi asettaa näppäimistön tilaan, jossa erillinen numeronäppäimistö muuttuu toimintonäppäimiksi.
C-X B puskuri hyppy nimettyyn puskuriin (switch-to-buffer)
C-X C-B tulostaa listan kaikista puskureista (list-buffers)
C-X C-F kysyy tiedoston nimen ja lukee sen {\em uuteen} puskuriin editoitavaksi (find-file)
C-X C-V kysyy tiedoston nimen ja lukee sen vanhaan puskuriin editoitavaksi ja korvaa uudella tiedostolla puskurin vanhan sisällön (find-alternate-file)
C-X I kysyy tiedoston nimen ja lisää sen sisällön aktiiviseen puskuriin kursorin kohdalle (insert-file)
C-X K poistaa valitun tai nimetyn puskurin, pyytää varmistuksen, jos puskurissa on tallettamattomia muutoksia (kill-buffer)
C-X 0 poistaa aktiivisen ikkunan näytöltä (delete-window)
C-X 1 poistaa muut ikkunat näytöltä (delete-other-window)
C-X 2 jakaa aktiivisen ikkunan vaakasuoraan kahdeksi ikkunaksi (split-window-vertically)
C-X 5 jakaa aktiivisen ikkunan pystysuoraan kahdeksi ikkunaksi (split-window-horizontally)
C-X O siirtyy seuraavaan ikkunaan (other-window)
Haut. Emacsin normaali hakutapa on inkrementaalinen haku: etsintä käynnistyy heti ja emacs yrittää koko ajan löytää hakusuunnassa ensimmäisen sopivan merkkijonon sitä mukaa kuin haettavaa jonoa kirjoitetaan. Jokainen haettavaan merkkijonoon lisätty merkki käynnistää uuden etsinnän siitä pisteestä hakusuuntaan, mihin edellinen haku päättyi, ja jokainen DEL-merkki peruuttaa yhden hakukierroksen.
C-S inkrementaalinen haku eteenpäin: merkkijonoa haetaan sitä mukaa kuin sitä kirjoitetaan. Uusi C-S hakee seuraavan samanlaisen merkkijonon, <esc> päättää haun. (isearch-forward)1
C-R inkrementaalinen haku taaksepäin (isearch-backward)
C-S C-S toistaa jo päätetyn haun eteenpäin
C-R C-R toistaa jo päätetyn haun taaksepäin
C-S ESC ``perinteinen'' haku eteenpäin (search-forward)
C-R ESC ``perinteinen'' haku taaksepäin (search-backward)
M-C-S inkrementaalinen säännöllisen lausekkeen haku eteenpäin (isearch-forward-regexp)
Säännöllisten lausekkeiden (regular expression) haku toimii samalla tavalla kuin inkrementaalinen haku, mutta etsittävä merkkijono voi sisältää myös säännöllisiä lausekkeita. Tällöin etsintä etenee vasta, kun lauseke on suljettu. (Säännölliset lausekkeet katso man ed)
Korvaaminen. Emacsin korvaustoiminta säilyttää isot ja pienet alkukirjaimet, jos korvaava merkkijono annetaan pienin kirjaimin. Jos korvaava merkkijono annetaan isoin kirjaimin, korvaus tapahtuu aina isoin kirjaimin.
M-% varmistava korvaus (query-replace): kysyy kaksi merkkijonoa, korvaa ensimmäisen toisella, pyytää varmistuksen jokaisen esiintymän kohdalla, mahdollisia vastauksia:
Y korvaa, etsii seuraavan esiintymän (myös SPC)
N etsii seuraavan esiintymän, ei korvaa (myös DEL)
Q keskeyttää korvaustoiminnan (myös ESC)
! korvaa loput esiintymät ilman varmistusta
. korvaa löydetyn esiintymän ja päättää etsinnän
^ palaa takaisin edelliseen esiintymään
C-H näyttää kaikki vastausmahdollisuudet
Merkitseminen. Monet toiminnat kohdistuvat suurempaa tekstikokonaisuuteen, joka on valittu merkitsemällä. Merkitty alue (region) sisältää kaiken tekstin, joka on markkerin (mark) ja kursorin (point) välissä. Jokaisella puskurilla on oma markkeri. Markkeri sijaitsee kahden merkkiposition välissä ja on kiinnitetty edeltävään positioon.
Käskyt, jotka lisäävät suuren määrän tekstiä (esim. C-Y), asettavat markkerin siten, että lisätty teksti muodostaa merkityn alueen.
C-@ asettaa markkerin kursorin kohdalle (joissakin päätteissätämä merkki on C-2, toisissa sopii C-SPC) (set-mark-command)
C-X C-X asettaa markkerin kursorin kohdalle ja siirtää kursorin edelliseen markkeriin (exchange-point-and-mark)
M-@ asettaa markkerin seuraavan sanan loppuun, kursori ei siirry (mark-word)
C-X H merkitsee koko puskurin (mark-whole-buffer)
M-H merkitsee sen kappaleen, jossa kursori on (mark-paragraph)
C-X C-P merkitsee sen sivun, jolla kursori on (mark-page)
Tuhoaminen, poistaminen ja palauttaminen
DEL tuhoaa merkin kursorin vasemmalta puolelta (delete-backward-char)
C-D tuhoaa merkin kursorin alta (delete-char)
M-\ tuhoaa kaikki välilyönnit ja tab-merkit kursorin ympäriltä (delete-horizontal-space)
M-SPC tuhoaa ylimääräiset välilyönnit ja TAB-merkit kursorin ympäriltä, jättää jäljelle yhden (just-one-space)
C-X C-O tuhoaa tyhjät rivit kursorin ympäriltä, jättää yhden, jos rivejäon enemmän kuin yksi (delete-blank-lines)
M-D poistaa sanan kursorin oikealta puolelta (kill-word)
M-DEL poistaa sanan kursorin vasemmalta puolelta (backward-kill-word)
C-K poistaa kaikki merkit kursorista rivin loppuun (kill-line)
M-0 C-K poistaa kaikki merkit kursorista rivin alkuun
M-K poistaa kaikki merkit kursorista lauseen loppuun (kill-sentence)
C-X DEL poistaa kaikki merkit kursorista lauseen alkuun (backward-kill-sentence)
C-W poistaa merkityn alueen (kill-region)
M-Z merkki poistaa kaikki merkit kursorista seuraavaan merkkiin saakka (zap-to-char)
M-W kopioi merkityn alueen palautuspuskuriin (copy-region-as-kill)
C-Y palauttaa viimeksi poistetun tekstin (yank)
C-X U peruuttaa viimeksi tehdyn muutoksen tämän käskyn voi toistaa, jolloin se peruuttaa viimeistä edellisen muutoksen (myös muun kuin poiston) jne. (advertised-undo)
Muita toimintoja. Lopuksi vielä muutamia muita usein tarvittuja käskyja ja toimintoja. Lisää voi opiskella esimerkiksi emacsin info-järjestelmästä, joka sisältää mm. koko GNU-emacsin manuaalin yksinkertaisessa hypertekstimuodossa (käynnistyy C-H I).
C-H C-H aputoiminta (help-for-help)
C-H A näyttää listan säännölliseen lausekkeeseen sopivista käskyistä (command-apropos)
C-H T käynnistää engalnninkielisen GNU-Emacsin kurssin (help-with-tutorial)
C-T vaihtaa kursorin alla ja sen vasemmalla puolella olevat merkit keskenään (transpose-chars)
TAB sisentää toimintatilan sääntöjen mukaisesti (tabuloi teksti-moodissa, sisentää C-moodissa kielen rakenteen mukaan jne. (indent-for-tab-command)
M-I sisentää toimintatilasta riippumatta, t.s. lisää aina sopivan määrän välilyöntejä tai TAB-merkin (tab-to-tab-stop)
C-X TAB sisentää merkityn alueen (indent-rigidly)
ESC num numeerinen argumentti seuraavalle käskylle: emacs suorittaa seuraavan käskyn tai lisää seuraavan merkin lisätään num kertaa (digit-argument)
M-Q täyttää sen kappaleen, jossa kursori on (fill-paragraph)
M-1 M-Q täyttää ja tasaa sen kappaleen, missä kursori on
ESC num C-X F asettaa rivityskohdan sarakkeeseen num, t.s. jos sana ulottuu sarakkeen num oikealle puolelle, se siirtyy tasauksessa ja täytössä seuraavalle riville (set-fill-column)
C-X C-S tallentaa tiedoston, jos siihen on tehty muutoksia (save-buffer)
C-X S tallentaa kaikki puskurit, joihin on tehty muutoksia, pyytää varmistuksen (save-some-buffers)
C-X C-W kirjoittaa puskurin tiedostoon, kysyy tiedoston nimen (write-file)
C-G keskeyttää suoritettavana olevan käskyn (keyboard-quit)
C-Q lisää seuraavan merkin tekstiin sellaisenaan, vaikka merkki olisi emacsin käsky merkin voi antaa myös kolminumeroisena oktaalilukuna (quoted-insert)
M-X pyytää komentorivillä (minibuffer) käskyn ja suorittaa sen (execute-extended-command)
M-C-P siirtää kursorin taaksepäin sulkulausekkeen yli pysyen samalla tasolla (backward-list)
M-C-U siirtää kursorin taaksepäin sulkulausekkeen yli siirtyen yhden tason ylöspäin (backward-up-list)
M-C-N siirtää kursorin eteenpäin sulkulausekkeen yli pysyen samalla tasolla (forward-list)
M-C-D siirtää kursorin eteenpäin sulkulausekkeen yli siirtyen yhden tason syvemmälle (down-list)
M-C-B siirtää kursorin taaksepäin ohjelmointikielen yksikön (muuttujan, avainsanan, sulkulausekkeen, muun rakenteen) yli sen alkuun (backward-sexp)
M-C-F siirtää kursorin taaksepäin ohjelmointikielen yksikön yli sen loppuun (forward-sexp)
auto-fill-mode siirtyy automaattitäyttötilaan tai pois siitä
overwrite-mode siirtyy lisäystilasta päällekirjoitustilaan tai takaisin
replace-string ehdoton korvaus: kysyy kaksi merkkijonoa, korvaa ensimmäisen kaikki esiintymät toisella
goto-line kysyy rivin numeronja siirtää kursorin annetulle riville
recover-file palauttaa tiedoston viimeisen automaattivarmuuskopion tasalle2
untabify korvaa merkityn alueen tab-merkit sopivalla määrällä välilyöntejä
tabify korvaa merkityllä alueella peräkkäiset välilyönnit sopivilla tab- ja välilyöntimerkkien yhdistelmillä
center-line keskittää rivin, jolla kursori on vasemman marginaalin ja rivityssarakkeen väliin
manual-entry kysyy hakusanan ja näyttää sitä vastaavan manuaalisivun uudessa ikkunassa
word-search-forward sanahaku eteenpäin: hakuargumentiksi annetaan yhdellä välilyönnillä erotettuja sanoja, emacs hakee tekstistä samanlaisen sanajonon riippumatta sanojen välissä olevista välilyönneistä, rivinvaihdoista ja välimerkeistä (myös word-search-backward)