9. maaliskuu 2011, 19:33

ZSH syntaksivärityksellä!

Tajusin eräs kaunis päivä, että ZSH voisi oman tekstinsyöttökoneensa ansiosta tukea myös reaaliaikaista syntaksivärjäystä. Komentokehote ottaa koodikieltä vastaan, joten miksi meidän pitäisi elää ilman värjäyksiä? Merkkijonojen korostus on jo osoittanut itsensä arvokkaaksi voimavaraksi.

Työkalun nimi on zsh-syntax-highlighting ja se ei juuri tarvitse asennuksia. Värit ovat oletuksena melko rumat ainakin Xtermissäni, joten on aika siirtyä miettimään jotain sopivia värösiä. Värien numerokoodit voi onneksi zsh:n koneistoon syöttää suoraan numeroarvoina, joten koko 8-bittinen paletti on mahdollisesti helpossa käytössä! Karttana on Ian Wardin kirjoittama ja minun kustomoima kartasto. Huomatkaa, että värit vaihtelevat termeittäin, joten kannattaa ajella oma versio. Kuva on näytteen vuoksi.

Tweakkailuun

Alkuperäiset värit ovat tämännäköistä:

Eli aika karmeata. Vielä tuollainen tumma sininen wildcardina. Siinä voisi nopeasti katsoen jäädä näkemättä ylimääräinen asteriski fataalissa rm-lausekkeessa. Väriä voi lennosta vaihtaa, esimerkin globbing -patterneja esimerkiksi seuraavasti:

ZSH_HIGHLIGHT_STYLES[globbing]="fg=214"

asettaisi kivan oranssin kaikelle sellaiselle, mikä kattaa useita tiedostoja. Väritysskriptin lähdekoodista näkeekin sitten, mitä kaikkea voi säädellä. Listaan ne:

Väriryhmä Oletustyyli
default ‘none’
unknown-token ‘fg=red,bold’
reserved-word ‘fg=yellow’
alias ‘fg=green’
builtin ‘fg=green’
function ‘fg=green’
command ‘fg=green’
hashed-command ‘fg=green’
path ‘underline’
globbing ‘fg=blue’
history-expansion ‘fg=blue’
single-hyphen-option ‘none’
double-hyphen-option ‘none’
back-quoted-argument ‘none’
single-quoted-argument ‘fg=yellow’
double-quoted-argument ‘fg=yellow’
dollar-double-quoted-argument ‘fg=cyan’
back-double-quoted-argument ‘fg=cyan’
assign ‘none’

Useimmat kohdat lienevät melko yksiselitteisiä. Kivasti erotellaan aliaksien, funktioiden ja suoritettavien ohjelmien välillä, joten saa komentoriville eri värisävyin kivaa eloisuutta.

Useimmat värit helppo hakea, mutta tiedostopolkujen värjäys askarruttaa. Oletus on melko kamala, alleviivaus. Mutta mitä siihen osaa muutakaan pistää? Toistaiseksi poistan siitä tyylit, joten se käyttäytyy kuten ennenkin: ei mitään värejä.

Vielä nuo sulut, jotka lasketaan toisaalla. Oletus on tummahko sininen tummaa taustaa varten, ei hyvä. Mutta sentään skripti osaa sisäkkäisiä sulkuja! Erinomaista. Sulkuja varten määrittelee vain listan eri värejä:

ZSH_HIGHLIGHT_MATCHING_BRACKETS_STYLES=(
    'fg=cyan,bold'
    'fg=cyan'
    'fg=green'
) 

Esimerkiksi ylläoleva määrittelee kolme eriväristä sulkua, joita jaksotellaan, jos joku oikeasti kirjoittaa vielä enemmän sisäkkäisiä lausekkeita.

Tulokset ovat toistaiseksi vielä hakemassa muotoaan:

Kuvassa kokeilen toisenlaisia lainauksia, vaikka määrä on valita vain yksi voittaja. Taustavalaistus auttaa hahmottamaan merkkijonojen reunoja, jos vaikka sattuu sellaisia olemaan useita lausekkeessa. Koko sininen juttu oli vain kokeilu. Yleensä olen valinnut keltaisen ja oranssin sävyjä. Nyt niihin voisi yhdistää vihreätä; sininen on yksinkertaisesti värikartankin perusteella hankalasti sotkettavissa muiden värien kanssa. No, pinkki olisi, mutta tulee liian voimakasta kontrastia.

Mukavaa, että tämä toimii hienosti.

Tageja: ,

---
---

---

Aiheen vierestä