jEdit - editor, co je schopen nahradit PSPad

MyEgo.cz

home foto blogy mywindows.cz kontakt

jEdit - editor, co je schopen nahradit PSPad

Software 03.02.05

Tento seriál si klade za cíl seznámit Vás s jedním z nejlepších programátorských editorů, který je multiplatformní (je psán v Javě), velice rychlý, podporuje pluginy, má kvalitní makro jazyk, a vestavěnou podporu desítek různých programovacích jazyků. V článku se podívám i na srovnání jEditu s PSPadem, de-facto českým standardem pro freewarový XHTML/PHP editor, a na možnosti, ve kterých je jEdit oproti PSPadu lepší, a proč se vyplatí jej používat.

jEdit je programátorský editor napsaný v Javě a poskytovaný v GNU GPL licenci, takže funguje v postatě na libovolném OS, ať už je to Windows, Linux, Mac OS X, OS/2, HP Unix, VMS či Solaris. Pro jeho spuštění tedy potřebujete Java Runtime Edition (JRE), a to verze 1.4.0 a vyšší (1.5.0 je testována taky). A přestože je to aplikace psaná v Javě, je mimořádně rychlá. Pro řadu operací je jEdit dokonce mnohem rychlejší než oblíbený PSPad.

Výhoda jEditu se projeví i pokud pracujete s více operačními systémy (v mém případě Windows XP, Fedora Core 3 a Solaris 9), budete mít totiž všude stejný, stejně konfigurovaný, a stejně kvalitní programátorský editor (vím, že tento požadavek beze zbytku splňuje třeba i vim).

Instalace jEditu

Protože je jEdit javovská aplikace, musíte si nejdříve stáhnout JVM, a to například balík JRE 1.5.0 od Sunu. Následně Vám k instalaci doporučuji jEdit 4.2 stable, existuje sice i verze jEdit 4.3 pre1, nicméně, neriskoval bych to, že uprostřed rozdělané práce v ní nastane chyba, je to teprve první preview verze (běžně jich bývá kolem deseti) a přijdete tak potencionálně o kus práce. Verzi 4.2 používám dlouhodobě, a je mimořádně stabilní.

Po instalaci Javy a nakopírování jEditu do C:\Program Files\jEdit\ můžete na Windows spustit jEdit například takto:

"C:\Program Files\j2sdk\bin\javaw.exe" 
  -Xms32m -mx64m 
  -jar "C:\Program Files\jEdit\jedit.jar" 
  -background

A na Linuxu například takto (cesty si samozřejmě upravte podle Vaší instalace):

/usr/java/jre1.5.0/bin/java 
  -Xms32m -mx64m 
  -jar /home/rado/jedit/4.2/jedit.jar 
  -background

Podstatné jsou zde přepínače -Xms32m a -mx64m, které umožní, aby JVM alokovalo více než standardních 8MB paměti, a to konkrétně minimálních 32MB paměti (kvůli rychlosti) a maximálních 64MB paměti (osobně větší soubory needituji), a rovněž je použit přepínač -background, který zajišťuje, že i když jEdit ukončíte pomocí zavíracího křížku okna, proces JVM zůstává stále v paměti, a při novém spuštění aplikace jEdit naběhne během několika milisekund, tedy okamžitě (dokonce ještě rychleji, než nové spuštění PSPadu). Pokud chcete proces ukončit zcela, aby nealokoval paměť, stačí použít klávesovou zkratku Ctrl+Q či volbu v menu File / Exit.

Základní nastavení jEditu naleznete v menu Utilities / Global Options, zejména je potřeba nastavit v sekci Textarea vhodné písmo, pro můj LCD monitor se na Windows nejlépe vyjímá Lucida Sans Typewriter 13 Plain, se zapnutým Smooth Text a Fractional Font Metrics a na Fedora Core 3 používám Nimbus Mono L 12 Plain.

Rychlý přehled funkcí jEditu

Pojďme se podívat na obrazovku jEditu na Windows, s několika otevřenými soubory a s uživatelsky uzpůsobenou konfigurací, obrázek řekne často více než mnoho slov:

jEdit

Na první pohled je vidět několik silných funkcí jEditu, které v řadě jiných editorů nenajdeme, a to jsou:

  • Complete Word, tedy doplňování slov aktuálně používaného programovacího jazyka, používá se na to klávesová zkratka Ctrl+B.
  • Folding, což je funkce, která automaticky rozčleňuje text do celků a bloků, a umožňuje pomocí šipek na levé liště jednotlivé bloky zabalit / rozbalit pro větší přehlednost (v tomto případě je zvolen Folding Mode: Indent).
  • PHP Parser, který Vás umí při uložení / načtení souboru varovat, které části kódu obsahují chyby,
  • Rychlá práce s řadou kódování, jEdit podporuje cp1250, iso-8859-2, utf-8 a dalších zhruba 50 kódových stránek, a na rozdíl od PSPadu to funguje extrémně rychle, schválně si vyzkoušejte v PSPadu otevřít takovou zálohu SQL databáze o velikosti 20MB pro editaci v UTF-8, PSPad na několik minut zkolabuje, kdežto jEdit ten soubor otevře a je s ním schopen pracovat během 2 sekund (toto není pomlouvání jinak skutečně skvělého PSPadu, jen je to prostě editor určený na jiné, menší věci).
  • Podpora pluginů, onen zmíněný PHP parser, či horní Buffer Switcher je řešen jako plugin, což je skvělá koncepce, dokonce i ukázkový vzhled jEditu je řešen pluginem (Look and Feel), poznámkový blok je plugin, FTP klient je plugin, prostě jEdit můžete dle libosti rozšiřovat, pluginů existují stovky, osobně jich používám asi 20.
  • Structure Browser, je prohlížeč struktury dokumentu, u větších projektů nedocenitelná věc.
  • Syntax Highlighter, což je standardní věc, nicméně, v jEditu pracuje s PHP parserem a je schopna chybně napsané věci dále zvýraznit, úžasně to pomáhá v práci.

Kromě těchto, na první pohled viditelných, funkcí, obsahuje jEdit:

  • Velice kvalitní makrojazyk.
  • Mimořádně rychlé prohledávání a nahrazování slov, včetně podpory pro hledání v otevřených souborech (bufferech), v adresáři (a podadresářích) a s podporou pro regulární výrazy, toto všechno je navíc sdruženo v jednom dialogovém okně, takže se to velice jednoduše a rychle používá.
  • Možnost automatického zálohování souborů do zvoleného adreáře (například /home/rado/backup).
  • Podporu pro centrální repository pluginů, tedy server jedit.org se seznamem všech pluginů dostupných přímo ze Správce pluginů v menu jEditu, a s možností jejich automatického stažení a instalace na jedno kliknutí, včetně řešení vzájemných závislostí mezi pluginy, a podporu pro automatický update na novější verze pluginů.
  • Podporu, pomocí pluginů, pro převod kódu do HTML, podporu pro Tidy, Diff plugin, a desítku dalších.
  • Podporu pro Abbreviations, tedy vestavěné i uživatelsky definované zkratky, které jsou při psaní automaticky nahrazovány celým textem.
  • Podporu pro Split View, tedy více pohledů na jeden buffer.

Integrace jEditu s PHP

Na Windows je možné použít síly maker jEditu společně s rozšířenou nápovědou pro PHP (chm formát) pro online kontextový help. Postačí když napíšete v textu třeba iconv, označíte toto slovo, stisknete Vámi nadefinovanou horkou klávesu (třeba Ctrl+Alt+P), a spustíte tím makro, které Vám otevře nápovědu PHP pro danou funkci.

Uvedené makro může vypadat takto:

CHM_location = "C:\\Dev\\Manual\\PHP\\php_manual_en.chm";
selections = textArea.getSelection();
if(selections.length > 0) CHM_location += "::/_function.html#" + textArea.getSelectedText();
exec("HH " + CHM_location); 

Jedná o vcelku samo-vysvětlující věc, manuál k PHP mám v tomto případě umístěn v C:\Dev\Manual\PHP\php_manual_en.chm, a daný příkaz spustí program HH (Nápověda Windows) s parametrem dané hledané funkce. Stáhnout si manuál v chm formátu (jen pro Windows) můžete na php.net (má 10MB a obsahuje i komentáře a řešení uživatelů, což je dost užitečné).

Pokud chcete raději používat online nápovědu na php.net/název_funkce, může Vaše makro vypadat například takto (můžete tomuto makru přiřadit třeba zkratku Ctrl+Alt+O):

exec("c:\\program files\\mozilla firefox\\firefox.exe http://www.php.net/" +
	textArea.getSelectedText() );

Tyto makra uložte jako Název_makra.bsh do ./jedit/macros/php/, a následně jim přiřaďte klávesové zkratky v Utilities / Global Options / Shortcuts / Macros.

Užitečné pluginy

jEdit ani ve standardní instalaci není „chudý“ editor, nicméně, teprve s pluginy specializovanými pro programovací jazyk, který používáte, získává patřičně na síle.

V menu Plugin / Plugin Manager / Install Vám jEdit nabídne veškeré pluginy existující v jEdit Plugin Repository, včetně jejich krátkého popisu (musíte být pochopitelně v tu chvíli připojeni k internetu). Instalace spočívá v kliknutí na checkbox u názvu pluginů, které chcete instalovat, a ve zmáčknutí tlačítka Install, případně dle požadavků doprovázeném restartováním jEditu.

Po instalaci je v Plugin / Plugin Manager / Manage k dispozici i podrobná nápověda ke všem instalovaným pluginům.

Vlastní „skladba“ pluginů se bude lišit podle Vašich potřeb, pro moje programování v PHP, Pythonu a SQL (na C++ jEdit nepoužívám) mám instalováno toto:

Plugin Popis
BufferTabs tento plugin umí zobrazit „záložky“ (tabs) všech otevřených souborů (v jEditu se soubor nazývá buffer), jako je známe třeba z Firefoxu
CharacterMap mapa znaků
Clipper utilitka, která zobrazí definované sady příkazů či znaků (třeba XHTML tagy)
CodeBrowser skvělý plugin, který umí zobrazit relace mezi třídami v celém projektu, popřípadě v otevřených souborech
Code2HTML převede jakýkoliv napsaný kód do naformátovaného HTML se zvýrazněním syntaxe
Console spouštění externích příkazů
EditorScheme obsahuje asi 30 vestavěných barevných schémat (osobně používám schéma ColdFusion)
ErrorList tento plugin je vyžadován ostatními pluginy, pro zobrazení chybového výstupu třeba PHP parseru
FindFile hledání souboru podle řady parametrů
Gestures možnost ovládat jEdit gesty myší
jDiff plugin porovnání dvou bufferů / souborů
jTidy implementace Tidy knihovny pro HTML
Look and Feel možnost modifikace vzhledu celého jEditu (používám vzhled jGoodiesPlasticXP)
ProjectViewer správce projektů
QuickNotepad luxusní poznámkový blok
SQL umožňuje u projektu nadefinovat připojení k databázi a vykonávat nad ní SQL příkazy, neuvěřitelně užitečné!
SideKick umožnuje procházet strukturu právě otevřeného bufferu
TextTools rozšířené nástroje pro práci s textem
WhiteSpace totálně konfigurovatelné zobrazení bílých znaků
XML XML parser
XML indenter formátování XML kódu
XQuery zpracování XSLT dotazů

V dalším díle seriálu bych se podrobněji podíval na jednotlivé funkce jEditu a některých pluginů.


Komentáře

  1. 1 FrozenDog 03.02.05, 01:02:20
    FB

    O JEdite Radek uz kedysi pisal. Najprv som tomuto editoru nevenoval pozornost - odradzovalo ma hlavne to, ze je pisany v jave (ani vlastne neviem, preco som mal k javovskym aplikaciam taky odpor). Po recitani Radkovho clanku som sa ho vsak rozhodol skusit a doteraz to nelutujem. JEdit je naozaj lepsi, nez PSPad (aj ked nan nedam dopustit). Ta jeho variabilita, konfigurovatelnost, rozsiritelnost a univerzalnost je jednoducho ohromujuca.

    Doporucujem vyskusat!

  2. 2 Tom 03.02.05, 02:02:55
    FB

    Ano, také ho používám už dlouho a myslím že několik let nebudu hledat nic jiného. Je to velmi návykový editor.
    Používám verzi 4.3pre1 (na WinXp) několik hodin denně a nespadla ani jednou.
    Měl jsem v plánu se pokusit o český překlad, ale počet uživatelů zřejmě není tak velký a většina se zorientuje dobře i v anglickém prostředí. Takže z toho zatím sešlo.

  3. 3 Michal 03.02.05, 07:02:43
    FB

    Jen houšť a větší kapky - PSPad už mám zažitý a není čas JEdit zkoušet, jak jej nejlíp nakonfigurovat ;o)

  4. 4 martinpav 03.02.05, 08:02:44
    FB

    JJ, ja som sa k nemu sice nedostal cez Radka ale je naozaj dobry. PHPparser hlasi chybu pri pouziti "visibility" pri objektoch aj ked kod je v poriadku. Napriek tomu je to vynikajuca aplikacia.
    Ja mam nainstalovany este aj FTP plugin.

  5. 5 Petr Jandera 03.02.05, 11:02:52
    FB

    Neda se sehnat do jEditu cestina?
    A chtel bych se zeptat jestli bys nenapsal manual na eclipse + PHPplugin. Toto bych bral radeji nez jEdit.
    Diky moc

  6. 6 Radek Hulán 03.02.05, 12:02:11
    FB

    [5] o PHPEclipse bude jeden z článků, teď ale dokončím jEdit ;-)

  7. 7 markon2 03.02.05, 02:02:03
    FB

    Presne, jEdit je jeden z nejlepších editorů. Já bych dokonce řekl, že je to jeden z mála editorů, který nemá problémy se znakovýma sadama. Ono ostatně Java znakové sady řeší jednoduše, vše je v UTF-8 = zcela bez problémů.

    Přesto jsem narazil na jeden problém. jEdit nedokáže upravovat část textu bez toho, aby zasahoval do druhé. Upravuji-li tedy soubor v neznámém kódování, celý soubor se rozhodí. Tady vidím výhodu VIMu, který tohle neudělá.

    V poslední době jsem právě na rozcestí, který editor používat. jEdit i VIM jsou až příliš vyrovnaní. Každý má své výhody i nevýhody. jEdit je pomalejší, ale umí strašně dobrou věc, kterou Radek vůbec nezmínil - Hypersearch.

    Hypersearch je něco jako GREP, který vypíše nalazený výskyt ve všech souborech a po dvojkliku uživateli automaticky otevře daný soubor.

  8. 8 Krutohlav 03.02.05, 02:02:26
    FB

    Jo, jEdit používám už dlho a mám ho pekne vytuňený k obrazu svojmu, takže pridám ešte jeden užitočný plugin: TaskList
    Do kódu je potom možné pridávať rôzne komentáre, napríklad:
    // TODO: dorobit kontrolu vstupov z formulara
    syntax teda je:
    ZNACKA: komentar
    (cez regulárne výrazy je možné si zadefinovať vlastné pravidlá)
    ďalšie preddefinované značky sú:
    DEBUG, DONE, FIXME, IDEA, NOTE, QUESTION...
    je možné definovať aj vlastné značky. Tieto komentáre sú potom v kóde zvýraznené (podobne ako pri plugine ErrorList) a rovnako je možné si otvoriť a zadockovať na lište okno kde sú vylistované všetky tieto poznámky (každá značka má vlastnú ikonu) takže hneď vidím, čo mám v tomto bufferu rozpracované a klikom odskočím presne na to miesto.

  9. 9 doktor_z_hor 03.02.05, 02:02:29
    FB

    nejlepsi je VIM. protoze zatim v zadnem jinem textovem editoru si nemuzu hrat tetris, kdyz me nebavi zrovna programovat. A pak uznavam jeste jedno dogma: moje zdrojaky jsou nejlepsi a absolutne nejdulezitejsi a tak editor nesmi nikdy spadnout a _vzdy_ pri jakemkoliv vypadku (treba upadnuti operacniho systemu ci cokoliv jineho) (krom fyzickeho pozkozeni diskoveho sektoru kde je muj editovany soubor ) musim byt schopen sve soubory obnovit a to umi jen vim.
    tyhlety pspady jedity, editplusy a podobne tohle vubec nesplnuji

  10. 10 michaels 03.02.05, 02:02:56
    FB

    Můžete mi někdo prozradit, jak se v JEditu pracuje s projekty? Vyvtořím si nový projekt, pojmenuju, řeknu, kde má adresář, ale když jej pak chci otevřít, tj. Plugin - Project viewer - Project - moje jmeno projektu tak se nic nestane a musím říct, že mě to docela vytáčí, že na to nemůžu přijít :-)

  11. 11 newspeak 03.02.05, 03:02:26
    FB

    ..(na C++ jEdit nepoužívám)..

    Rado, a preco nepouzivas, resp. co pouzivas na C++? A hexa editing? Ma to nejake plugin-y aj na hexa editovanie?

  12. 12 Radek Hulán 03.02.05, 03:02:55
    FB

    [11] na C++ používám IDE dané platformy, takže Forte C++ Workshop a Borland C++ Builder.. Plugin pro hexa to má taky, ale zde je zase lepší WinHex

  13. 13 Tom 03.02.05, 04:02:11
    FB

    [1] Mozna ze jsi mel k Javovym aplikacim odpor, protoze jsi mel kdysi malo pameti. Toto omezeni dnes uz neni podstatne a proto se Java stava pouzitelnou nejen pro Javove programatory ;-)

  14. 14 Petr Vytlacil 03.02.05, 07:02:31
    FB

    Jak mam rozchodit Folding? Nemam v jEditu vlevo sipky abych mohl zavirat funkce tridy atd. Diky moc za radu!

  15. 15 markon2 04.02.05, 08:02:20
    FB

    [9] jEdit ma swapovaci soubor a pri padu se da vse obnovit. Vcetne toho umoznuje do jednoho adresare dat neomezene mnozstvi zaloh, na coz jsem neprisel jak ve VIMu vyresit.

    Nerekl bych, ze zrovna absence tetrisu je nejhlavnejsi duvod proc nepouzivat jEdit. Nejvetsi nevyhoda jEditu je v tom, ze nejde poustet vzdalene, jako treba VIM, kterym programuji primo na serveru, cimz si usetrim hodne prace

  16. 16 Štěpán Zikmund 04.02.05, 09:02:12
    FB

    [14] Global options -> Editing -> foldong mode: indent

    btw. Radku, děkuji za článek a už se těším na pokračování :-)

  17. 17 tomikb 04.02.05, 10:02:54
    FB

    [10] a máš nastavené okno project viewer jako plovoucí? aby jsi ho vůbec viděl?

  18. 18 tomikb 04.02.05, 10:02:55
    FB

    [14] musíš si buď v glob. nastavení pro určený typ bufferu nastavit folding z none na něco jiného a nebo přímo v nastavení editovaného bufferu.

  19. 19 Michal 04.02.05, 12:02:04
    FB

    [17] A kde se to dá nastavit? Mě zaráží, že se při akci Plugin - Project viewer - Project - moje jmeno projektu nestane vůbec nic. Třeba Quicknotepad se mi otevře jako plovoucí okno a to si pak umístím na nějakou stranu. Ale když si vytvoří mový projekt a pak jej chci spustit tak se mi žádný okno neotevře :o( Chtěl bych nahradit PSPad ale bez projektu to nejde ...
    Ani když dám projekt option či Open All Project files tak se nestane nic ..
    Není potřeba ještě nějaký plugin?

  20. 20 Michal 04.02.05, 12:02:21
    FB

    [17] tak už se mi to povedlo. V Global options jsem nastavil jako docked a pak zpět jako Float a najednou se okno ukázalo .. vůbec to nechápu ... ale hlavní je, že už to fenge

  21. 21 Michal 04.02.05, 12:02:55
    FB

    Jak je to u ostatních? Já mám soubory projektu na disku v LNX připojeném přes SAMBU jako disk do WIN a celý seznam souborů se načítá do projektu asi 3 min, čímž je pro mne JEdit nepoužitelný :o(

  22. 22 pif 04.02.05, 10:02:39
    FB

    jak se pouzivaji ty gesta mysi? je tam up down apod. ale at uz hybu s myskou jakkoliv, tak se nic nedeje ;)) takze musi se k tomu jeste neco stisknout?

  23. 23 tomikb 05.02.05, 03:02:46
    FB

    [22] nic. teda kromě pravého myšítka, ale to asi víš. mě to funguje v pohodě, i když to moc nepoužívám. můžeš si definovat i nová gesta.

  24. 24 Jurasek 17.02.05, 05:02:21
    FB

    Mozna budu se svym dotazem trapnej, ale ma jEDIT neco jako "edit current tag" (popr. v nejakem pluginu)? a existuje v nem automaticke dopsani u parovych tagu. diky

  25. 25 pyty 04.05.05, 07:05:28
    FB

    uz ma fajne stve, ze ked dam v total commanderi f4 a jE mam uz otvoreny, tak sami otvarany dokument otvori v novom okne, aj ked sa tam prida aj novy tab (do obidvoch okien). neviete ako sa to da odstranit ???
    a este neviete, ako sa da urobit, aby je edit bol v opere ako prezerac source ?? ked tam dam normalny prikaz JRE, pise alert ze file not found ci co...

  26. 26 SiseL 05.05.05, 01:05:07
    FB

    v globale:
    jEdit user guide/using jedit/starting jedit/command line usage

    v lokale: ;)
    treba pouzit parameter:
    -reuseview

    napr. v mojom pripade vo folder option v WINXP koncovka .php je asociovana

    "C:\Program Files\j2sdk_nb\j2sdk1.4.2\injavaw.exe" -jar -Xms32m -mx64m "C:\Program Files\jEdit\jedit.jar" -background -reuseview -- %1

    nech padne na uzitok

    [25]

  27. 27 rook 01.08.05, 12:08:30
    FB

    Mam problem s autodetekci znakove sady. Pokud otevru nejaky soubor, ktery ma jinou, nez defaultni (nastavenou v global options) znakovou sadu, tak jEdit neni schopen automaticky zjistit tuto znakovou sadu a pouzije tu globalni. Nevite, v cem by mohl byt problem ?

  28. 28 Miki 08.09.05, 11:09:52
    FB

    zdravím a ptám se, rozchodil jste někdo tu podporu pro Tidy, snažím s eto instalovat pomocí toho ovládáacího panelu pro pluginy a jako u jediného se mi to nedaří akonmčí to hláškou "Zip archive error" nebo tak podobně...

  29. 29 cas 15.05.06, 03:05:18
    FB

    Ja vzdy hladam jednu vec na vela cinnosti. Volaco pisem v HTML, LaTeXu, Jave,.. no a skoncil som pri jEdite.

  30. 30 jezz 27.07.06, 01:07:07
    FB

    zdravim, nema nekdo nejaky ucelenejsi balicek (phpparser, codebrowser,...) spolu s jeditem, ale tak, aby tyhle veci fungovaly zaroven pod winXP? (napr "exuberant c tags" nestahnu jinak nez ve zdrojacich a na kompilaci nemam moc naladu.)

    diky ;)