大佬们,如何设置默认的排序模式? 譬如默认按照时间来排序文件夹和文件?
这个项目现在是又活了?我看有新的接手人在合并pr了
原作者回归了 Fix an error: void-variable dv in Emacs-30.0.50 by dvzubarev · Pull Request #251 · alexluigit/dirvish · GitHub ,Doom 作者 Henrik 也 fork 了一份
我前两个月以为作者不维护了,辛辛苦苦地把 dirvish 换回 dired… ![]()
今晚又多研究了一下。发现了很多不知道的操作。非常便捷!
大佬请问如何在预览另一个文件时将上一个文件对应的buffer关掉啊。。。C-x b切换buffer时看着好多buffer难受 ![]()
哎确实,我也遇到这个问题,但是没太在意,如果有方法的话,记得踢我一下。
按我自己理解,dirvish 的逻辑是在关闭时,清理这些预览打开的 buffer。
而且 dirvish 打开的 window,好像都是 dedicated,所以并不应该在这些 window 中切换其他 buffer(C-x b)。
如果是想通过 C-x b 回到曾在 dirvish 打开过的目录 (dired buffer),那么可以加一个小命令之类的,使得 C-x b 过滤掉非 dired buffer,这样曾经预览打开的 buffer 也不会干扰。
您理解的和我理解的意思不太一样,我的问题是:
当我在dirvish预览了一堆文件后,把dirvish忽略不管,去干别的了,(之所以不关闭dirvish,是因为一会儿还会用)。
然后我在其他地方(还是同一个Emacs里)按C-x b(我使用了ivy)时,想切换到一个别的文件,但是有这些预览buffer在这里。
需求:希望可以增加一个选项,预览下一文件时关闭上一个预览文件(至少可以减少数量)
明白啦,个人感觉 dirvish 这么设计就是为了提高预览性能,否则每次移动光标都得重新访问当前光标下的文件。
我个人的用法是:如果当前开了 dirvish,我想干别的事情,我就新建一个 workspace(我在用 Doom,其是通过 persp-mode 实现的),在每一个 workspace 下的 consult-buffer 只能访问这个 workspace 下打开的 buffer,所以上一个 workspace 通过 dirvish 打开的 buffer 并不出现。干完杂活之后再回到上个 workspace 的 dirvish,啥也不影响。
如果您确实想在您当前的环境和配置下,引入您希望的改进,我可以提供一点想法:
1、改进您当前 C-x b 命令,过滤掉当前通过 dirvish 打开的 buffer(可以通过 (dv-preview-buffers (dirvish-curr)) 访问所有的 preview buffer)。
2、写一个 advice,手动关闭这些 preview buffer:
(define-advice dirvish--preview-update
(:around (orig dv index) kill-preview-buffer)
(mapc #'dirvish--kill-buffer (dv-preview-buffers dv))
(funcall orig dv index))
另外,上面只考虑了打开的 preview buffer,而并不包括那些 Dired buffer (可以通过 (dv-roots (dirvish-curr)) 来访问完整列表),如果您也想加以考虑,可以自己再定制。
感谢,紫薯布丁
dirvish-side 可以折叠空文件夹不? 像idea那样

修正一下:
(setq dired-listing-switches
"-l --almost-all --sort=time --time=mtime --human-readable --no-group")
dirvish-side 是否可以根据内容自适应,或者说对于比较深的 tree 有什么好的配置?
感谢各位的讨论! 很久没有好好维护这个项目, 趁过年期间好好翻新了一下。两桩新闻:
- Dirvish 已进入 nongnu-elpa
- doomemacs 的 dired 模块已默认开启 dirvish,可以使用 +dirvish flag 进一步开启更多功能。 但 doom 目前使用的是 Hlissner 帮忙维护的fork (因为我很久没上线, 他帮忙合并了很多PR), 我已提交 PR 恢复上游以应用最新版本V2.1。
从我收到的反馈来看还是有许多道友不太清楚如何配置和使用,尤其是关于 extension 的部分。等我把这段时间积累的 issues 解决的差不多了会录制一个完整的视频系列,届时在论坛开设伴生帖。这个帖子存在一些失效内容,也不太好阅读。
现在应该不卡了。也修复了很多跟窗口相关的bug,之前 dirvish-side 很容易打乱窗口布局,现在不会了。 多项目我没有研究过,但是默认情况下 dirvish-side 会为每一个tab (emacs 自带的 tab-bar-mode) 分配一个独立的会话。当你有多个项目在多个tab里打开的时候,所谓多项目就是自己写个helper切换buffer呗。
感谢你的介绍视频,很全面! Emacs 不需要 ranger/yazi!
这个好哇,回头我抄一下您的 ![]()
依次按 ? l s M-Return
非常感谢你的分享!等会我就更新一下,之前自己用windows真是不愿意捣鼓这些。