Teksti/koodieditorin valinnasta

Minulla on ollut tuo Cursive IDE pitkään harrastuskäytössä. Se on kuitenkin aika kallis ohjelma kaupallisessa käytössä, joten ajattelin, että opettelisin käyttämään jotain ilmaista ohjelmaa ihan tulevaisuutta ajatellen. Cursivessa ei siis varsinaisesti ole mitään vikaa, se on erittäin hyvä ohjelma.

Toki kaiken maailman VS Codet, Atomit yms. on kokeiltu. Kaikissa niissä harvinaisempien ohjelmointikielien lisäosat on sen verran heikossa hapessa, ettei hirveästi kiinnosta taistella niiden kanssa. Piti sitten ihan huvikseen kokeilla Emacsia, koska sille on saatavissa paljon ylistetty Cider -lisäosa. Pakko sanoa, että on kyllä erittäin miellyttävä kokemus, etenkin kun lisäosien hallintajärjestelmä on sisäänrakennettu editoriin itseensä. Lisäksi tuo Emacs Lisp on kielenä paljon miellyttävämpi, kuin Vimin vastaava kieli, joten se kannustaa kirjoittamaan omiakin lisäosia editorille.

Emacsille löytyy muuten paljon muitakin ylistettyjä lisäosia, kuten SLIME, joka on tarkoitettu Common Lisp -kehitykseen. En ole itse sitä vielä kokeillut.

Olen ollut pitkän linjan Vimin kannattaja, enkä edes osannut poistua Emacsista vielä joitain viikkoja sitten. Nyt on kuitenkin pakko sanoa, että jos on kaivautunut syvälle Vim-poteroon, eikä ole koskaan edes kokeillut Emacsia, niin kannattaa ehdottomasti kokeilla. Toki uuden editorin opettelu ja konffaaminen on vuosien mittainen prosessi, mutta kokeileminen ei maksa mitään.

Mitä editoria käytätte? Kaikki Emacsiin ja muihinkin editoreihin liittyvät vinkit ovat tervetulleita.

Melkein nolottaa vastata tähän, mutta käytän lähinnä kahta editoria: Nano:a, Kate:a.
Kummassakaan niistä ei ole hifistelyn aihetta.

1 tykkäys

Eipä niissä mitään vikaa ole, mikä nyt omaan käyttötarkoitukseen parhaiten sopii, olipa se sitten konffitiedostojen käpistely, kirjoittaminen tai ohjelmointi. Käytin itsekin nanoa ihan ensimmäisenä editorina, mutta vaihdoin aika nopeasti Vimiin konffattavuuden takia.

Emacs on paljon muutakin kuin editori. Koskapa en ko. ohjelmaan perehtynyt,
käytin jed -editoria, josta lienee myös graafisiin ympäristöihin xjed (joissakin
jakeluissa kuten Debian)
https://packages.debian.org/buster/xjed
https://packages.debian.org/buster/jed
Nykyisin tulee käytetyksi jakelujen oletuksena asentuvia editoreita.
Toki Vim:iä unohtamatta.

1 tykkäys

Kiitos loistavasta aiheesta! Tekstieditori on mahtava keskustelunaihe, kunhan vain pidetään päät kylminä eikä aleta tappelemaan…

Kun aloitin Linux-käytön joskus vuosia sitten, käytin Katea. Itselläni on siis lukkarinrakkautta sitä kohtaan. Mielestäni loistava tekstieditori, jossa on toiminnallisuutta vähän vaativampiinkin juttuihin.

Javaa olen kirjoitellut Java-IDE:llä, koska niissä vain on ylivoimainen tuki Javan kirjoittamiseen, ja koska Javassa koodia joutuu laittamaan läjään aika paljon. IDE ehdottaa puolet koodista valmiiksi.

Viime keväänä etsiskelin editoria, joka olisi pitkällisen investoinnin väärti. Lopulta päädyin Spacemacsiin, joka on Emacs-konfiguraatio Vim-syöttötilalla, nätillä teemalla ja suhteellisen helposti muistettavilla pikanäppäinasetuksilla. Sen käyttö tuntuu vähän kuin avaruusaluksella lentämiseltä, mutta on ollut enimmäkseen todella hauska kokemus! Tuntuu mukavalta ajatukselta, että editorini on monella tasolla todella vahvasti avoimen lähdekoodin projekti: sekä editori, sen lisäosat että jopa konfiguraatiokin ovat yhteisesti kehitettyjä. Olen tehnyt Spacemacsilla web-kehitystä.

Vim-näppäimien fani en ole ollut milloinkaan, mutta viime keväänä kyllästyin siihen, että eri editoreita käyttäessä joutuu luopumaan lähes kaikista oppimistaan pikanäppäimistä. Vim-komennot ovat erittäin laajasti saatavilla eri editoreihin, ja niinpä totesin, että ehkä on investoinnin väärti opetella ne. Näin editoria vaihtaessa suurin osa näppäinkomennoista seuraa mukana. En tiedä, onko mitään järkeä opetella Vim-näppäimiä, jos ei ole aikeissa koskaan käyttää Vimiä, mutta näin tämä nyt näemmä meni.

1 tykkäys

Näinpä. Vai pitäisikö melkein sanoa, että Emacs on kaikkea muuta, kuin editori sillä kyseessähän on oikeasti Lisp-tulkki, joka nyt vain sattuu olemaan oletuksena konfiguroitu editoriksi. :grinning:

Tuo on täysin totta. Javassa ja oikeastaan kaikissa muissakin “enterprise” -ohjelmointikielissä boilerplaten määrä on vaan niin jäätävä, että kyllä niissä on käytännössä oltava IDE, joka generoi puppulauseet automaattisesti. En tosin tiedä millä tasolla Emacsin Java, C# yms. moodit ovat. Toki mahdollisuuksien mukaan pyrin niitä kieliä välttelemään, mutta joskus niihinkin on vaan koskettava ja silloin Jetbrainsin Intellij -työkalut ovat olleet mitä oivallisin apu.

Hyvä editori on kuin hyvä ystävä ja tietysti aina parempi, että on yksi hyvä ystävä, jonka tuntee hyvin. Uskon todellakin, että vaikka Emacsin oppimiskäyrä on jyrkkä, on se silti sen opettelemisen vaivan arvoinen. Mietin itsekin Spacemacsia, mutta päädyin toistaiseksi ihan vanilja Emacsiin. On olemassa myös sellainen projekti, kuin Prelude. Se on Ciderin kehittäjältä.

Eräs hyvä lisäosa, jonka löysin on FlyCheck, se toimii vaikka minkä ohjelmointikielen kanssa ja se on saatavilla Melpasta.
https://www.flycheck.org/

Tuossa on muuten aika mielenkiintoinen video Emacsista:

Tuo oli aika jännä juttu, että Emacsissa editoria voi muokata suoraan lennosta ilman, että sitä tarvitsee käynnistää uudelleen. Voi vaan kirjoittaa koodia ja evaluoida sen suoraan. Lisäksi jokaisen näppäinyhdistelmän takaa löytyvän komennon voi jäljittää ja lisäksi sen lähdekoodia voi tarkastella ja muokata. Esim. M-x find-function RET next-line RET antaa tuon:

(defun next-line (&optional arg try-vscroll)
  "..."
  (declare (interactive-only forward-line))
  (interactive "^p\np")
  (or arg (setq arg 1))
  (if (and next-line-add-newlines (= arg 1))
      (if (save-excursion (end-of-line) (eobp))
	  ;; When adding a newline, don't expand an abbrev.
	  (let ((abbrev-mode nil))
	    (end-of-line)
	    (insert (if use-hard-newlines hard-newline "\n")))
	(line-move arg nil nil try-vscroll))
    (if (called-interactively-p 'interactive)
	(condition-case err
	    (line-move arg nil nil try-vscroll)
	  ((beginning-of-buffer end-of-buffer)
	   (signal (car err) (cdr err))))
      (line-move arg nil nil try-vscroll)))
  nil)

Emacsista todella kiehtovan editorin tekee juuri tuo Lisp. Emacs tuntuu olevan ihan toiselta planeetalta verrattuna kilpailijoihin, kun kyseessä on editori, jolla voi muokata ja laajentaa sitä editoria itseään käyttämällä kieltä, jolla voidaan ohjelmoida sitä kieltä itseään esim. lisäämällä kieleen uutta syntaksia, muokata kielen semantiikkaa ja oikeastaan tehdä ihan mitä vaan.

Vähän eksyn aiheesta, mutta tuossa on tosi mielenkiintoinen artikkeli viime vuodelta:

En tiedä olenko vain tottunut, mutta ainakin Spacemacsin käyttäminen on ollut helppoa, eikä oppimista niin kauheasti. Toki Vim-näppäinkomennot piti opetella, mutta sen lisäksi ei muuta ole tarvinnut tehdä. Editorin konfiguroimista en ole tehnyt juuri nimeksikään, vain kääntänyt jotain ominaisuuksia päälle.

Lisp-ohjelmointia en osaa, enkä ole suunnitellut opettelevanikaan. Se on tavallaan harmi, koska editorin laajentaminen olisi varmasti tosi hauskaa!

1 tykkäys

Ite oon aika mieltynyt tohon Emacsiin, toki oon käyttänyt ja käytän myös muitakin editoreitakin kun on sille tarvetta, mut toi Emacs sopii mun käyttöön erittäin hyvin. Sen toiminta on järkevää, eikä mun tarvii murehtia, että missä tilassa mä teen mitäkin, kuten Vi/Vim:in kohalla.

Vaikka Emacsin graafinen käyttöliittymä ei oikein pelitä kunnolla KDE:n kanssa, niin käytän sitä komentorivin/terminaalin puolella. Jos en jaksa avaa terminaalia, niin sitten mennään Katen kanssa. Sekin on ihan hyvä.

Yks parhaimmista lisäosista/mode joihin olen tutustun Emacsin parissa, on Org-mode. Vaikka en ole käyttänyt sitä kovinkaan pitkään, niin siitä on todella paljon hyötyä mulle.

1 tykkäys