Dirvish: 基于 Dired 的极简、一站式文件管理器

大佬们,如何设置默认的排序模式? 譬如默认按照时间来排序文件夹和文件?

这个项目现在是又活了?我看有新的接手人在合并pr了

1 个赞

原作者回归了 Fix an error: void-variable dv in Emacs-30.0.50 by dvzubarev · Pull Request #251 · alexluigit/dirvish · GitHub ,Doom 作者 Henrik 也 fork 了一份

我前两个月以为作者不维护了,辛辛苦苦地把 dirvish 换回 dired… :rofl:

今晚又多研究了一下。发现了很多不知道的操作。非常便捷!

大佬请问如何在预览另一个文件时将上一个文件对应的buffer关掉啊。。。C-x b切换buffer时看着好多buffer难受 :see_no_evil:

哎确实,我也遇到这个问题,但是没太在意,如果有方法的话,记得踢我一下。

按我自己理解,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")
1 个赞

dirvish-side 是否可以根据内容自适应,或者说对于比较深的 tree 有什么好的配置?

感谢各位的讨论! 很久没有好好维护这个项目, 趁过年期间好好翻新了一下。两桩新闻:

  • Dirvish 已进入 nongnu-elpa
  • doomemacs 的 dired 模块已默认开启 dirvish,可以使用 +dirvish flag 进一步开启更多功能。 但 doom 目前使用的是 Hlissner 帮忙维护的fork (因为我很久没上线, 他帮忙合并了很多PR), 我已提交 PR 恢复上游以应用最新版本V2.1。

从我收到的反馈来看还是有许多道友不太清楚如何配置和使用,尤其是关于 extension 的部分。等我把这段时间积累的 issues 解决的差不多了会录制一个完整的视频系列,届时在论坛开设伴生帖。这个帖子存在一些失效内容,也不太好阅读。

9 个赞

现在应该不卡了。也修复了很多跟窗口相关的bug,之前 dirvish-side 很容易打乱窗口布局,现在不会了。 多项目我没有研究过,但是默认情况下 dirvish-side 会为每一个tab (emacs 自带的 tab-bar-mode) 分配一个独立的会话。当你有多个项目在多个tab里打开的时候,所谓多项目就是自己写个helper切换buffer呗。

感谢你的介绍视频,很全面! Emacs 不需要 ranger/yazi!

1 个赞

这个好哇,回头我抄一下您的 :rofl:

依次按 ? l s M-Return

非常感谢你的分享!等会我就更新一下,之前自己用windows真是不愿意捣鼓这些。