neboli editor adresářů vytváří buffer s obsahem adresáře (a volitelně s obsahem některých podadresářů). Pro pohyb v tomto bufferu lze používat běžné příkazy Emacsu pro pohyb v bufferu a některé speciální dired příkazy. Mód spustíme buď klávesovou zkratkou C-x d
, nebo pomocí M-x dired
. Po zadání adresáře nebo masky pro jména souborů, které se mají zobrazit, se vytvoří samotný dired buffer. Kromě již zmíněných běžných kláves pro pohyb po bufferu jsou navíc předefinovány klávesy <SPC>
pro posun vpřed a <DEL>
pro posun vzad.
Dired mód rozlišuje tzv. příznaky (flags) a značky (marks). První označují soubory určené ke smazání, druhé označují soubory pro další hromadnou práci s nimi. Oba dva druhy označování se hojně používají při práci s více soubory a je důležité je správně rozlišit. Tak například klávesa d
je namapována na označování příznaky (flags) pro mazání, klávesa u
na odstraňování těchto příznaků. Příznaky se nastavují souborům, na kterých je umístěn kurzor. Samotné smazání se provede až stiskem klávesy x
. Soubory označené příznakem pro smazání jsou v bufferu vyznačeny velkým písmenem D
. Před samotným smazáním bude Emacs vyžadovat potvrzení v minibufferu. Kromě označování jednoho souboru lze označit pro mazání více souborů najednou. Například pomocí #
označíme všechny automaticky uložené soubory (jejichž jména Emacs ohraničuje právě tímto symbolem), klávesou ~
označíme všechny zazálohované soubory, ale jednoduše lze také (pomocí % d REGEXP
označit soubory se jménem vyhovujícím regulárnímu výrazu.
Kromě mazání umožňuje dired mód další operace nad zobrazenými soubory. Klávesy f
a <RET>
otevírají soubor, na kterém se nachází kurzor. Další příkazy umožňují například otevřít soubor v jiném okně apod. V předchozím odstavci již byl zmíněn rozdíl mezi příznaky a značkami. Pro označování souborů značkami (marks) slouží zejména klávesa m
, která označí soubor, na jehož jméně stojí kurzor. Jednoduše lze dále označovat spustitelné soubory ( * *
), symbolické linky ( * @
), adresáře ( * /
). Označené soubory jsou zvýrazněny právě symbolem (hvězdičky). Další mnemotechnické pomůcky pro zmíněné klávesové zkratky pramení ze způsobu zobrazování, neboť
/
(lomítko) jsou v dired bufferu adresáře a @
symbolické linky (např. také volba --dired
pro příkaz ls
). Odstranění značky ze souboru pod kurzorem je namapováno na klávesu u
. Kombinací !
lze například odstranit všechny značky, dále lze pokládat a odstraňovat značky na soubory s regulárními výrazy apod. Vyjmenovávat všechny možné kombinace by bylo nejspíš příliš nudné a zdlouhavé.
Je ovšem důležité si všimnout toho, že dired mód nepoužívá pouze jeden typ značek (již zmiňovanou hvězdičku), ale značkou může být libovolný znak. Například tedy posloupností * c OLD_MARKCHAR NEW_MARKCHAR
lze zaměnit stávající značku (OLD_MARKCHAR) za novou (NEW_MARKCHAR). Díky tomu lze značky jednoduše zaměňovat a zpracovávat a třídit tak soubory podle mnoha kriterií. Například sekvencí * c D t * c SPC D * c t SPC
označíme písmenem velké D
(tedy ke smazání) všechny soubory, které nebyly označeny žádnou značkou a naopak, souborům, které byly označeny, značky odstraníme (předpokládáme, že žádný soubor nebyl označen písmenem t
).
Dále si povíme, jaké příkazy lze provádět v dired módu. Všechny následující příkazy jsou namapovány na klávesové zkratky velkých písmen a všechny vyžadují potvrzení nebo nějaký další vstup v minibufferu. Navíc všechny rozlišují, nad kterými soubory bude příkaz proveden. To lze ovlivnit numerickým argumentem, který příkazu říká, že se má provést na následujících N souborech, nebo označením souborů znakem hvězdička. Jinak je příkaz uplatněn pouze na soubor pod kurzorem. Většina příkazů mnemotechnicky odpovídá počátečním písmenům anglických slov odpovídajících operací. Při kopírování ( C
) je třeba zadat nové jméno adresáře či souboru, podle toho, kolik souborů je označeno. Mazat lze kromě výše zmíněného i pomocí D
. Přejmenování ( R
) také vyžaduje argument s novým jménem. Příkazy H
a S
slouží pro vytváření pevných a symbolických odkazů.
Dired mód umožňuje také změny nastavení práv ( M
) souborů nebo změny vlastníka ( O
) či skupiny ( G
) souborů. Soubory lze z dired bufferu tisknout ( P
), ale také například prohledávat na výskyt daného vzorku (zadáním regulárního výrazu) v souboru (klávesa A
; toto je další alternativa k již zmiňovaným TAGům) nebo nahrazovat daný vzorek jiným textem ( Q
). A konečně nezbytnou operací každého správce souborů je vytvoření adresáře ( +
). Kromě všech těchto příkazů lze spustit nějaký příkaz (pomocí !
) na jeden či více souborů v dired bufferu. Příkaz lze spustit s argumentem *
, která bude nahrazena jmény všech souborů, nebo s argumentem ?
, kdy se příkaz provede zvlášť pro každý soubor a symbol otazníku zde odkazuje na konkrétní jméno (například uuencode ? ? > ?.uu
volá program uudecode na všechny soubory v bufferu a ukládá výstup do souborů s příponou uu
).
Snadno lze v dired módu porovnávat soubory; pomocí klávesy =
spustíme funkci dired-diff
pro porovnání aktuálního souboru s jiným souborem, nebo jednoduše pomocí M-=
porovnáme soubor s jeho záložní kopií. Lehce převedeme jména souborů z velkých na malá ( % l
) a opačně ( % u
; hodí se při přenosu souborů mezi různými systémy).
Zajímavá je práce s podadresáři v dired módu. Normálně se zobrazí pouze obsah jednoho konkrétního adresáře. Pomocí funkce dired-maybe-insert-subdir
namapované na klávesu i
lze do stávajícího bufferu, v němž se nachází obsah nějakého adresáře, vložit obsah adresáře, na kterém se nachází kurzor. Po adresářích vložených do jednoho bufferu se lze snadno pohybovat pomocí <
a >
. Dále lze obsahy jednotlivých vložených adresářů skrývat (klávesa $
) nebo skrýt všechny najednou pomocí M-$
.
Aby byla práce s tímto módem jakožto se správcem souborů úplná, zbývá doplnit, že klávesou g
obnovíme obsah dired bufferu (tedy pokud se jeho obsah změnil, provedené změny se zobrazí); klávesou l
se obnoví pouze označené soubory. Mimo to lze přepínat řazení souborů v dired bufferu (standardně jsou řazeny abecedně) na řazení podle data (klávesa s
).
Zajímavý a silný způsob vytváření dired bufferu spočívá v kombinaci použití utility find. Spustíme-li M-x find-name-dired
a zadáme-li požadovaný adresář a masku, vytvoří si dired buffer obsahující všechny soubory, jejichž jména vyhovují zadané masce a nacházejí se v některém z podadresářů zadaného adresáře. Ještě silnější je funkce find-grep-dired
, která vytvoří dired buffer na základě obsahu (!) souborů. Tato funkce přečte z minibufferu adresář a regulární výraz, který hledá v souborech, a v dired bufferu zobrazí ty soubory, které obsahují vzorek vyhovující zadanému regulárnímu výrazu. Poslední a zcela obecnou možností, jak vytvořit dired buffer, je funkce find-dired
, pro kterou lze určit podmínku, kdy má test pro zobrazení souboru uspět. Přesněji řečeno předávaný argument jsou přímo volby pro utilitu find.
Tolik tedy popis dired módu neboli správce souborů v Emacsu. Zajisté existují lepší a přehlednější programy, nicméně je pro uživatele Emacsu dobré o jeho existenci vědět. Navíc některé operace lze skutečně pomocí tohoto módu provádět velmi snadno. Příště si povíme něco o použití Emacsu při tvorbě dokumentů pomocí TeXu a programů odvozených.