Hlavní navigace

Chvalozpěv na Joea

Michael Polák 14. 12. 1999

Zdaleka ne každý uživatel unixového operačního systému v sobě najde dostatek chuti či trpělivosti seznamovat se s editorem vi. A právě pro takové uživatele může být vhodným editorem třeba právě joe, jehož recenzi si můžete právě teď přečíst.

Operační systémy typu Unix si po celá desetiletí uchovávaly jistou auru exkluzivnosti, přístupnosti pouze pro elitu. Od adeptů na správce systému se vyžadovalo podstoupit proces postupného zasvěcování, ne nepodobný přijímání do zednářské lóže. V rámci iniciace bývalo nutné podstoupit i zkoušku nejtěžší, a sice začít používat textový editor vi.

Troufám si říct, že vi je editor, který svoji dobu předběhl rovnou o několik tisíciletí. Především má svoji osobnost – nejde o obyčejný program, ale o AI (=artificial inteligence). Posuďte sami: při svém prvním setkání s editorem vi jsem se dostal do stejné situace, jako všichni ostatní začátečníci, a nebyl jsem schopen program ani ukončit. Musel jsem proto ukončit celé telnetové spojení a přihlásit se znovu. A hle: „You have new mail.“ Pochopitelně, šlo o značně vyčítavý dopis od samotného editoru vi. Stěžoval si, že prý sem se ho pokusil zabít, nebo něco v tom smyslu.

Rozhodl jsem se, že bude pro nás oba lepší, když vzájemný styk omezíme na nezbytné minimum, tzn. občasný pohled na hypnoticky prázdnou obrazovku s jediným sloupcem nadtržítek (vlnovek) podél levého okraje, následovaný zdvořilým, leč rezolutním rozloučením „:q!“ (pozor – uvozovky nejsou součástí příkazu. Po jejich stisknutí by se jistě stalo něco temného a osudového, nicméně bohužel nevím co…).

Asi nejsem sám, kdo před tím, než narazil na Linux používal DOSovský program T602 a Borlandí programátorské editory (Turbo Pascal, Turbo Basic, Turbo C). S editorem Turbo Pascalu jsem se setkal dokonce ještě pod CP/M. Moje sympatie k Unixu značně vzrostly, když jsem se dozvěděl že pro podobně postižené jako jsem já je ve většině Unixových systémů včetně Linuxu k dispozici editor joe.

Zadal jsem příkaz „joe“, a rázem jsem zapomněl na to, že bych si snad měl ve světě Unixu připadat jako nezvaný host. V pravém rohu obrazovky se objevilo vlídné „Ctrl-K H for help“, což jsem také učinil – a joe se tím pádem pro mě stal spolu s poštovním klientem pine zcela nejnepostrada­telnější Unixovou aplikací.



Asi jedinou podstatnou odlišností editoru joe od DOSovských programů je to, že blok se přesouvá Ctrl-K M, místo tradičního Ctrl-K V. Šlo by to lehce předefinovat, ale implicitní rozmístění kláves v Joeovi má svou logiku, a vyplatí se na něj zvyknout.

Editorem joe je možné celkem snadno infikovat jiný systém (tedy pokud znáte rootovské heslo). Okopírovat stačí /usr/bin/joe, usr/lib/joe/joerc a volitelně /usr/man/man1/j­oe.1.

V některých distribucích Linuxu jsem se setkal s tím, že soubor ~/.joerc (vzniklý z /etc/skel/.joerc) byl vadný a joe dělal dost divné věci; standardní /usr/lib/joe/joerc se ale vyrovná s čímkoliv, co je odvozené od terminálu vt102, takže pokud vás joe zlobí, postačí vetšinou smazat soubor .joerc ve vašem domovském adresáři (správce systému by měl smazat i nepodařený originál v adresáři /etc/skel) Pokud používáte nějakou exotickou hodnotu proměnné TERM, můžete definovat ještě proměnnou JOETERM, abyste joea poněkud uklidnili (např. export JOETERM=vt100).

Joe sám sebe definuje jako „mode-less ASCII-text screen editor“. Tím je myšleno to, že program se nachází pouze v jednom základním stavu (dokonce i když si necháte přes polovinu okna zobrazit nápovědu) a nemá ani žádné menu, které by omylem mohlo být aktivní místo okna editoru. Když si uvědomíte, kolik jiných „moderních“ programů vás nutí být neustále ve střehu a přemýšlet, nad kterým objektem je zrovna myš, který objekt má „focus“ apod., tak si tuto jednoduchost oblíbíte.

To ale neznamená, že jde o program primitivní. Snad jediná věc, kterou joe (zatím) neumí, je syntax highlighting. Jinak nabízí obrovskou škálu možností spolupráce s ostatními unixovými programy a obsahuje spoustu triků, které ulehčí život zejména programátorům v céčku (ale i v ledasčem jiném). Řadu věcí, které joe umí, jsem slyšel zmiňovat mezi nenahraditelnými přednostmi editorů jako je vi nebo emacs, ale i jiných. Námatkou: Ctrl-K \ vám umožní opakovat libovolný další znak nebo příkaz. Ctrl-K / „prožene“ blok textu libovolným unixovým příkazem – je to moc pěkné už pro otestování, co ty příkazy vlastně dělají. Začátečníkům namátkou doporučuji sort, uniq, grep… autor editoru zase doporučuje zkusit „tr a-z A-Z“.

Programátoři ocení volání programu stylem „joe +100 soubor.c“, který nastaví kurzor přímo na danou řádku v souboru (v uvedeném případě řádku 100 ;-).

Když je editor joe násilně ukončen a přitom obsahuje neuložený soubor, uloží editovaný text do souboru DEADJOE, což sice není tak efektivní jako zasílání dopisů, nicméně to bohatě postačuje pro běžnou práci.

Editor joe umí samozřejmě používat různá makra a záložky, umí indentovat bloky stejně jako Borlandí editory („Ctrl-K ,“ a „Ctrl-K .“), umí obdélníkové bloky ve stylu T602 (zapínají se Ctrl-T X), při prohledávání textu je možné používat speciální typ regulárních výrazů, při otvírání souborů je možné pomocí klávesy Tab použít autocomplete, nebo si vybírat soubor pomocí kurzorových kláves. Samozřejmostí je zarovnávání celého odstavce textu (Ctrl-K J) a důkladný undo-buffer (Ctrl-K _). Umí editovat více souborů najednou. Umí editovat vyhrazenou část souboru – manuálová stránka uvádí poněkud drastický příklad „joe /dev/fd0,508,2“ – pokud prý chcete editovat bajty č. 508 nebo 509 na disketě ;-)

Jako perličku nabízím návod na definici makra, které vám pomůže vybrat odstavec textu jako blok. Makro bude dostupné na zkratce Ctrl-K 1 a nastaví začátek bloku na začátek odstavce a konec bloku na konec odstavce. Potom už můžete používat podobné finty jako zarytí vi-čkáři, protože s blokem už lze dělat cokoliv (viz Ctrl-K /). Místo „Ctrl-K“ píšu „^K“ , (Enter) znamená stisk klávesy Enter. Intuitivní definice makra Ctrl-K 1 vypadá takto:

^K[1^KF\n\n(En­ter)B(Enter)^KB^N^N^­KF\n\n(Enter)(En­ter)^KK^K]

Je pravda, že joe se většinou používá pro méně náročné operace, kde operace Ctrl-Z, Ctrl-X, Ctrl-W a Ctrl-Y jsou více než postačující. Ale na pomalých linkách se definice uvedeného makra může hodit. Pokud si ho chcete uložit do vašeho souboru .joerc, použijte příkaz „Esc d“, který vám všechna definovaná makra vypíše na pozici kurzoru ve formátu pro soubor .joerc – například námi definované makro se vypíše jako:

ffirst,„\n\n“,rt­n,„b“,rtn,mar­kb,dnarw,dnar­w,ffirst,„\n\n“,rt­n,rtn,markk ^K 1 Macro 1

Poté co ho zkusíte dát do souboru .joerc (který vytvoříte zkopírováním /usr/lib/joe/joerc do svého adresáře), zjistíte, že to stále ještě není to pravé ořechové, a odkomentujete v souboru .joerc (=přesunete na první pozici na řádce) klávesové zkratky „bop ^[ p Backwards paragraph“ (Esc p) a „eop ^[ n Forwards paragraph“ (Esc n); naše makro na označování odstavce se se znalostí těchto příkazů dá nyní daleko elegantněji a funkčněji zapsat do .joerc v následující podobě:

bop,markb,eop,markk ^K 1

Makro na smazání odstavce byste si nyní mohli napsat jako domácí úkol :-) …ale přece jenom, pro ty línější z vás:

bop,markb,eop,mar­kk,blkdel ^K 2

Závěr: joe se tváří velice nenápadně až primitivně, ale přitom je to zatraceně mocný nástroj. Pokud se vám ostřílení admini a hackeři vysmívají, že používáte místo vi nějakého ubohého joea, můžete je směle ignorovat, a poukázat na to, že joe je podle vás ideální editor např. na konfigurování sendmailu pomocí přímé editace /etc/sendmail.cf (mě se to už párkrát stalo :-). Jedinou nevýhodou editoru joe je že se nachází na svazku /usr a tudíž chybí v „holém“ systému bez přimountovaných filesystémů, ale budoucí distribuce Linuxu snad tuhle „chybu“ opraví…

Někdy se zkrátka vyplatí ignorovat staletími prověřené tradice a jít vlastní cestou, aneb „lameři všech systémů, spojte se“ ;-)

Našli jste v článku chybu?

27. 12. 1999 16:09

Karel Berkovec (neregistrovaný)

Ono asi zalezi take na tom, k cemu se dany editor
pouziva. Pokud je - jak je v clanku uvedeno -
clovek zvykly na T602 a Borland IDE, volil bych
editor na bazi 'we', resp. 'wpe' (byva ve standardnich instalacich RH).
Za nejdokonalejsi povazuji editor 'rhide'. Pro ty,
co jej neznaji, budiz poznamenano, ze se jedna
o vzhledove stejny a funkcne obdobny (lepsi) editor,
jako je Borland IDE. (doporucuji posledni beta-vz).
Osobne jej pouzivam pro programovani v C/C++.
Naucit se 'vi', ovsem povazuji za z…








21. 12. 1999 18:04

F. Hroch (neregistrovaný)

Cau
ja editor joe nepouzivam, ale casto jeho klon jmacs.
Ovlada se podobne jako emacs. Ze zakladnich
prikazu nema jen sloupcove bloky (rectangles).
Doporucuji dat na do /etc/profile:
export VISUAL=joe
aby se nemusel normalni uzivatel s vi vubec setkat.
Jinak doporucuju dat alias joe='joe -asis' kvuli cestine.
Nekteri nasi uzivatele si stezuji, ze nejde blok oznacit
pomoci shift-sipky a ze blok neni videt.










Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Podnikatel.cz: Platební brány a EET? Stále s otazníkem

Platební brány a EET? Stále s otazníkem

Vitalia.cz: Jak koupit Mikuláše a nenaletět

Jak koupit Mikuláše a nenaletět

Vitalia.cz: Vláknina: Rozpustná, nebo nerozpustná?

Vláknina: Rozpustná, nebo nerozpustná?

Podnikatel.cz: Přivýdělek u Airbnb nebo Uberu? Čekejte kontrolu

Přivýdělek u Airbnb nebo Uberu? Čekejte kontrolu

Podnikatel.cz: Víme první výsledky doby odezvy #EET

Víme první výsledky doby odezvy #EET

Měšec.cz: Finančním poradcům hrozí vracení provizí

Finančním poradcům hrozí vracení provizí

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

120na80.cz: Rakovina oka. Jak ji poznáte?

Rakovina oka. Jak ji poznáte?

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Root.cz: Vypadl Google a rozbilo se toho hodně

Vypadl Google a rozbilo se toho hodně

Vitalia.cz: Baletky propagují zdravotní superpostel

Baletky propagují zdravotní superpostel

Lupa.cz: Avast po spojení s AVG propustí 700 lidí

Avast po spojení s AVG propustí 700 lidí

Lupa.cz: UX přestává pro firmy být magie

UX přestává pro firmy být magie

DigiZone.cz: NG natáčí v Praze seriál o Einsteinovi

NG natáčí v Praze seriál o Einsteinovi

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Podnikatel.cz: EET zvládneme, budou horší zákony

EET zvládneme, budou horší zákony

Podnikatel.cz: 1. den EET? Problémy s pokladnami

1. den EET? Problémy s pokladnami

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu