Článek o Midnight Commanderu, který dnes vyšel na rootu, mě inspiroval k napsání tohohle blog postu. Považuju Midnight Commander za tu nejlepší věc, kterou v Linuxu můžete najít. Používám ho i v Xkách, protože mi přijde přívětivější a použitelnější než všechny ty krusadery a dolphiny. Možná jde o sílu zvyku z dob DOSu a nortonu, to uznávám :) Zvyk je železná košile, znáte to.
Ale nejdůležitějším důvodem, proč MC používám, je mcedit, tedy vestavěný textový editor.
Proč je tak skvělý a báječný? Důvodů je mnoho:
Live FTP editaceMidnight editor umí spolupracovat s midnight commanderem a online editovat soubory přímo po FTP. Jestli jste někdy něco měnili na vzdáleném serveru pomocí FTP, jistě víte jaký je to opruz – stáhnout, otevřít kopii v editoru, upravit, uložit, uploadnout zpět na FTP. Midnight tohle řeší za Vás, soubor lze editovat „přímo“. Při uložení (F2) se midnight v případě potřeby znovu sám na FTP server naloguje, došlo-li k odhlášení timeoutem, a soubor uploadne, aniž byste museli opouštět editor. Úžasné. Jen pozor pokud dojde při přenosu k poruše na síti, a soubor se neuploadne celý – v takovém případě je důležité neopouštět editor a uložení opakovat, jinak vám zůstanou slzy pro pláč a necelý (nebo nulový) soubor na FTP. Stalo se mi asi jen jednou v životě, ale je důležité o tomhle případu vědět.
Sloupcový blokOznačení textu se v MC editoru provádí buďto myší, nebo přes klávesy F3-šipky-F3. První F3 tedy určí začátek bloku, šipkami dojedete na konec a konec označíte zase F3. Tímhle se ale označuje souvislý (lineární) kus textu. Podobně jde označit SLOUPEC, a to za pomocí Shift+F3. S bloky pak je možné dále pracovat – kopírovat je na pozici kurzoru pomocí F5, přenést pomocí F6, smazat F8, uložit do externího souboru Ctrl+F, atd.
Buffer pro kopírování dat mezi souboryČas od času je třeba část kódu přenést mezi několika soubory. Jedna z možností je v jednom souboru označit blok a uložit ho do externího souboru, v dalším kroku pak blok z tohoto souboru načíst. MC editor nám celý tenhle postup podstatně usnadňuje tím, že nám nabízí takzvaný clipfile, u mě ~/.mc/cedit/cooledit.clip. Ctrl+Insert uloží do, Shift+Insert vybere z něj a vhodí zpět do editoru. Alternativně, pokud už tyhle klávesy máte nabindované na něco jiného třeba v Xkách, nebo pracujete v mc z windows přes putty (a Shift+Ins vkládá buffer windows místo clipfile), je možné použít Ctrl+F Enter, a Shift+F5 Enter
Undo – briliantní řešeníTextový editor v Midnight commanderu umí jednu další zásadní věc, kterou jsem neviděl u žádného jiného textového editoru, EVER. Vlastně je to HLAVNÍ featura kvůli které MC editor používám dnes a deně asi 10 hodin v kuse. Jde o UNDO pomocí Ctrl+U. Řeknete si asi, undo má každý editor. Omyl, takovéhle undo ne. Midnight editor totiž undo aplikuje i na pohyb kurzoru!
Jak toho využít? Například se při psaní kódu chcete podívat o kus výš nebo níž. Žádný problém, šipkami a PgUp PgDn odstránkujte kam potřebujete, pak jen párkrát Ctrl+U a máte kurzor zpátky přesně tam odkud jste vyšli. Chcete se vrátit ke stavu editoru v určitém okamžiku? Stačí přidržet Ctrl+U. Editační kroky se vracejí po znacích, tudíž můžete vrátit zpět jen přesně tolik znaků kolik chcete, a ne třeba celou půlminutu zpět. K NEZAPLACENÍ. Jak si jednou na tohle zvyknete, už není cesta zpět ;)
Když jsem kdysi v roce 1997 měl na VŠB předmět Základy operačních systémů, tak při práci v Linuxu (tuším, že to byl tehdy Slackware) byl MC strictly prohibited. Nicméně zajímavý článek, o tom Undo v mceditu jsem nevěděl a ačkoliv je moje víra Vim, tak se to může někdy hodit ;-)
To undo mi moc chytré teda nepřijde, mnohem lepší mi přijdou vimovské záložky: třeba pomocí ma si označím místo kam se budu chtít v budoucnu vracet, a pak se tam pomocí 'a vrátím. Hlavní výhodu vidím v tom, že zároveň při tom odskoku můžu i něco opravit, aniž bych to pak při návratu na původní místo taky vrátil do původního stavu. Pokud bych chtěl takto cestovat mezi více otevřenými soubory pak stačí místo malého a dát velké A (značka se tak stane globální)... kdepak, na Vim nic nemá :)
(vim) :help jump-motions, :help jumplist
A to prosim pekne aj medzi (zavretymi) subormi. Nie je to presne to iste ako pamatat si kazdy pohyb kurzoru, ale zase na mcedit-style akosi nevidim dovod..?
Okrem toho CTRL+U v mcedit robi nielen "kurzorove" undo, ale kombinuje ho s ozajstnym undo. Takze ked sa chces pozriet co si pred 3 minutami robil, zaroven ti spravi undo vsetkeho co si editoval posledne 3 minuty..
Jen poznámka k editování přes FTP ... Byl jsem na to zvyklý v Debianu, ale v Ubuntu tuhle vlastnost zazdili a nejde to, musí se ručně stahovat a uploadovat. Docela by mne zajímalo, jak se jim to povedlo, a jestli jde tahle sqělá vlastnost nějak "nahodit". Jinak mc je moje láska, a v mcedit píšu příležitostně i html ... bez něj ani ránu.
Ale to undo pro cursor movements je featura, která je imho prakticky nepoužitelná. Pokud jenom pomocí PgUp například vyskáčeš pár stránek nahoru se na něco podívat, pak je mnohem logičtější se vrátit na původní místo pomocí prostého PgDown. Pokud máš v plánu poněkud složitější cestování pomocí kombinace PgUp/Down a šipek je opět mnohem logičtější udělat si na původním místě značku a na tu se pak moct vrátit jediným příkazem. Pak si můžeš libovolně skákat po souboru sem tam a na původní místo se vždy můžeš vrátit pomocí jediného příkazu. Za pomocí toho undo bys místo jednoho příkazu musel třeba 20x mačkat to CTRL+U, což mi moc super nepřijde. A pokud potřebuješ se někam nejenom podívat ale rovnou tam i něco poupravit, přepsat či smáznout, tak jsou ty cursor movements undo pro návrat na původní místo už vůbec nepoužitelné. Jinýmy slovy mně nenapadá jediná situace, kdy by to mohlo být k něčemu užitečné...
[7]: ten priklad s odskocenim na jine misto v soubor a vracenim zpet je jen jeden z mnoha, dalsi priklad je treba takovy, ze jsem uprostred nejakeho dlouheho radku a chci se podivat na zacatek nebo na konec, pak jednoduse Home nebo End, a Ctrl+U zpet tam kde jsem byl, bez znackovani, atd...
Jsem opravdu jediny, komu undo po znacich (vcetne cursor movements) pripada genialni? :-)
Tak každý má očividně zcela jiné pracovní postupy a priority :) V žádném případě nechci tvrdit, že moje jsou lepší než tvoje. Jenom mě překvapilo jak někomu připadá geniální něco, pro co třeba já nemám vůbec žádné využití. Například nikdy nedělám řádky tak dlouhé abych pro pouhý pohled na jejich začátek nebo konec musel hýbat něčím jiným než očima :)
mcedit je pěkný svojí jednoduchostí, podobně jako "nano" nebo "ee" (freebsd), ale na známé giganty opravdu nemá. To nevadí, já taky používal pár let nano s vlastním syntax highlightingem :)
ad. live ftp editace -- vim + jakákoli implementace ftpfs
ad. sloupcový blok -- vim a ctrl-v (VISUAL BLOCK)
ad. buffer mezi soubory -- vim a třeba visual mode
ad. undo kurzoru -- vim a .. kromě zmíněných věcí se dá skočit na místo posledního editu (kde je automatický mark) pomocí "`." , dvojitý stisk "``" pak skočí zpět
to undo me nikdy po home / end v dlouhym radku nenapadlo, a cely to poskakovani ve me vyvolava spis zmatek. Ze by editace souboru na ftp mohla byt slozitejsi nez "F4" me taky nikdy nenapadlo..
mcedit nadsene propaguju, bohuzel se vzdycky setkam se smichem..no, konecne sem nasel spriznenou dusi :D
ps..jednu dobu sem taky pouzival Motor IDE ;p
Jak už tady zaznělo, nedělej kilometrový řádky kódu a tyhle nesmysly můžeš pustit z hlavy. Poslední dva roky se věnuju webu, kde je podobný styl zápisu neuvěřitelně rozšířená úchylka, takže už jsem na to vyloženě alergický. Když musím v editoru bez automatického formátování upravovat kód po někom, kdo si pojem "úsporný kód" vyložil jako padesát pětisetznakových řádků, tak mám chuť dotyčného vyhledat a na místě ubít jeho vlastní klávesnicí.
Myslim, ze to, co autor chtel rict je:
"Jsem lama a neznam zadny opravdovy editor, proto pouzivam to prvni na co jsem narazil"
coz je samozrejme v poradku, ja za svych "lamich" let take pouzival mcedit. Co me ale zarazi je autoruv nedostatek soudnosti. Protoze jak jinak nazvat propagaci primitivniho textoveho editoru na root.cz, kde se da ocekavat znacne procento lidi kteri pouzivaji VIM nebo EMACS?
belzebub: používám gedit == jsem lama? Takovýto přístup se dá aplikovat donekonečna. Vždy se najde "frajer" co řekne: "Kdo si nekompiluje jádro je lama." a hned přispěchá další frajer s hláškou: "Cože?! Kdybys nebyl lama, tak si napíšeš vlastní jádro (v assembleru samozřejmě)!".
[20] na Vimu je super, že se hodí na obojí, jak na rychlou úpravu nějakého konfiguráku, tak i na ty větší projekty. Prostě nemá žádnou takovou tu mezní hranici, kdy by si člověk řekl, že je buď kanónem na vrabce a nebo naopak nedostatečnou hračkou. To z něj dělá silně univerzální nástroj použitelný prakticky v každé situaci. Kdežto editory jako mcedit nebo gedit jsou dobré akorát tak na to zeditování konfiguráku nebo jednosouborového čistého textu. Mcedit snad ani nemá žádnou možnost jak otevřít více souborů najednou (nebo jsem ji neobjevil).
Chtěl jsem spíš obecně reagovat právě na to jak jsi mluvil o tom, že se gedit nehodí na nic většího. Toto je totiž pro mně jedna ze dvou killer featur Vimu - to že se hodí jak na ti pidi editace konfiguráků, protože se otvírá ultrarychle a zároveň lze použít na rozsáhlejší projekty, protože má obrovskou hromadu funkcí. Ta druhá je, že je to konzolová aplikace a jako taková krásně funguje v Yakuake, takže mám ten otevřený Vim pořád krásně při ruce a jediným stiskem klávesy si ho můžu buď vyvolat a nebo schovat :) To je prostě k nezaplacení a něco tak strašně návykového, že i když jsem párkrát zkoušel používat něco jiného nakonec jsem po chvíli vždycky opět utekl zpátky k pohodlí Vimu...
Když už se to tu tak probírá - používám editor joe. Žel, vypadá to, že je mrtvý, ale přesto stále použitelný. Konzolový, umožňuje více oken, různá kódování, zvýrazňování syntaxe, hex, doplňování, sloupcové bloky, bookmarky, makra, analýzu výstupu překladače atd... (ano, vím že vim tohle všechno umí také) a navíc má stejné ovládání jako první textový editor, který se mi dostal pod ruku: ide turbo pascalu 3.0 :-).
[19] Prectete si laskave znovu co jsem psal - ja nekritizuji to ze autor pouziva mcedit, je spousta legitimnich duvodu proc ho pouzivat. Kritizuji autorovu snahu mcedit vychvalovat a doporucovat, pricemz zjevne doporucuje veci, ktere jsou principialne spatne (pouzivat UNDO pro historii pohybu) a tvrdi veci, ktere nejsou pravda (tj. ze zadny jiny editor neumi historii pohybu).
Abych to lepe vysvetlil: to co autor dela, je jakoby prisel na web milovniku Mozzarta a zacal povidat jak je Michal David nejlepsi skladatel. Ano, Michal David jiste muze byt pro mnoho lidi zabavny, ale argumentovat s nim na webu milovniku Mozzarta je opravdu dost mimo.
Co se geditu tyce, je mi lito, ale na svete existuji pouze 2 opravdove kvalitni, vykonne a univerzalni textove editory - VIM a EMACS. Muzeme se o tom hadat, muzeme o tom diskutovat, ale to je asi tak vsechno co s tim muzeme delat.
[25] Emacs u mně doplatil na to, že na 486 na které jsem s Linuxem začínal, nabíhal ve srovnání s Vimem citelně pomaleji, tím pádem byl Vim jasná volba. Dneska už koukám Emacs nabíhá bleskurychle, zrovna jsem si to vyzkoušel. Překvapilo mně, že je nyní třeba jej spouštět s parametrem -nw aby nenabíhal v grafickém režimu, ale klasicky v terminálu. Ještě víc mně překvapilo, že si stále pamatuju klávesovou zkratku na jeho vypnutí, ačkoliv je to už určitě minimálně deset let co jsem si s ním hrál naposledy :)
Na to, co autor popisuje (tj. někam odskočit a zase zpátky) není potřeba Undo na kurzor, ale stačí v Emacsu obyčejné C- - set-mark a C-x C-x (exchange-point-and-mark) a dá se tím skákat tam a zpátky.
Dělat takovou věc pomocí Undo mi trochu přijde jako drbat se levou nohou za pravým uchem :).
[29] Ono taky záleží na tom, kolik se toho natahovalo z .emacs. Někdy dost (v řádu sekund až desítek sekund) pomohlo prosté emacs -q (nebo dneska koukám -Q), aby se nenatahovaly všechny ty lispové knihovny. Případně emacsclient (a mít puštěný jeden hlavní emacs se server-start).
[25]: me vzdycky udivuje, jak nejaka lama prijde a oznacuje nekoho druheho za lamu jen proto, ze pouziva pro svou praci ku plne spokojenosti neco jineho nez velci 'guruove' jako je ona sama.
Je uplne jedno v cem kdo co pise, dulezite je CO pise a co to komu prinese.
Pouzivani UNDO na vraceni cursor movements je naopak principialne SPRAVNE, od toho to je UNDO. A nikdy jsem NEREKL (nenapsal) ze by neexistoval jiny editor s undo pro cursor movements, pouze jsem konstatoval, ze jsem zadny NEVIDEL.
[31] Původně jsem myslel, že tento blog post je nějaká recese nebo flamebait, ale asi ne. Nic proti používání mcedit, když Ti vyhovuje. Nicméně tvrdit, že používání cursor movements v rámci Undo je principiálně správné, to je dost kontroverzní tvrzení. Samozřejmě, člověk to nemusí používat a mazat si hotovou práci kvůli tomu, aby se dostal kurzorem tam, kde byl před minutou, je to na uživateli. Problém vidím ovšem v tom, že gró práce s textovým editorem jsou úpravy textu a ne pohybování v textu. A pokud to vrací zpět každý pohyb kurzorem o jeden znak, musí to nutně zdržovat, pokud dojde k rozsáhlejším pohybům od předchozí editace. Například ve Vimu když zmáčknu "u", vrátím zpět dokonce celou jednu editační akci a ne pouze jeden změněný znak. Můžeme se bavit o tom, co je "principiálně správné", nicméně podle mých zkušeností (a uznávám, že může záležet na tom, kolik toho edituju apod., ale IMO to je typické) je tahle granularita velice vhodná.
Celkově bych Ti doporučoval naučit se Vim natolik, aby pro Tebe nebyl koulí na noze (jak to ze začátku bývá), nýbrž abys v něm byl relativně zajetý a porovnat si práci v něm s prací v mceditu. IMO budeš ještě spokojenější.
[32] Bych fakt nevěřil, že někdo dokáže uvažovat o tom, jaké je "principiálně správné" chování funkce Undo v editoru. Chápu když se člení programátorské techniky "principiálně správné" a "principiálně nesprávné", ale aby chtěl někdo někomu ještě mluvit do toho, jaký se mu má líbit editor, to už trochu moc, ne? To mne vede k prohlášení, že je "principiálně správné", aby se funkce Undo volala zásadně klávesovou zkratkou Ctrl+K + _ a kdo to dělá jinak, nebo propaguje jiný způsob, byť na svém blogu, je třeba ho upálit, ukamenovat a rozčtvrtit (vše za živa, pochopitelně).
Tomáš je autorem několika více či méně známých projektů jak z oblasti operačních systémů, tak internetu. V současnosti samozvaný expert na Linux, Bash, PHP a MySQL.
Přečteno 25 945×
Přečteno 23 974×
Přečteno 19 499×
Přečteno 18 283×
Přečteno 12 887×