Úvod. Konzolové textové editory ve Fedoře. e3. GNU nano. Jed. Joe. MCEdit (Midnight Commander Internal Editor).

Obsah

Úvod

Textové editory, tj. softwarové nástroje určené pro tvorbu a zpracování takzvaného čistého textu (plain text) popřípadě konfiguračních souborů, HTML/XHTML stránek či zdrojových kódů, jsou jedním z nejrozšířenějších typů aplikací vůbec, a to jak na osobních počítačích, tak i na serverech. Dokonce je možné s určitou nadsázkou prohlásit, že v současnosti by bylo jen velmi problematické nalézt nějaký osobní počítač, který by neměl ve svém operačním systému nainstalován alespoň jeden textový editor (ve skutečnosti jich však bývá nainstalováno větší množství, jak si ostatně řekneme v dalším textu). Textové editory nalezneme jak na Linuxu či OS X (TextEdit, Sublime Text), tak i na systémech Microsoft Windows, ať již se jedná o (nechvalně) známý a velmi jednoduchý Notepad[1] či o textové editory s rozšířenou a vylepšenou funkcionalitou, jakými jsou například Ultra Edit[2], Zeus[3] či známý a oblíbený tuzemský editor PSPad[4].

text-editor-gedit-logoObrázek 1: Logo editoru gedit, který bude popsán příště.

My se však v tomto článku budeme zabývat především textovými editory dostupnými přímo v repositářích systému Fedora, tj. takovými editory, které není zapotřebí překládat ze zdrojových kódů ani je instalovat z nestandardních repositářů. Článek je kvůli svému relativně velkému rozsahu probíraného tématu rozdělen do několika částí. V části dnešní si ve stručnosti popíšeme některé zajímavé a užitečné textové editory, které je možné spustit přímo v terminálu/konzoli. Část druhá bude zaměřena na textové editory vybavené grafickým uživatelským rozhraním, které je možné používat jak v Gnome Shellu, tak i v prostředí KDE, XFCE, Fluxboxu atd. V části třetí si pak popíšeme ty typy textových editorů, které jsou odvozeny od vi [5] (především se jedná o slavný Vim[6]) a samozřejmě též (už jen kvůli rovnováze) i editorem Emacs[7].

text-editor-emacs-logoObrázek 2: Logo editoru Emacs, jednoho z nejpoužívanějších textových editorů (nejenom) v systému Linux.

Konzolové textové editory ve Fedoře

Textových editorů, které je možné spustit v terminálu/konzoli, existuje v systému Fedora skutečně velké množství, což je však pochopitelné, neboť zpracování textových souborů, souborů s konfigurací či zdrojových kódů patří mezi každodenní činnosti jak administrátorů, tak i programátorů či v neposlední řadě autorů dokumentace či tvůrců webových stránek. V dnešním článku se budeme zabývat pěti vybranými textovými editory, které se od sebe odlišují jak množstvím nabízených funkcí a způsobem ovládání, tak i svou velikostí, která poněkud paradoxně nemusí s množstvím implementovaných funkcí přímo souviset. Jednu vlastnost však mají popisované aplikace společnou – jedná se o takzvané celoobrazovkové editory, na rozdíl od takzvaných řádkových editorů, mezi něž patří například ex[8] či ed[9]. Popsány budou editory e3, GNU nano, Jed, Joe a taktéž MCEdit (Midnight Commander Internal Editor).

text-editor-vim-logoObrázek 3: Největší současný rival Emacsu – editor Vim.

e3

Prvním celoobrazovkovým textovým editorem, který si v dnešním článku popíšeme, je aplikace, která se jmenuje e3. Již samotné pojmenování tohoto editoru naznačuje, že se jeho autor Albrecht Kleine snažil o vytvoření minimalistického nástroje, což se skutečně (alespoň podle mého názoru) povedlo. Textový editor e3 je totiž naprogramován v assembleru mikroprocesorů řady x86. Zdrojový kód původní verze e3 je uložen v jediném souboru s přibližně 6500 řádky optimalizovaného assembleru určeného pro překlad do 32bitového režimu (použít lze například známý assembler NASM). Pro 64bitový režim existuje jednoduchý skript, který zdrojový kód e3 jednoduše transformuje. Kromě toho existuje i šestnáctibitová verze editoru e3 určená pro systém DOS či pro šestnáctibitové (real mode) zavaděče a různé utility a současně i varianta e3 přepsaná do programovacího jazyka C, aby bylo možné tento editor používat například na počítačích vybavených mikroprocesory ARM či MIPS. My se však v dalším textu budeme zabývat pouze originální 32bitovou a 64bitovou variantou e3 naprogramovanou v assembleru.

text-editor-e3_installObrázek 4: Již z průběhu instalace editoru e3 je patrné, že se jedná o velmi kompaktní balíček.

Binární obraz e3 je v porovnání s ostatními dále popisovanými textovými editory velmi malý – podle použitého režimu (32bit/64bit) je spustitelný soubor /usr/bin/e3 velký přibližně 13 či 17 kB a žádné další soubory nejsou pro práci s e3 zapotřebí. Textový editor e3 přitom nabízí uživatelům poměrně velké množství funkcí. Asi nejzajímavější je existence několika režimů práce editoru – ten totiž dokáže napodobit editor WordStar (spuštěno přes link e3ws), Emacs (spuštěno přes link e3em), Vi/Vim (spuštěno přes link e3vi) Pico/Nano (spuštěno přes link e3pi) či NEdit (Nirvana Editor) (spuštěno přes e3ne). Režimy je možné dokonce přepínat i za běhu editoru a součástí je i obrazovka s klávesovými zkratkami (to vše je samozřejmě uloženo ve zmíněných 13 či 17 kB). e3 nabízí dokonce i funkci „undo“, obsahuje kalkulačku (dokáže spočítat i složitý aritmetický výraz zapsaný v textu!) a – což je v našich podmínkách velmi důležité – podporuje plnohodnotný osmibitový vstup znaků.

1Obrázek 5: Spuštění editoru e3 v režimu emulace klávesových zkratek WordStaru.

Vzhledem ke zcela minimální velikosti tohoto textového editoru asi nepřekvapí, že některé vlastnosti nejsou implementovány. Týká se to zejména podpory pro zarovnávání textu a automatického odřádkování i přerovnání odstavců, což je však funkce užitečná jen v některých případech, nikoli například při úpravách konfiguračních souborů či zdrojových kódů. Taktéž chybí podpora pro využití regulárních výrazů při hledání a nahrazování. To je však vyřešeno elegantním způsobem – funkcí pro poslání vybraného textu do filtru sed, což (znalým) uživatelům otevírá široké možnosti použití. e3 se pravděpodobně nestane jediným textovým editorem, který by byl vhodný pro všechny příležitosti, ovšem ukazuje, že i velmi krátký program dokáže být překvapivě mocný a přitom rychlý a současně nenáročný na systémové zdroje.

1Obrázek 6: Obrazovka s nápovědou je dostupná za všech okolností a přitom je vždy indikováno, jakou klávesovou zkratkou se nápověda zobrazí.

1Obrázek 7: Editace zdrojového kódu napsaného v programovacím jazyce C.

GNU nano

Druhým textovým editorem, s nímž se v dnešním článku alespoň ve stručnosti seznámíme, je editor nazvaný GNU nano [10]. V současnosti se jedná o poměrně známou aplikaci, a to především z toho důvodu, že je standardní součástí instalace mnoha distribucí Linuxu, což zjednodušuje konfiguraci a administraci systému i těm uživatelům, kteří neznají či nechtějí používat Vim (resp. jeho minimální instalaci dostupnou i v základní instalaci pod jménem vi). Textový editor GNU nano vznikl jako náhrada za starší editor Pico, jenž byl sice součástí e-mailového klienta Pine, ovšem bylo ho možné použít i jako samostatnou aplikaci. Nicméně kvůli poněkud restriktivní licenci dvojice Pine+Pico se programátoři a distributoři Debianu rozhodli, že vytvoří podobně koncipovaný editor, ovšem s výhodnější licencí, jehož jméno – nano – je odvozeno od předpony soustavy SI (podobně jako Pico).

1Obrázek 8: Balíček s editorem GNU nano je již o poznání větší, než balíček s konkurenčním e3.

GNU nano je poměrně jednoduše ovladatelný editor, který zpřístupňuje práci v něm i začátečníkům díky tomu, že se ve spodní části terminálu zobrazují nejčastěji používané klávesové zkratky, popř. zkratky dostupné v daném kontextu (editace textu, zobrazení celoobrazovkové nápovědy atd.). Jedná se o systém, který má za sebou velmi dlouhou dobu vývoje, protože podobný koncept byl využit již před zhruba třiceti lety v textovém procesoru WordStar. Většina příkazů editoru GNU nano je založena na kombinaci Ctrl+znak popř. Alt+znak (tyto zkratky jsou navíc konfigurovatelné). Důležité taktéž je, že se jedná o nemodální textový editor, což znamená, že jak editace textu, tak i zadávání příkazů se provádí v jediném režimu bez nutnosti jejich přepínaní, jako je tomu u editorů viVim (oba systémy, tj. jak využití různých módů/režimů tak i práce v jediném režimu, mají své přednosti, ale samozřejmě i zápory).

1Obrázek 9: Editace zdrojového kódu napsaného v programovacím jazyce C (porovnejte s obrázkem 7).

GNU nano nabízí i několik funkcí využívaných zejména programátory. Především se jedná o podporu pro zvýraznění syntaxe (již v instalačním balíčku existují předpřipravené konfigurační soubory pro různé typy programovacích i značkovacích jazyků). Dále je možné využít příkazy pro odsazení popř. zrušení odsazení textu. Při psaní textových dokumentů je možné využít příkazy pro zarovnání odstavců (justify), popř. automatické zalamování slov (word wrap). Právě toto je funkce, která chybí ve výše popsaném editoru e3. GNU nano ovšem obsahuje i další užitečné funkce, například možnost využití kontroly pravopisu, práci s bloky aj.

1Obrázek 10: Součástí editoru je i nápověda, dokonce v lokalizované podobě.

1Obrázek 11: Část seznamu klávesových zkratek textového editoru GNU nano.

Jed

Třetí textový editor, o němž se dnes zmíníme, se jmenuje Jed. Jméno tohoto nástroje vzniklo na základě iniciál jeho tvůrce Johna E. Davise. Tento textový editor, který má za sebou již mnoho let vývoje i poměrně úctyhodný seznam podporovaných operačních systémů (včetně Windows, DOSu, mnoha typů UNIXu a dokonce i VMS), již svým uživatelům nabízí mnohem větší množství funkcí, než oba předchozí textové editory. Zajímavé je, že kromě vlastních klávesových zkratek umožňuje emulaci práce v dalších textových editorech a procesorech, zejména EMACSuWordStaru (přesněji řečeno emulaci práce v textových editorech emulujících WordStar :-). V Jedu lze taktéž souběžně pracovat s větším množstvím dokumentů, a to díky možnosti rozdělení plochy terminálu/konzole na několik oken (split windows). Uživatelům je k dispozici několik předpřipravených barevných schémat, včetně dvou schémat, která se snaží napodobit DOSová integrovaná vývojová prostředí Turbo Pascal, Turbo C či QBasic.

1Obrázek 12: Průběh instalace textového editoru Jed.

Vzhledem k tomu, že Jed již patří mezi pokročilé textové editory určené mj. i pro programátory, obsahuje podporu pro zvýraznění syntaxe, obdélníkové bloky (v některých případech velmi užitečná vlastnost), výběr bloků se zvýrazněním apod. V Jedu lze používat i makra a velmi důležité taktéž je, že je tento textový editor vybaven interpretrem skriptovacího jazyka S-Lang, v němž lze vytvářet i poměrně složité nadstavby (S-Lang je ovšem implementován ve formě samostatné knihovny použitelné i mimo vlastní editor). Mezi další vlastnosti Jedu patří možnost práce s kalendářem či napojení na ispell. Podobně jako dále popsaný MCEdit, i Jed lze ovládat z klasického menu, přičemž většinu příkazů dostupných v menu lze vyvolat i přes klávesovou zkratku. Ze všech dnes popisovaných textových editorů nabízí Jed pravděpodobně největší množství funkcí a současně i možnost dopisovat další funkce s využitím maker a/nebo interpretru S-Langu.

1Obrázek 13: Režim (částečné) kompatibility s editorem Emacs.

1Obrázek 14: Editace zdrojového kódu se zvýrazněním syntaxe.

1Obrázek 15: Rozdělení plochy editoru do několika oken.

1Obrázek 16: Obarvení podle IDE z DOSu a klasické roletové menu.

Joe

Čtvrtý dnes popsaný textový editor se jmenuje Joe, neboli plným jménem Joe's own editor podle svého původního autora Joea Allena. Tento textový editor je mezi mnoha uživateli populární, a to jak díky množství nabízených funkcí, tak i kvůli tomu, že se jedná o relativně snadno ovladatelnou aplikaci, která je ovšem široce konfigurovatelná. V základní instalaci je tento editor tvořen jediným spustitelným souborem joe, na nějž však odkazuje několik symlinků, například jstar, jmacs či jpico. Po spuštění těchto symlinků se editor Joe přepne do režimu emulace WordStaru, EMACSu popř. editoru Pico/GNU nano – dojde ke změně prakticky všech klávesových zkratek i obrazovek nápovědy. Mimochodem – jedna z předností editoru Joe spočívá v možnosti mít neustále zobrazeno okno s nápovědou, které je rozdělené do několika listů, mezi nimiž se lze snadno přepínat.

1Obrázek 17: Průběh instalace textového editoru Joe.

Textový editor Joe svým uživatelům nabízí poměrně široké možnosti, například rozdělení plochy terminálu do většího množství oken (split windows), odsazení textu, obdélníkové bloky či automatické i manuální formátování odstavců. V nových verzích editoru Joe je implementována i podpora pro zvýraznění syntaxe či možnost záznamu a spouštění maker, která mohou být i dosti složitá. Zajímavá a užitečná je možnost filtrace vybraného textu jakoukoli zvolenou aplikací, ať již se jedná například o sort, grep, indent, fmt či například awk nebo sed (nabízených kombinací je skutečně nepřeberné množství). Pro programátory je připravena možnost spuštění překladu projektu, což sice není příliš překvapivé, zajímavá a v praxi velmi užitečná je však možnost automatického zpracování chybových zpráv překladače a popř. i skok na řádky ve zdrojovém kódu, v nichž byla nalezena chyba.

1Obrázek 18: Nápovědu lze mít zobrazenou neustále.

Textový editor Joe taktéž při vyhledávání a nahrazování podporuje regulární výrazy, obsahuje kalkulačku (vyhodnocování aritmetických výrazů) a jeho možnosti lze v poměrně velkém rozsahu modifikovat editací konfiguračních souborů uložených v adresáři /etc/joe. K dispozici je samozřejmě i operace undo, která je ostatně u moderních textových editorů již standardně vyžadována.

1Obrázek 19: Režim emulace WordStaru.

1Obrázek 20: Emulace dalších textových editorů.

1Obrázek 21: Emulace dalších textových editorů.

1Obrázek 22: Editace zdrojového kódu napsaného v jazyce C.

1Obrázek 23: Menu s možností změny konfigurace editoru Joe.

MCEdit (Midnight Commander Internal Editor)

Konečně se dostáváme k poslednímu dnes popisovanému textovému editoru, kterým je MCEdit. Tento textový editor tvoří součást známého a oblíbeného souborového manažeru Midnight Commander, s nímž sdílí mnoho společných vlastností. Mezi tyto vlastnosti patří systém klasických roletových menu, možnost zobrazení řádku s popisem příkazů namapovaných na funkční klávesy F1-F10, integrovaná nápověda a v neposlední řadě i podpora pro práci s myší v terminálu (původní funkce myši je zachována při současném stisku klávesy Shift).

1Obrázek 24: Instalace Midnight Commanderu.

Typickou a mnoha uživateli preferovanou vlastností editoru MCEdit je namapování nejčastěji používaných příkazů na funkční klávesy: klávesa F2 je určena pro uložení textu, F3 slouží pro výběr textu do bloku (je to prakticky jediný modální příkaz), klávesy F5, F6F8 pro kopii, přesun resp. vymazání bloku, klávesa F10 editor ukončí atd. Mimochodem: v Midnight Commanderu jsou tři zmíněné funkční klávesy F5, F6, F8 použity pro kopii, přesun a mazání souborů, takže je zachována konzistence mezi těmito dvěma nástroji (a navíc je i zachována konzistence se stařičkým Norton Commanderem).

1Obrázek 25: Informace o textovém editoru MCEdit.

V MCEditu je při správné konfiguraci terminálu možné vybírat blok textu i s využitím Shift+příkaz pro posun kurzoru, což je mnoha uživateli preferované chování; ostatně MCEdit nabízí i další klávesové zkratky kompatibilní s CUA (použití Ctrl+Insert, Shift+DeleteShift+Insert při práci se schránkou). Při tvorbě zdrojových souborů je možné využít zvýraznění syntaxe, uživatelé tvořící dokumentaci zase ocení možnost automatického i manuálního formátování odstavců. Přímo v editoru je možné z menu vybrat kódování použité při načítání i ukládání souborů a podporována je i tvorba maker či operace undo. Díky těmto vlastnostem i snaze o použití klávesových zkratek definovaných v CUA (IBM Common User Access) je tento textový editor vhodný i pro ty uživatele, kteří jsou zvyklí na editory vybavené grafickým uživatelským rozhraním.

1Obrázek 26: Integrovaná nápověda.

1Obrázek 27: Klasické roletové menu.

1Obrázek 28: Editace zdrojového kódu napsaného v jazyce C.

1Obrázek 29: Operace s bloky (zde zvýraznění bloku).