jEdit - editor, co je schopen nahradit PSPad
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:
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 vUTF-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ů.
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!
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.
Jen houšť a větší kapky - PSPad už mám zažitý a není čas JEdit zkoušet, jak jej nejlíp nakonfigurovat ;o)
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.
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
[5] o PHPEclipse bude jeden z článků, teď ale dokončím jEdit ;-)
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.
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.
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
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 :-)
..(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?
[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
[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 ;-)
Jak mam rozchodit Folding? Nemam v jEditu vlevo sipky abych mohl zavirat funkce tridy atd. Diky moc za radu!
[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
[14] Global options -> Editing -> foldong mode: indent
btw. Radku, děkuji za článek a už se těším na pokračování :-)
[10] a máš nastavené okno project viewer jako plovoucí? aby jsi ho vůbec viděl?
[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.
[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?
[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
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(
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?
[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.
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
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...
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]
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 ?
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ě...
Ja vzdy hladam jednu vec na vela cinnosti. Volaco pisem v HTML, LaTeXu, Jave,.. no a skoncil som pri jEdite.
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 ;)