Hlavní navigace

Nedit - editor ASCII textů

Leoš Literák 27. 4. 1999

V tomto článku bych vám rád představil textový editor Nedit. Mám k němu velice vřelý vztah a považuji ho jeden z nejlepších editorů ASCII textů vůbec.

Editor Nedit je program firmy Fermi National Accelerator Laboratory. Jak je pod linuxem dobrým zvykem, produkt je nekomerčního charakteru. Nedit využívá knihovnu Motif. Pokud ji nemáte, je k dispozici staticky slinkovaná verze. Mimoto můžete použít knihovnu Lesstif jako náhradu za Motif. Linux není jedinou platformou, pod kterou Nedit běží. Jsou podporovány snad všechny unixy. Ve škole používám verzi pro DEC Alphy.

Obrázek 1 Editace C++ kódu v Neditu (klikni pro větší obrázek)



Jak už jsem napsal, Nedit je editor ASCII textů. Má velice příjemné rozhraní a spoustu vlastností, které zpříjemňují život. Navíc je vysoce konfigurovatelný. Co to vlastně umí?

Obrázek 2 - Označený název hlavičkového souboru



V menu File najdete obligátní funkce jako New, Open, Save, Save as a Close a v dnešní době už obvyklou funkci Open previous. Funkce Open selected se pokusí otevřít dokument, který je v textu označen myší (jako Primarní výběr). Například pokud chcete otevřít hlavičkový soubor, dvojitým kliknutím označíte jeho název a stisknete Ctrl-y. To je vše. Viz obrázek 2. Snad bych mohl k otevírání souborů ještě poznamenat, že každý editovaný soubor má vlastní okno.
Další funkcí je Revert to saved, která zruší všechny změny od posledního uložení souboru. Pak jsou zde ještě funkce jako Include File, Load Macro File a Load Tags File. Pro tisk slouží funkce Print a Print Selection.

Obrázek 3 - Paste column v akci Další menu je menu Edit. To obsahuje obvyklé funkce Cut, Copy, Paste, Undo a Redo. Poslední dvě mají asi neomezenou historii. Zajímavostí je Paste Column. Tato funkce vloží na místo kurzoru text ze schránky jako sloupec. Pokud máte například data řazena po řádcích a chcete je dát do sloupečků, urychlíte si tím práci několikrát. Jak na to? Označíte si několik řádků a příkazem Cut (Ctrl-x) je vyjmete. Na obrázku 3 jsem tuto akci provedl, jen místo vyjmutí jsem použil kopírování.

Další dvě funkce jsou unikátní – Shift Left a Shift Right. Co dělají? Posunou celý výběr doleva či doprava. Takto je možné si velice jednoduše odsadit text podle svých představ. Zvláště s kombinací obdélníkového výběru. Co to je? Pokud držíte tlačítko Ctrl během označování výběru (myší či klávesnicí), z textu se označuje jen obdélník daný začátkem označování a pozicí kurzoru. Takže pokud chcete vsunout mezi čísla z minulého příkazu dvě mezery, označíte si je do obdélníkového bloku a dvakrát stisknete Ctrl-0. Hotovo. Viz obrázek 4. Pak zbývají funkce Upper-case a Lower-case, které mění velikost písmenek a Fill Paragraph, který se pokusí vyplnit odstavec změnou bílých znaků.

Obrázek 4 - Shift rightTřetí menu je Search. Jeho první položkou je Find. V něm se zadává text, který se má vyhledat. Pomocí přepínačů je možné nastavit chování této funkce jako je třeba směr vyhledávání a rozlišování malých a velkých písmenek. Také je možné určit, že zadaný text je regulární výraz. Navíc pomocí šipek je možné procházet historií vyhledávání. Další položkou je Find Selection, kde prohledávání je omezeno jen na označený text. Následují funkce Replace a Replace Selection, které nahrazují nalezený text.
Funkce Goto Line Number, jak název napovídá, přesune kurzor na určený řádek. Příkaz Mark vytvoří něco jako záložku na aktuální pozici kurzoru a po její vybrání příkazem Goto Mark se celý blok mezi aktuální pozicí a záložkou označí. Učel pochopíte, až budete chtít vyjmout blok dlouhý několik tisíc řádků. Pak je zde funkce Match. Ta označí do bloku text mezi dvěma párovými znaky (kulaté, hranaté a složené závorky a znaky <>). Stačí dát kurzor za první znak, stisknout Ctrl-m a je to. Pak už zbývá jen funkce Find Definition, určená pro programátory používající program ctags.

Následující menu se nazývá Preferences. V něm se nastavuje chování a vzhled editoru. Pro několik nejdůležitějších typů suborů má Nedit takzvané jazykové mody (language modes). Namátkou bych mohl vyjmenovat jazyky C, C++, Java, HTML, Perl, Latex a Makefile. Pokud pro otevřený soubor neexistuje žádný mod, použije se mod Plain. Co je to mod? V podstatě je to kolekce pravidel popisujících elementy jazyka. Ke každému pravidlu můžete určit font a barvu. Výsledek? Přehledné zobrazení vašeho textu. Viz obrázek 1 a 5.

Obrázek 5 - Editace HTML stránky (klikni pro větší obrázek)



Pokud Váš oblíbený jazyk není podporován, pak není nic snazšího, než si tuto podporu přidat sám. Kromě jazykových modů je možné určit způsob odsazování a lámání dlouhých řádků, tabulátory, font i vytváření záložní kopie. V podmenu Default Settings je mimoto možné si upravit menu Shell a Macro na míru. A tady se projevuje síla editoru naplno.

Rozeberme si nejdříve menu Shell. V horní části menu jsou příkazy na spolupráci s externími programy. První příkaz se jmenuje Execute Command. Po jeho zvolení se objeví dialogové okna, kam se zadá požadovaný příkaz. Jeho výstup se potom umístí na aktuální pozici. Jaký to má význam? Nemusíte ve vedlejším okně spouštět xterm, příkaz a pak přes výběr přenášet požadovaná data zpět do Neditu. Podobně se chová příkaz Execute Command line, který však vykoná aktuální řádku. Na obrázku 6 je uveden příklad s výpisem aktuálního adresáře.

Obrázek 6 - vložení výpisu aktuálního adresáře (klikni pro větší obrázek)



Dalším příkazem je Filter Selection. V dialogu zadáte příkaz, na jehož standardní vstup se přenese obsah výběru. Jeho výstup pak nahradí tento výběr. Na obrázku 7 jsem nejdříve označil posledních pět řádků a spustil jako filter příkaz sort. Fantazii se meze nekladou, po přečtení uzlu Textutils v prohlížeči info Vás určitě napadne lepší použití.

Obrázek 7 - použití filtru na výběr (klikni pro větší obrázek)



Druhá část menu obsahuje několik předvolených příkazů jako spell, wc (word count), sort a number lines. Pro neznalé angličtiny tyto příkazy kontrolují pravopis, sečtou počet slov v dokumentu, setřídí řádky a očíslují řádky. Příkazem Preferences / Default Settings / Customize Menus / Shell Menu… je možné tyto příkazy upravit, či přidat příkazy nové. Při přidávání nové položky je třeba zadat její název v menu, případnou klávesovou zkratku, jestli jako vstup bude použit výběr či celý soubor a co se má stát s výstupem. Ten může jít do stejného okna, nového okna či do dialogového okna. Pak je tu ještě několik přepínačů jako Output replace input nebo Save file before executing command. Posledním údajem je vlastní příkaz, který se má vykonat.

Jako příklad mohu uvést třeba způsob, jak konvertovat z Neditu dokumenty mezi znakovými sadami linuxu a windows.

Tabulka č. 3
Menu entry: From windows
Command input: none
Command output: new window
Save file before executing command: zvoleno
Shell command to execute: cstocs 1250 il2 %


Obrázek 8 - menu Macro

Menu Macro se dá opět rozdělit na dvě části. V první jsou příkazy pro automatizaci opakující se činnosti. První položkou je Learn Keystrokes. Po jeho zvolení si Nedit bude zaznamenávat všechny údery do klávesnice. Myš je v té době nefunkční pro editaci. Sekvenci příkazů ukončíte položkou Finish Learn. Přerušit toto učení je možné příkazem Cancel Learn. Až budete chtít tuto sekvenci zopakovat, zvolíte Repeat… nebo klávesovou zkratku. Pokud je soubor nějak strukturovaný a Vy na něm provádíte monotónní úpravy, pak není nic příjemnějšího než použít tuto funkci. Tímto způsobem jsem převedl soubor intel.doc do html formátu na stránce 80×86 instruction set.

Jinou možností je nadefinovat si vlastní makro v menu Preferences / Default Settings / Customize Menus / Macro Menu…. Opět zadáte název makra (znak > vytvoří podmenu), případnou klávesouvou zkratku a zda toto makro vyžaduje výběr. A pak jen píšete příkazy makra. Vlastní jazyk je velice jednoduchý, spíše bych řekl triviální. Kdo pochopí, že příkaz x = 3 + 4 přiřadí proměnné x hodnotu 7, ten tento jazyk už umí.

K dispozici máte velký počet předdefinovaných proměnných jako jsou $cursor, $file_name, $selection_start, $selection_end nebo $text_length. Pak jsou zde funkce append_file, dialog, get_character, get_selection, replace_in_string, search, set_cursor_pos a další. Pak jsou zde k dispozici všechny vnitřní funkce Neditu. Namátkou new, print, fill_paragraph, beginning_of_line, copy_clipboard, delete_next_word, scroll_up a mnoho dalších. V menu Help jsou všechny popsány.

Samozřejmě bude následovat malý příklad. Například makro, které spustí dialog, do něhož zadáte řetězec. Tento řetězec pak bude přidán na začátek každého řádku ve výběru. Název dáme například Tools>At start a zaškrtneme políčko Require selection. Pak zadáme vlastní příkazy makra:

slideInString = string_dialog („Slide-in string:“, „OK“, „Dismiss“)
if ($string_dialog_but­ton == 1)
{
replace_in_se­lection („(^.*$)“, slideInString „&“, „regex“)
}

Předposlední menu se nazývá Windows. V první části obsahuje funkce Split Window a Close Pane, v druhé seznam otevřených oken. První funkce rozdělí okno nebo jeho již rozdělenou část na dvě půlky. V obou půlkách editujete stejný soubor. Rozdílná je jenom zobrazená část. Funkce Close Pane zase sloučí dvě části dohromady. Kdy použít tyto funkce? Když editujete soubor na dvou různých místech a už Vás nebaví neustále scrollovat mezi nimi.

Poslední menu je Help. Obsahuje vyčerpávající informace o tomto skvělém editoru.

A ještě jeden trik na závěr: označte myší blok textu a klikněte na tento blok prostředním tlačítkem myši. Tlačítko držte a myší pohybujte. Celý blok se bude pohybovat ve směru myši.

Leoš Literák
Linux Hardware
x86 instructions set

Našli jste v článku chybu?

27. 4. 1999 17:04

Roman Porizka (neregistrovaný)

Nevim,
ale to co popisuje autor v clanku mam v editoru
vim taky a a ve vimu je toho mnohem, mnohem vic.
Treba moznost slinkovani s athenou, motifem
(lesstifem) a gtk. Posledne jmenovanou moznost
vrele doporucuju.
Nechci vim chvalit, teda chci, takze zacnu tim,
co ho myslim odlisuje od ostatnich editoru.
Kdyz mate otevrenej soubor, tak si udela jeste tzv.
swap soubor, kam uklada zmeny, i kdyz svou praci
na souboru neukladate. A pri pripadnem kixu si muzete
praci snadno obnovit.
No a tech moznos…











27. 4. 1999 10:13

Mikulas Patocka (neregistrovaný)

omlouvam se, ze jsem to sem poslal vicekrat - blbla sit

Vitalia.cz: „Připluly“ z Německa a možná obsahují jed

„Připluly“ z Německa a možná obsahují jed

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

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

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

Přehledná titulka, průvodci, responzivita

DigiZone.cz: Česká televize mění schéma ČT :D

Česká televize mění schéma ČT :D

120na80.cz: Bojíte se encefalitidy?

Bojíte se encefalitidy?

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

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

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

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

Vypadl Google a rozbilo se toho hodně

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

Avast po spojení s AVG propustí 700 lidí

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0

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: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

DigiZone.cz: ČT má dalšího zástupce v EBU

ČT má dalšího zástupce v EBU

Podnikatel.cz: Prodává přes internet. Kdy platí zdravotko?

Prodává přes internet. Kdy platí zdravotko?

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

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

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

Podnikatel.cz: Na poslední chvíli šokuje vyjímkami v EET

Na poslední chvíli šokuje vyjímkami v EET

Lupa.cz: Babiš: E-shopů se EET možná nebude týkat

Babiš: E-shopů se EET možná nebude týkat