dired
Основной файловый менеджер емакса. Опять же, случайная куча случайно прихваченного.
Втягиваюсь в использование ооочень медленно, но таки да. Ещё не настолько, чтоб совсем отказаться хотя бы, скажем, от SpaceFM. Но отчетливо замечаю, что всё реже залезаю как туда, так и в mc.
- dired сортирует файлы по датам, если ему сказать s.
- https://github.com/jojojames/dired-sidebar - dired-sidebar - каталог в сайдбаре
- http://ergoemacs.org/emacs/file_management.html
- http://ergoemacs.org/emacs/dired_sort.html
- https://www.emacswiki.org/emacs/DiredOmitMode - (скрывание и раскрашивание)
- http://ergoemacs.org/emacs/emacs_dired_open_file_in_ext_apps.html
- http://ergoemacs.org/emacs/emacs_dired_tips.html
- http://ergoemacs.org/emacs/keyboard_shortcuts.html
- https://github.com/xFA25E/dired-atool-transient - для упаковки файлов в архив или распаковки прямо в dired.
Альтернативы:
- neotree - у меня не прижилось.
- treemacs - https://github.com/Alexander-Miller/treemacs
- https://github.com/suntsov/efar
- https://github.com/Fuco1/dired-hacks - там было про варианты открывания, подсветка, ещё какие-то полезности.
- https://emacs.dyerdwelling.family/emacs/20230529112814-emacs--opening-files-externally-natively/ - про варианты, как открывать файлы вне emacs из dired.
rename multiple files in emacs,
the most easy way is:
Alt+x dired to go to the directory. Alt+x dired-toggle-read-only 【Ctrl+x Ctrl+q】. Then, just edit the file names. When done, wdired-finish-edit 【Ctrl+c Ctrl+c】 to commit the changes. To abort, Alt+x wdired-abort-changes 【Ctrl+c Ctrl+k】.
You can use find replace when in edit mode. For example, Alt+x query-replace or Alt+x query-replace-regexp. http://ergoemacs.org/emacs/rename_file_pattern.html http://ergoemacs.org/emacs/emacs_find_replace.html http://ergoemacs.org/emacs/find_replace_inter.html
Alt+x dired, then type a directory path, to list a directory.
Press ^
to go up a directory.
Now, your cursor should be on the directory you want to do the find/replace.
Select Only Some Files
If you want to find/replace only files ending in “.html”, or “.js”, or other selections of files, you need to mark files. When there are marked files, emacs will do find/replace only on those marked ones. When there are no marked files, emacs will do find/replace on the file/directory the cursor is on.
Mark Files/Directories
Press m to mark the file/directory under cursor. Press u to unmark the file/directory under cursor. Press U to unmark all marked.
Mark Files by Regex
Alt+x dired-mark-files-regexp 【\% m】 then type your regex pattern. For example, if you want to mark all files ending in “.html”, then type 【\% m】 then \verb|\.html$|.
hide details
M-x dired-hide-details-mode.
In dired, Alt+x dired-hide-details-mode. Key is (.
If you want it always on, add a hook. Like this:
(defun xah-dired-mode-setup () "to be run as hook for `dired-mode'." (dired-hide-details-mode 1)) (add-hook 'dired-mode-hook 'xah-dired-mode-setup)
How to delete or copy a directory?
Put this in your emacs init:
;; allow dired to delete or copy dir (setq dired-recursive-copies (quote always)) ; “always” means no asking (setq dired-recursive-deletes (quote top)) ; “top” means ask once
Then in dired, Alt+x dired-do-delete 【D】 to delete directory.
How to copy from one dired dir to the next dired dir shown in a split window?
Put this in your emacs init:
(setq dired-dwim-target t)
Eval the above or restart emacs. [see Evaluate Emacs Lisp Code]
Now, go to dired, then Alt+x split-window-below, then go to another dired dir. Now, when you press C to copy, the other dir in the split pane will be default destination. Same for dired-do-rename 【R】 and others.
How to make dired use the same buffer for viewing directory?
In dired, Alt+x dired-find-alternate-file 【a】 to open the file/directory without creating a new buffer.
If you want Enter and \verb|^| (parent dir) to use the same buffer, put the following in your emacs init file:
(require 'dired ) (define-key dired-mode-map (kbd "RET") 'dired-find-alternate-file) ; was dired-advertised-find-file (define-key dired-mode-map (kbd "\verb|^|") (lambda () (interactive) (find-alternate-file ".."))) ; was dired-up-directory
How to hide some files?
Alt+x dired-do-kill-lines 【k】 to hide marked files.
File Related Tips
In a file, how to go to its directory and place cursor on the file name?
Put this in your init file:
(require 'dired-x)
In any file buffer, Alt+x dired-jump 【Ctrl+x Ctrl+j】 to jump to the directory of current buffer
dired-launch
Возможность открывать файлы предпочитаемой смотрелкой прямо из dired - файлового менеджера emacs-а. https://github.com/thomp/dired-launch
Способов достичь примерно этого, как обычно, более одного.
- Можно использовать в буфере dired
!
, чтоб запустить команду оболочки с указанным файлом в качестве аргумента. Но это каждый раз вводить эту команду, и не трогать emacs, пока не завершил просмотр. - Или
&
- то же самое, но выполнение "асинхронное", соответственно, emacs не дожидается результата, а вполне доступен, скажем, можно что-то из файла копировать, или заниматься посторонними делами. Но опять каждый раз вводить команду. - Или даже ещё хитрее, так, чтоб программа не закрылась при выходе из emacs:
C-u ! nohup command ? &
- openwith, который неимоверно меня раздражал, помнится. Потому что пытаешься уже из файлового менеджера емаксклиентом открыть, скажем, html, а заботливый openwith немедленно отправляет его в браузер. Трам-пам-пам.
- emacs-launch, с которым я незнакома, и наверное, ещё что-то мне неведомое.
- dired-launch - мой выбор на сейчас.
Ставится с гитхаба или через melpa. Позволяет выбрать запускалку для конкретных типов файлов и для вообще всего, если не нашлось ничего конкретного (xdg-open и mimeopen - как вариант).
По умолчанию J - для запуска "чем сам нашёл", K запрашивает, чем запускать (helm у меня при этом предлагает варианты), и потом интересуется, не запомнить ли выбор.
Ничего лишнего, просто и удобно. Главное, помнить, что это - есть. А то само о себе ничем не напоминает. )
Минутка ностальгии
- Emacs Advanced dired Tips (File Management) http://xahlee.org/emacs/emacs_dired_tips.html - разумеется, ссылка неактуальна. Давно это было… :)