需 Emacs 28.1 及以上版本;安装后要手动开启 dirvish-override-dired-mode 才全局生效;包来自 Nongnu-Elpa 或 Melpa,需先配置好对应软件源
M-x package-install RET dirvish RET
M-x dirvish-override-dired-mode RETREADME 未说明;仅需 Emacs 28.1+,无特殊硬件要求
给 Emacs 内置 Dired 加上现代化界面和完整文件管理能力的增强包
给 Emacs Dired 加上开箱即用的增强配置,让文件管理界面更精致顺手,省去自己拼装各种插件的麻烦。
核心能力
- 在 Dired 之上提供可高度定制的可视化界面
- 内置一整套扩展,把 Dired 变成现代文件管理器
- 用 transient.el 提供 dirvish-dispatch 快捷键菜单
- dirvish-dwim 在非单窗口时避免占满整个 frame
- 灵感来自 ranger,部分扩展重写自 dired-hacks
容易踩的坑
- 2.3.0最新正式版2025-04-26 · 2025-04-26 11:56 UTC
What's Changed
See: https://github.com/alexluigit/dirvish/blob/main/docs/CHANGELOG.org#230
New Contributors
- @niv-l made their first contribution in https://github.com/alexluigit/dirvish/pull/333
- @Patryk27 made their first contribution in https://github.com/alexluigit/dirvish/pull/334
Full Changelog: https://github.com/alexluigit/dirvish/compare/2.2.7...2.3.0
- 2.2.72025-03-12 · 2025-03-12 16:54 UTC
查看更新说明
What's changed
- use different handlers for local / sudo / remote connections
- responsive & aligned
git-msgattribute (github style) - support changing display order of some attributes
- bug fixes for
dirvish-subtree
Screenshots
https://github.com/alexluigit/binaries/raw/refs/heads/main/dirvish/assets/git-msg.mp4
Full Changelog: https://github.com/alexluigit/dirvish/compare/2.2.3...2.2.7
- 2.2.32025-03-08 · 2025-03-08 13:28 UTC
查看更新说明
Emergency fixes for 2 bugs in 2.2.0:
- Error caused by mismatched vc-backend when expanding subtree
- Incorrect resetting after quitting
dirvish-side
New feature:
dirvish-quitnow works in all dirvish windows (#309)
- 2.2.02025-03-07 · 2025-03-07 13:34 UTC
查看更新说明
BREAKING Changes
- preview text files using proxy buffer (#184 #195 #270 #295)
- replace magick with libvips for faster image preview (#218)
- use 7-zip for archive preview
- support font preview
Other changes
dirvish-reuse-sessionnow accepts new valuequitandopen- allow setting
dirvish-default-layouttonil - add
dirvish-subtree-icon-scale-factoruser option (#185) - fetch
vc-infoattribute asynchronously - add
dirvish-inactiveface - add
dirvish-collapse-separatoruser option (#263) - support session|buffer locally attributes and mode-line-format (#286)
- add
dirvish-special-preview-modeanddirvish-misc-mode - support
dired-find-alternate-file(#186) - sort history entries with access time (#265)
- add
dirvish-mode-line-bar-image-widthoption (#252)
Screenshots
Full Changelog: https://github.com/alexluigit/dirvish/compare/2.1.0...2.2.0
- 2.1.02025-02-14 · 2025-02-14 17:59 UTC
查看更新说明
What's Changed
- Fix #158 : Delete emerge overlays when turning off the mode by @aikrahguzar in https://github.com/alexluigit/dirvish/pull/159
- docs: fix some typos by @feltcat in https://github.com/alexluigit/dirvish/pull/176
- fix(core): don't quote conditions in condition-case by @tarsius in https://github.com/alexluigit/dirvish/pull/206
- add nerd-icons support by @rainstormstudio in https://github.com/alexluigit/dirvish/pull/201
- fix(core): resolve emacs binary path in a more reliable way by @isamert in https://github.com/alexluigit/dirvish/pull/192
- Report error from fd to user by @dvzubarev in https://github.com/alexluigit/dirvish/pull/178
- Use rsync for local file copying in dirvish-rsync by @dvzubarev in https://github.com/alexluigit/dirvish/pull/180
- Add rsync transient map by @dvzubarev in https://github.com/alexluigit/dirvish/pull/181
- fd: add function that reads pattern from user by @dvzubarev in https://github.com/alexluigit/dirvish/pull/187
- Update CUSTOMIZING.org by @liguangsheng in https://github.com/alexluigit/dirvish/pull/198
- Fix an error: void-variable dv in Emacs-30.0.50 by @dvzubarev in https://github.com/alexluigit/dirvish/pull/251
- Remove the restriction on printing for
dirvish-data-for-dirby @isamert in https://github.com/alexluigit/dirvish/pull/266 - Define new faces for all VC states by @protesilaos in https://github.com/alexluigit/dirvish/pull/222
- fix(dired-noselect): Support both lists and strings by @jcf in https://github.com/alexluigit/dirvish/pull/257
- dired-subtree respect dired-omit-mode now by @eki3z in https://github.com/alexluigit/dirvish/pull/268
- refactor(yank): rework copying r2r case for rsync by @dvzubarev in https://github.com/alexluigit/dirvish/pull/215
- fix(subtree): "toggle or open" should open file, not view it by @brownts in https://github.com/alexluigit/dirvish/pull/281
- fix(yank): silence byte-compiler by @tarsius in https://github.com/alexluigit/dirvish/pull/220
- Fix typos by @tarsius in https://github.com/alexluigit/dirvish/pull/227
- Fix custom type specifications by @tarsius in https://github.com/alexluigit/dirvish/pull/239
- yank: fixes for recent r2r refactor commit by @dvzubarev in https://github.com/alexluigit/dirvish/pull/287
- Fix broken link to purcell's emacs in EMACS-NEWCOMERS.org by @LV in https://github.com/alexluigit/dirvish/pull/278
- docs: document the nil case for dirvish-default-layout. by @nicolas-graves in https://github.com/alexluigit/dirvish/pull/231
- Split dirvish-yank--execute into two functions by @dvzubarev in https://github.com/alexluigit/dirvish/pull/290
- fix: prevent killing emacsclient started on a directory by @prati0100 in https://github.com/alexluigit/dirvish/pull/293
- perf(dirvish-peek): prevent redundant updates by tracking previous candidate by @zsxh in https://github.com/alexluigit/dirvish/pull/297
New Contributors
- @feltcat made their first contribution in https://github.com/alexluigit/dirvish/pull/176
- @rainstormstudio made their first contribution in https://github.com/alexluigit/dirvish/pull/201
- @isamert made their first contribution in https://github.com/alexluigit/dirvish/pull/192
- @liguangsheng made their first contribution in https://github.com/alexluigit/dirvish/pull/198
- @protesilaos made their first contribution in https://github.com/alexluigit/dirvish/pull/222
- @jcf made their first contribution in https://github.com/alexluigit/dirvish/pull/257
- @eki3z made their first contribution in https://github.com/alexluigit/dirvish/pull/268
- @brownts made their first contribution in https://github.com/alexluigit/dirvish/pull/281
- @LV made their first contribution in https://github.com/alexluigit/dirvish/pull/278
- @nicolas-graves made their first contribution in https://github.com/alexluigit/dirvish/pull/231
- @prati0100 made their first contribution in https://github.com/alexluigit/dirvish/pull/293
Full Changelog: https://github.com/alexluigit/dirvish/
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
#+AUTHOR: Alex Lu #+EMAIL: [email protected] #+startup: content #+html:
#+html: A polished Dired with batteries included
- Introduction
Dirvish enhances Emacs' built-in Dired mode, providing a visually appealing and highly customizable interface. More than just a facelift, Dirvish delivers a comprehensive suite of features, transforming Dired into a modern and fully functional file manager.
#+begin_quote The experience of dirvish is surreal and even bizarre after all these years of trying to use dired. Like how professionals make their craft look easy, dirvish does something similar with how it builds on dired. Dirvish is paradoxical in that it provides a completely different experience while still fundamentally being dired at its core.
-- Special thanks to @noctuid for [[https://github.com/alexluigit/dirvish/issues/34][this summary of Dirvish]] #+end_quote
- Screenshots
- Installation
Dirvish is available from [[https://elpa.nongnu.org/nongnu/dirvish.html][Nongnu-Elpa]] and [[https://melpa.org/#/dirvish][Melpa]]. You can install it directly via =M-x package-install RET dirvish RET= on Emacs 28.1+. After installation, activate Dirvish globally with =M-x dirvish-override-dired-mode RET=.
- Quickstart
-
=M-x dirvish RET=
Welcome to Dirvish! Use your favorite dired commands here, press
qto quit. -
=M-x dirvish-dwim RET=
Works the same as
dirvishwhen the selected window is the only window; otherwise, it avoids occupying the entire frame. -
=M-x dirvish-dispatch RET=
This is a help/cheatsheet menu powered by
transient.el, the same library used to implement keyboard-driven menus in Magit and many Dirvish extensions. If you prefer this interaction style, consider binding these menus todirvish-mode-map. See [[file:docs/CUSTOMIZING.org][example config]] for details.
- Documentation
For more dirvish customization options and features, see our documentation:
- [[file:docs/CUSTOMIZING.org][Customizing]]
- [[file:docs/EXTENSIONS.org][Extensions]]
- [[file:docs/FAQ.org][FAQ]]
- [[file:docs/EMACS-NEWCOMERS.org][Absolute beginner's guide]]
- Resources
To delve deeper into Dirvish, explore these resources:
- [[file:docs/COMPARISON.org][Related projects]]
- [[file:docs/CHANGELOG.org][Changelog]]
- [[https://github.com/alexluigit/dirvish/discussions][Discussions]]
- Acknowledgements
This package draws inspiration from the terminal file manager [[https://github.com/ranger/ranger][ranger]]. Some extensions began as rewrites of packages from [[https://github.com/Fuco1/dired-hacks][dired-hacks]], but have since been significantly enhanced.
Code contributions:
@@html:@@ @@html:@@ @@html:@@
Useful advice and discussions:
- [[https://github.com/noctuid][Fox Kiester]]
- [[https://github.com/jdtsmith][JD Smith]]
- [[https://github.com/karthink][karthink]]
- [[https://github.com/gcv][gcv]]
- [[https://github.com/aikrahguzar][aikrahguzar]]
- [[https://github.com/minad][Daniel Mendler]]
The name dirvish is a tribute to [[https://github.com/justinmk/vim-dirvish][vim-dirvish]].
[[https://elpa.nongnu.org/nongnu/dirvish.html][file:https://elpa.nongnu.org/nongnu/dirvish.svg]] [[https://melpa.org/#/dirvish][file:https://melpa.org/packages/dirvish-badge.svg]] [[https://stable.melpa.org/#/dirvish][file:https://stable.melpa.org/packages/dirvish-badge.svg]] [[https://github.com/alexluigit/dirvish/actions/workflows/melpazoid.yml][file:https://github.com/alexluigit/dirvish/actions/workflows/melpazoid.yml/badge.svg]]