Emacs, vol. 2


Markkinoilla on useita tekstieditoreja ja Emacs on yksi niistä, mutta Emacs on paljon muutakin, mutta varsinainen tekstinkäsittelyohjelma sanan perinteisessä merkityksessä se ei ole, sillä Emacsia ja MS Wordia tai LibreOffice Writeria ei oikein voi verrata keskenään. Tekstinkäsittely on kuitenkin Emacsissa keskeisessä roolissa tavalla tai toisella, sillä Emacsin laaja ohjelmointikielikirjasto mahdollistaa Emacsin käytön ohjelmoinnissa, Emacsilla voi viedä tiedostoja pdf- ja LaTex-muotoon, Emacs taipuu akatemiiseen kirjoittamisen todella hyvin mm. lähdeviiteautomatisoinnin myötä jne.

Näppäimistökeskeisyys

Emacs on näppäimistökeskeinen ohjelma ja se on ensi alkuun todella outoa. Emacsia voi käyttää kyllä hiirelläkin, mutta helpointa on vain tottua näppäimistön käyttöön. Suurin murhe on muistaa ulkoa eri näppäinyhdistelmiä, joissa loppujen lopuksi on tietty logiikka, mutta vähin erin käytön myötä eri yhdistelmät alkavat jäädä mieleen. Ylipäätään normaaliohjelmiin verrattuna Emacsin logiikka on erilainen ja se yhdistettynä näppäinohjaukseen onkin usein suurin kynnys aloittaa ja oppia Emacsin käyttö. Seuraava kynnys tulee opettelussa, sillä etenkin ei-koodaamiseen suuntautuneelle ihmiselle Elispin (Emacs Lisp) syntaksi ja käyttö voi olla haasteellista, mutta netistä löytyy paljon ohjeita ja esim. toisten käyttäjien konfigurointitiedostoja, joista parhaat palat poimimalla saa kasattua itselleen toimivan konfigurointitiedoston. Valittuja paloja poimiessa on hyvä pitää mielessä se, että Emacsin eri jakeluversioilla on usein toisistaan hitusen poikkeava syntaksi ja se aiheuttaa välillä harmaita hiuksia. Tämä näppiskeskeinen toimintatapa on alkanut juurtua niin voimakkaasti omaan työvirtaani, että Windows-pohjaisella työkoneellani Word-dokumentteja kirjoitellessani painan joskus Esc :w välitallentaakseni tekstin tai saatan painaa i-kirjainta päästäkseni tekstinmuokkausmoodiin.

Erilaiset jakeluversiot

Emacsista on useita eri jakeluversioita ja Vanilla on joidenkin mielestä se ainut ja oikea, Doom Emacs, Spacemacs, Lambda-Emacs, Awesome-Emacs, Prelude jne., joilla jokaisella on omat piirteensä, mutta joista jokainen pohjautuu Vanillaan, eli Emacsin alkuperäiseen versioon. Näihin kaikkiin on saatavilla Vim-moodi, eli evil-mode, joka on Doom Emacsissa oletuksena jo asennusvaiheessa ja näin näppisuskovaiset näpyttelijät tuntevat olonsa heti kotoisaksi Emacsin parissa. Koska aloin käyttää Vimiä ennen Doom Emacsia, on tuo evil-mode minullekin tuttu ja näin ollen voin käyttää kahta eri ohjelmaa samoin näppäinkomennoin – hyvin pitkälle. Vanillan ja eri jakeluversioiden välillä näppäinkomennoissa on eroja, joten tieto tulee yleensä hakea jakeluversion mukaan, vaikka monesti Vanillan ratkaisu toimii myös muissa versioissa.

IDE, WM, OS vai jotain muuta?

Emacsin voi käsittää IDE-tyyppisenä ohjelmana, eli kehitysympäristönä, jossa koodi taipuu näpyttelijänsä tahdon mukaan ja tätä ympäristöä käyttäjä voi säätää halunsa mukaan. Jotkut ovat korvanneet oman ikkunaympäristönsä kuten XFCE:n tai Gnomen Emacsilla ja tällöin Emacs huolehtii ikkunoinnista, mutta käyttöjärjestelmäksi Emacs ei taivu. Emacsiin on olemassa kaikenlaisia sovelluksia ja lisäosia yms. kuten nettiselain, radio, terminaali jne., joten periaatteessa kaikki ruutuaika on mahdollista viettää täysin Emacs-ympäristössä, mikäli jostain syystä niin haluaa. Itse en ole lähtenyt tälle linjalle, enkä lähdekään, sillä käytössäni on joitain sovelluksia, jotka pyörivät täysin omassa ympäristössään, eikä niitä ole mieltä alkaa tunkea Emacs-ympäristöön.

Lähinnä tämän alaotsikon pointti on se, että Emacs taipuu melkeinpä vaikka minkälaiseen käyttöön. Emacs hyödyntää ikkunoita, työtiloja ja buffereita, millä on iso etu siinä, ettei tarvitse avata useita erillisiä ikkunoita eri tehtäviä varten, vaan kaikki toimii yhden ikkunan sisällä, jota voi jakaa pienempiin ikkunoihin, siihen voi lisätä ja nimetä erilaisia työtiloja ja jokaiseen työtilaan voi avata erillisiä buffereita, jotka ovat kuin työtiloja, mutta eivät kuitenkaan. Näiden ikkunoiden, työtilojen ja buffereiden välillä vaihdellaan yksinkertaisin näppäimistökomennoin. Itselläni ei ole ollut tarvetta mennä näin pitkälle ja olenkin helpottanut elämääni määrittämällä käytettävään ikkunaan tabit, joiden avulla on helpompi käsitellä useampaa tiedostoa yhtä aikaa.

Eri moodit: ohjelmointi, Markdown, org-mode ja auto-tangle

Nyt tullaan Emacsin erikoisuuteen ja samalla vahvuuteen, sillä kaikki otsikossa mainitut asiat voi tehdä samassa tilassa, mikäli näin haluaa, mutta jokaista voi käsitellä omana tilanaankin, kuten itse teen. Emacsin tilat aukeavat sen mukaan, minkä tiedostopäätteen annat perustamallesi tiedostolle tai mikä tiedostopääte avattavassa ohjelmassa on, esim. Emacsin konfigurointitiedosto config.el aukeaa suoraan elisp-tilaan, jolloin syntaksintunnistus toimii automaattisesti ja kirjoitan tätä blogia org-tilassa tiedostopäätteen ollessa .org. Markdown-tiedostot aukeavat päätteellä .md ja niin edelleen. Suurin etu Emacsissa on se, että tiedostot ovat pääasiassa aina tekstitiedostoja, eli tiedostot saa käytännössä auki millä tahansa ohjelmalla tiedostokokojen pysyessä maltillisen pieninä. Esimerkiksi tämä tiedosto, johon kirjoitan blogejani sisältää 24 500 sanaa ja on kooltaan vain 205 KiB, vaikka teksti sisältää erilaisia muotoiluja.

Otsikossa mainittu auto-tangle on hyödyllinen toiminto, sillä Emacsia voi käyttää pelkästään esim. org-modessa, jolloin kaikki kirjoittaminen tapahtuu vain tässä tilassa ja jolloin vapaamuotoisen tekstin kirjoittaminen koodin sekaan on paljon helpompaa kuin koodaustilassa ja koodiblokit huolehtivat siitä, että Emacs tunnistaa koodiosiot koodiksi. Tällöin perustetaan kaksi tiedostoa, eli esim. config.org ja config.el, joista kirjoituspohjana toimii config.org ja auto-tangle siirtää koodiblokkien sisältämän tiedon config.el-tiedostoon jälkimmäisen ollessa koko ajan puhtaasti koodia sisältävä tiedosto.

Merkittävä etu Emacsin org-modessa on, että org-dokumentit voi viedä helposti esimerkiksi html-, markdown-, LaTex- tai pdf-muotoon ja vietäviä mahdollisia tiedostomuotoja on todella paljon. Emacs soveltuukin mainiosti kaikenlaiseen kirjoittamiseen, on teksti sitten koodia, akateemista tekstiä lähdeviitteineen, puhdasta fiktiota tai jotain muuta.

Kirjoitusmoodit kuten Olivetti, Writeroom, DarkRoom

Kirjoittaminen Emacsilla, kuten muillakin editoreilla voi olla hankalaa, jos ikkuna on suuri ja silloin teksti rivittyy koko ikkunan leveydelle. Emacsille on olemassa kirjoittajille suunnattuja laajennuksia, joiden avulla tekstin leveyden voi säätää kiinteäksi ja tällöin kirjoittamiskokemus on huomattavasti mukavampi ja tällaisia laajennuksia ovat mm. Olivetti, Writeroom ja Darkroom. Itse käytin hetken aikaa Olivettia sen yksinkertaisuuden vuoksi. Kokeilin Darkroomia ja siinä ruudun saa tekstiä lukuunottamatta täysin tyhjäksi, jolloin kirjoittajan huomio keskittyy vain ja ainoastaan kirjoitettavaan tekstiin. Säädin tekstin leveydeksi 90 merkkiä, joka on tuntunut luontevalle ja helpolle lukea/kirjoittaa ja näin ollen on aivan sama, vaikka kirjoitusikkunani täyttäisi koko 34″ ruutuni, sillä tekstiosuus on vain 90 merkkiä leveä. Itselläni olivetti-mode oli automaattisesti päällä Emacsia käynnistäessäni, mutta määritin konfigurointitiedostossa kuitenkin pikanäppäimen, jolla saan normaalitilan tarvittaessa käyttöön, sillä esim. Elispin koodinpätkiä katsellessa tuo 90 merkkiä voi rikkoa pitkät rivit ikävästi ja lopputuloksena on vaikealukuista tekstiä. Jos päädyt kokeilemaan Emacsia ja haluat kirjoittaa ilman häiriötekijöitä, suosittelen tätä laajennusta, joskin itse poistin Olivetti-moodin ja säädin konfigurointitiedostoa siten, että koodimoodissa kirjoitustilan marginaaleja ei ole, kun taas kirjoitusmoodissa marginaalit ja tekstin tietty leveys tulevat käyttöön automatik.

Agenda, Journal ja Roam (tai itse asiassa org-Agenda, org-Journal ja org-Roam) sekä tagit

Aikataulujen ja tehtävien hallinta sekä erilaisten päiväkirjojen ja muistiinpanojen, kuten zettelkasten, kirjoittaminen on nykyaikana muotia ja tässä tehtävässä Emacs pääsee loistamaan monipuolisuudellaan. Muun muassa otsikossa mainitut laajennukset tekevät järjestelmällisestä elämästä helpompaa, kun jokaista asiaa varten ei tarvitse käyttää omaa sovellustaan.

Kuten kaikessa kirjoittamiseen liittyvässä, on tageilla suuri merkitys tiedon järjestelyssä, etsimisessä ja eri osien koostamisessa. Emacsin tagisysteemi on vähän omalaatuinen, mutta erittäin toimiva ja käytänkin sitä itse satunnaisesti eri asioiden merkkaamiseen tiedon myöhempää hakua ja käyttöä varten.

Modulaarisuus ja eLisp

Emacsin etu on modulaarisuus, sillä voit ottaa käyttöön vain haluamiasi ominaisuuksia perusominaisuuksien lisäksi ja näin sovelluksen koko pysyy maltillisena, joskin Emacsin vaatima tilantarve on kaikin puolin hyvin vaatimaton, vaikka siihen lisäisi useita erilaisia ominaisuuksia. Erilaisia moduleita on niin perusrepoissa kuin erikseen ladattavinakin, mutta useimmiten kaikki toimii joko lisäosan lataamisella näppäinkomennoin tai sitten konfigurointitiedostoon lisätään pieni koodinpätkä, jolla lisäosa alkaa toimia ja mikä parasta, yleensä tätä lisäosaa voi muokata toimimaan siten tai näyttämään sellaiselta, kuin itse haluaa. Vain taivas on rajana, mikäli taidot riittävät. Oma kohdalla taitotaso ohjelmoinnin suhteen on ahterista, joten Google on tullut tutuksi ja tunnetustihan yritys ja erehdys on paras tapa oppia.

Lopuksi

Emacsin etu ja samalla haitta on se, että se on ollut olemassa jo noin 60 vuotta. Tässä ajassa it-maailma on muuttunut paljon ja niin on Emacskin, mutta ei lähellekään niin paljon kuin olisi voinut olettaa. Se ei tarkoita sitä, että Emacs olisi vanhanaikainen, vaan sitä, etteivät Emacsin käyttöön liittyvät perusasiat ole muuttuneet maailman muuttuessa. Emacsin käyttöönotto vaatii uskallusta, pitkää pinnaa ja oman toiminnan virheensietoa, sillä se kuuluisa Karjalan mänty osuu otsaan monta monituista kertaa etenkin alkutaipaleella.

Ameriikan markkinoilla puhkutaan ja puhistaan vallan mahdottoman paljon termeillä /productivity/ ja /workflow/ ja iso osa kouhotuksesta on sitä, ettei hiirtä tarvitse käyttää kun ohjelmia ohjataan suoraan näppäimistöltä (ja silti sormet irtoavat näppikseltä esim. kahvikupin nostamiseksi, mikä vie enemmän aikaan kuin hiiren käyttö…). Ei siinä mitään, puhkukoon ja puhiskoon, meidän kulttuurissamme noilla kahdella asialla ei ainakaan vielä ole niin suurta merkitystä. Minun työvirtani tai tuottavuuteni ei kärsi siitä, että käytän välillä hiirtä ja siksi onkin ollut todella outoa opetella niin Vimiä kuin Emacsiakin, sillä hiiri on todellakin sivuosassa näiden kahden ohjelman kanssa. Tuottavuudessani tai työvirrassani en kuitenkaan ole huomannut muutosta.

Kaiken kaikkiaan tämän kirjoituksen voinee kiteyttää kahteen idiomiin:

”Emacs ei ole tekstieditori, Emacsissa on tekstieditori.”
”Jos mietit, onko Emacsissa jotain ominaisuutta, todennäköisesti sellainen on.”



Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *