Diredc a.k.a. Dired ortodoxne
Pred piatimi rokmi som opísal rozšírenie Emacsu s názvom „Sunrise Commander“. Jedná sa o nadstavbu pre vstavaný súborový manažér „Dired“. A dnes si niečo povieme o ďalšej jeho nadstavbe, s podobným názvom - „Diredc“.
Dired ortodoxne?
Zacitujeme si zo spomínaného staršieho článku:
Wikipédia nás učí:
Ortodoxnosť (z gréc. ortho - správny, pravý a doxa - myšlienka, učenie, slávenie) alebo ortodoxia je vlastnosť pevne sa pridržiavať určitého (spravidla pôvodného/staršieho/hlavného) myšlienkového smeru (napr. v ekonómii), učenia, presvedčenia či viery (v poslednom prípade teda vlastnosť prísne veriť a/alebo pravovernosť).
V počítačovej terminológii sa ujal pojem ortodoxný súborový manažér. Takže dlhodobo zaužívaný – dizajnom, princípom a ovládaním. Jasné, reč je o manažéroch, nazývaných aj komandéry, ktoré viac-menej vychádzajú z Norton Commander-a. NC pozná každý, v našom svete ho nasledujú napr. Midnight Commander, Gnome Commander, Krusader, Necromancer, Tux Commander, Ghost Commander, Sunflower Commander, Double Commander… a možno sa ešte nejaké nájdu, ktoré sa budú (až na pár výnimiek) volať <nejaký> Commander. Skratka označenia týchto programov je i OFM.
Sunrise Commander mi dobre slúžil, ale s príchodom nových verzií Emacsu som narazil na niekoľko „bugov“, ako napríklad, že z bufferu Sunrise sa naraz stal buffer dired-u. A i pár iných. A žiaľ, Sunrise Commander už nikto aktívne nevyvíja. Ale práve v tom momente som narazil na diredc.
Diredc
Požičiame si pár myšlienok z webu autora:
Tento balík rozširuje dired-mode Emacsu o funkcie, ktoré sa nachádzajú v takmer všetkých správcov súborov a tiež niektoré jedinečné funkcie:
- odolný vyhradený dvojpanelový rám,
- podobný vzhľad ako Midnight Commander,
- inteligentné obnovenie ručne zmenenej konfigurácie rámu,
- čisté a úplné ukončenie diredc/dired,
- navigovateľná história adresárov dozadu, dopredu alebo na priamu položku histórie,
- režim rýchleho náhľadu súborov inšpirovaný a podobný režimu Midnight Commander-a,
- prispôsobiteľné kritériá vylúčenia na potlačenie nežiaducich súborov (napr. binárne súbory),
- voliteľné zobrazenie stavových bufferov magit pre korene úložiska,
- doplnkové informácie o aktuálnom súbore v minibufri (voliteľné) – napr. výstup z getfattr, getfacl, stat, exif,
- zobrazenie viacerých panelov – inšpirované a podobné ako v Midnight Commander,
- vynikajúca konfigurovateľnosť,
- prehodenie panelov (vrátane záznamov v histórii),
- správa koša podľa štandardu XFreeDesktop,
- obnovenie zmazaných súborov na ich pôvodné umiestnenie,
- vyprázdnenie koša spolu s jeho administratívnou réžiou,
- zobrazenie súhrnných informácií o koši,
- navigácia „nahor“ o n nadradených adresárov,
- spúšťanie asynchrónnych procesov pre súbory – procesy bežia aj po ukončení programu Emacs,
- rýchle okno shellu – na výber je z viacerých typov shellu.
Opisovať program ako taký nemá zmysel – bolo by to prepisovanie dokumentácie. V princípe sa neodlišuje od iných dvojpanelových súborových manažérov. Na rozdiel od Sunrise Commander-a sa snaží používať len a len dva dired buffre; ak je ich viac, ponúkne možnosť výberu aktívnych, ale tiež ponechania alebo zmazanie všetkých alebo nepoužívaných. Samozrejme, používa klávesové skratky a terminológiu zo sveta Emacsu, čo je len dobre a pre mňa dôvod, prečo nepoužívam iné, hoci výborné manažéry ako Double Commander alebo Gnome Commander (inak Double Commander sa tiež dá dosť priohnúť klávesovými skratkami Emacsu, dokonca podporuje skratky zadávané ako poradie stlačení… ale stále to nie je Emacs samozrejme 😉).
Ešte dodám, že „rýchle okno shellu“ umožňuje používať bash, fish, eshell,…
![]() |
Obr 0.: Klasika - 2 panely vedľa seba. |
Ale subjektívny blogový zápisok by mal byť o niečom inom – ostatne toto je zaujímavná téma na diskusiu v zmysle, či má blogovanie zmysel v dobe AI – a veru aj bude.
Ako nám ukradli F-klávesy
Spomenul som si na starý dobrý vtip:
Šesťdesiate roky. Zväz sovietskych socialistických republík. Moskva. Ivan si kúpil auto, priviezol si ho domov a pekne zaparkoval pred činžiakom. Na druhý deň pozrie ráno z okna a Záporožec nikde. Išiel to teda ohlásiť na milíciu. Keď ho milicionár vypočuje, prísne vraví:
- „Graždanin, pozrite sa na túto stenu! Čo vidíte?“
- „Nó… obraz Vladimíra Iljiča Lenina.“ odpovie popravde Ivan.
- „A čo je, Graždanin, na tom obraze? Poriadne sa pozrite!“
- „Lenin, obklopený svojimi najbližšími priateľmi.“
- „A čo ešte vidíte? Čo drží súdruh Lenin v ruke?“
- „Čiapku.“ hovorí Ivan.
- „No, tak to máme! Vladimír Iljič Lenin, obklopený svojimi najbližšími priateľmi a drží si svoju čiapku v ruke… A vy!?! Vy si necháte auto stáť na ulici!“
Kto nám, a kedy, ukradol F-klávesy – teda funkčné klávesy F1 – F12?
Vinníka nepoznáme, ale určite to bol niektorý „zvyčajne podozrivý“, ako napríklad Microsoft alebo Apple. Čas tiež nevieme.
A krádež spočívala v tom, že zaviedli podivné (dnes) štandardy, ktoré pokazili ergonómiu a pokrivili prsty.
Tak napríklad: F1 je výborne poziciovaný kláves - vedľa ESC, dobre dosiahnuteľný, oddelený. Rozum prikazuje dať tam často používanú funkciu. Tak ja tam mám undo. A nie nejaká nápoveda! Ako často totiť človek potrebuje nápovedu, aby si uzurpovala také lukratívne miesto?
Alebo niekto – „obvykle podozrivý“ – rozhodol, že často používané funkcie vystrihovania, kopírovania a vloženia, nazývané i (cit. Mirek Biňas) Ctrl-Cudzí a Ctrl-Vlastný, kill a yank – no proste ich dáme s modifikátorom na spodný riadok, nech je karpálny tunel na vzostupe, najmä u tých, ktorí nestláčajú Ctrl dlaňou! Ale ja ich vždy dávam na F2, F3 a F4. Asi veľa kradnem z cudzich prác 😉.
F5 a F6 mám zvyčajne spojené so záložkami a skokmi na ne, F7 a F8 na presun po buffroch Emacsu, klasika F9 je kompilácia (ale napríklad v LaTeXu renderovaný náhľad, v diredc je to história…), F10 menu, F11 „fullscreen“ a F12 je Caps Lock! Veru ten Caps Lock, ktorý má opäť lukratívne miesto v základnom rade klávesnice a používa sa zriedkavo, ak teda človek neprispieva do ukričaných diskusií ☺. Na mieste Caps Lock-u mám radšej modifkátor Hyper. Lebo v Emacse modifikátorov nikdy nie je dosť.
Ako nepoužívam „use-package“
use-package je makro v Emacse, ktoré zjednodušuje konfiguráciu a správu balíkov, umožňuje ich načítanie len v prípade potreby a udržuje prehľadnú konfiguráciu. Pomáha zlepšiť čas spustenia a prehľadne organizuje nastavenia balíkov.
To znie ako skvelá vec. A dozaista je.
Lenže ja mám konfiguračné súbory z čias, keď use-package neexistovalo a nechce sa mi ich prerábať. Stačilo, že som ich zvládol prekopírovať ~/.emacs
do ~/.emacs.d/init.el
😃.
Ukončím toto lamentovanie konštatovaním, že vždy som mal inicializačný súbor pomerne malý, a používal som sústavu hook-ov na načítanie rozšírení, ak boli potrebné.
Napríklad:
(add-hook 'tcl-mode-hook (lambda ()
(load-file "/home/richard/.emacs.d/load-tcl-hooks.el")))
Takže rozšírenia napr. pre uvedený jazyk Tcl sa spustili, až keď som ich potreboval. A takto to mám analogicky pre iné typy súborov (c
, ino
, sh
, org
, tex
…) alebo iné situácie, akými je spustenie súborového manažéra alebo RSS čítačky.
(defun diredc-start() "Start diredc" (interactive) (load "~/.emacs.d/load-diredc-hooks.el") (diredc))
Čo zaujímavé je v „hook“-u pre diredc?
Tak napríklad načítanie niektorých ďalších rozšírení. O diredc-tabs.el bude ešte reč.
(load-file "/home/richard/.emacs.d/vendor/dired-preview/dired-preview.el") (load-file "/home/richard/.emacs.d/vendor/diredc-tabs/diredc-tabs.el")
Alebo súborové asociáce (ak nechcem XDG), vlastné funkcie ako:
- spájanie označených PDF,
- poslanie viacerých PDF do programu naraz,
- zmena veľkostí obrázkov,
- odpojenie pripojeného disku,
- „detox“ súborov (nahradenie medzier
_
, diakritiky znakmi bez nej…), - rýchle zbalenie adresárov,
- zadávanie a odstránenie hesiel pre PDF súbory,
- šifrovanie a dešifrovanie súborov pomocou
ccrypt
, - lepšie kopírovanie/archivácia pomocou
rsync
, - a iné…
Ak niekomu vypisuje gzip hlásenie o ignorovaní adresára pri snahe o jeho komprimovanie pomocu vstavaného dired-do-compress
, potom pomôže re-nastavenie (takto možno pridať i iné algoritmy):
(setq dired-compress-file-suffixes nil) (add-to-list 'dired-compress-file-suffixes '("\\.tar\\.gz\\'" "" "gzip -dc %i | tar -xzf -"))
Ja používam pre zobrazenie súborov (prepínanie pomocou M-t
) stručnejšie zobrazenie (opäť vďaka otvorenosti zdrojových kódov):
(add-to-list 'diredc-display-listing-switches-list '("long, group, K sizes" . "-oL --group-directories-first --time-style=long-iso"))
diredc-tabs.el
Sunrise Commander mal rozšírenie nazvané sunrise-x-tabs, ktoré pridalo známe taby na rýchle prechádzanie medzi zvolenými adresármi.
Diredc má šikovnú históriu, ale tá neplní úplne ten istý účel.
Preto som si v Elispe doprogramoval podobnú funkcionalitu. Jej zmyslom je mať pre ľavé i pravé okno užívateľsky definovaný zoznam adresárov, medzi ktorými sa dá veľmi rýchle prepínať. Tak som definoval o.i. tieto funkcie, a k nim priradil klávesové skratky:
funkcia | príkaz | skratka |
---|---|---|
vloží aktuálny adresár v ľavom okne do zoznamu | diredc-tabs-create-tab-left-pane | C-<f7> |
vloží aktuálny adresár v pravom okne do zoznamu | diredc-tabs-create-tab-right-pane | C-<f8> |
prepínanie medzi adresármi zoznamu ľavého okna | diredc-tabs-switch-left-pane-tab | <f7> |
prepínanie medzi adresármi zoznamu pravého okna | diredc-tabs-switch-right-pane-tab | <f8> |
odstráni aktuálny adresár v ľavom okne zo zoznamu | diredc-tabs-delete-tab-left-pane | <f12> <f7> |
odstráni aktuálny adresár v pravom okne zo zoznamu | diredc-tabs-delete-tab-right-pane | <f12> <f8> |
odstráni všetky adresáre zo zoznamu pre ľavé okno | defun diredc-tabs-reset-left-pane-tabs-list | |
odstráni všetky adresáre zo zoznamu pre pravé okno | defun diredc-tabs-reset-right-pane-tabs-list |
Počas týchto operácii sa aktuálny zoznam i zvolený adresár vypisujú v echo oblasti Emacsu.
Ak sa zavolajú funkcie diredc-tabs-switch-left-pane-tab
a diredc-tabs-switch-right-pane-tab
s univerzálnym modifikátorom, resp. ich klávesová skratka nasleduje po C-u
(takže je to kombo C-u F7
), tak sa v spodnej časti zobrazí zoznam príslušných adresárov a možno medzi nimi vyhľadávať zadávaním časti názvu/cesty a prechádzať na ne. Zvolil som toto riešenie namiesto popup funkcionality, v ktorej sa kandidáti nedajú zužovať žiadnym frameworkom (kdežto tu je to nezávislé, podľa toho, čo užívateľ používa, napr. ivy, ido, helm, fido…)
![]() |
Obr 1: Výber „tabu“ zo zoznamu, spolu s dynamickým zužovaním.
|
A čo história?
Diredc má vlastnosť, že pre každé okno si pamätá svoju históriu. Ten zoznam sa tvorí pri volaní funkcie diredc-hist-find-alternate-file
, ktorá sa spúšta s prechodom dovnútra adresárovej štruktúry.
V mojich funkciách som to ošetril tak, že sa pri zmene adresáru ukladá ešte jej kópia do zväčšujúceho sa zoznamu (obmedzil som ho na 300 položiek), a ten sa potom načíta a využíva – opäť funkcionalita s dynamicky sa zužujúcim výberom kandidátov – pri výberu adresára z histórie.
Malým detailom je úprava modeline
, tak ako to vidno na obrázkoch, z ktorej som odstránil nepotrebné informácie.
Záver
Na slobodnom softvéri je skvelé, že sa dá študovať a upravovať. A veľa sa dá pritom naučiť. Aj keď sa jedná iba o drobné zmeny, ich dopad je zásadný. Ja používam slobodné programy 20 rokov a stále ma to(to) neprestáva fascinovať.
Keby sme si zasnívali o svete, kde by napríklad Microsoft Office bol slobodným softvérom, ako dlho by trvalo, než by nadšenci začali s jeho modifikáciou a zlepšovaním?
„Happy hacking!“
Odkaz na Gitlab: diredc-tabs.el
Pre pridávanie komentárov sa musíte prihlásiť.
teda na emacs som uz zabudol, to bolo utrpenioe, aj ked mensie nez vim
clanok super
Áno, Emacs má „od prirodzenia“ prijateľné a predvídateľné ovládanie - v zmysle, že stlačenie klávesu má očakávateľnú reakciu, defaultne to má menu, kontextové menu,… proste ako bežný program…
Ale potom to začne - defaultné klávesové skratky poplatné svojej dobe. Ale ak sa na ne zvykne, tak človek pochopí skrytú krásu :).
tak ja stale pouzivam "stare" skratky.
napr win+e otvori file manager a pod.
ctrl+c exit z terminalu (povodne aj z emacsu ak si dobre pamatam)
presne
... myslím, že nie,
rád si čítam tieto tvoje blogy, nie všetkému síce rozumiem ale sú písané takým štýlom, ako píšem ja,
mám pozitívnu myšlienku, skúsenosť, ..., s ktorou sa chcem podeliť, tak to hodím "na papier", stokrát to prepíšem, zmažem a znova doplním,
ako napísať všetko čo chcem pár vetami, a ešte aby to niekto pochopil, prijal a snáď aj ocenil?
:)
vďaka za príspevok a pusť sa do toho o AI
Presne tak! Zdieľanie informácií, skúseností, atď, toto je základom posunu spoločnosti.
A myslím, že väčšina ľudí má prirodzenú ochotu zdieľať svoje vedomosti.
Veru, toto je ťažké. Povedať niečo zrozumiteľne presným počtom viet je určite majstrovstvo.