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

好,太感谢了,已经试用了。非常赞。 又有一个小问题,使用dirvish-side浏览当neotree使用,使用一段时间后(有时时间长有时时间短, 似乎不是稳定复现bug,但是用一阵子总会出现)会有一个错误。

我粗略看一下,没有发现是什么原因,有什么可能的方向么?

PS: 检查了一下, 这个问题有时的表现形式是这样的,即在一个文件夹下, 有文件a, b 文件夹r。 r中有文件c.先打开文件a,打开dirvish-side, 进入文件夹r,打开文件c, 在dirvish-side中回退一步到上级目录打开文件a, 这里欲执行dirvish-side关闭侧栏。 则报这个错误。

你更新看看好没好。

1 个赞

2022-04-15 22-54-10屏幕截图

我的会显示重复的一列

环境: ubuntu spacemacs emacs 28.1

可以了,谢谢 :+1:

搞定了, 太好了。

@alexluigit 我开始尝试dirvish,遇到三个问题。

第一,我打开dirvish-side后,刚开始没有什么问题,但是 我保持这个窗口一直存在, 等会再来操作的时候,发现 返回上级目录(dired-up-directory)不行了。 即使是选择这个 … 也不行

图片

返回信息是这样的

图片

第二,我在dirvish-side里面,我想打开一个目录,而不是进入这个目录, 像这样

我不知道怎么配置?

第三,我平时喜欢打开文件树 dirvish-side,就保持在左边。但是现在遇到一个问题,我再打开一个窗口(比如 rg-dwim,或者 color-rg)的时候,这种窗口正常是在下方创建一个新窗口,但是现在 是直接把你的 dirvish-side 窗口给覆盖了,我是不想被覆盖的,我比较喜欢一个文件树 一直在 左边放着。

但是 我保持这个窗口一直存在, 等会再来操作的时候,发现 返回上级目录(dired-up-directory)不行了

要么是你手动杀掉了 dirvish 的 buffer,要么是被别的 package 杀掉了。我目前没有遇到过,也没有人反映过类似的问题。最好能有复现这个的详细信息。

第二,我在dirvish-side里面,我想打开一个目录,而不是进入这个目录, 像这样

安装 dired-subtree https://github.com/alexluigit/dirvish/blob/main/Configuration.org#complementary-packages

但是现在 是直接把你的 dirvish-side 窗口给覆盖了,我是不想被覆盖的

更新一下,现在应该好了。

我在ubuntu20.04上面遇到一个问题在 使用 dirvish的时候,预览不出来,

有时候 选择其他文件,又可以刷新出来。

但是下面一个文件夹,不知道是不是 内容太多,根本刷新不出来,连 mode-line 都乱了

这是报错信息 图片

我的环境比较多,虚拟机有4个,还有window环境。目前发现 ubuntu14.04和windows 不会出现这个问题。而 ubuntu20.04,archlinux 都会出现。 配置都是同一套。

我是 arch, 没有遇到这个问题。你至少提供一个通过 emacs -q 或者最小化配置复现这个问题的步骤,不然我只能盲猜。比如 你的 Emacs 版本是 27.1 以上吗? (setq dired-hide-details-hide-symlink-targets nil) 能不能解决这个问题?

我平时用 awesome-tray, 开一次 dirvish 后 modeline 就变粗回不去了,不过暂时没有时间看 :cold_face:

这是什么冻鳗人物

开一次 dirvish 后 modeline 就变粗回不去了

如果你用 awesome-tray 的话,modeline 不是被禁用了吗? 怎么个变粗法? 我安装 awesome-tray 试了一下,没有遇到你说的这个情况。dirvish 也根本没有碰过 awesome-tray 使用的 buffer.

如果你是指 dirvish 的顶部标题显示很怪,那是因为 awesome-tray 直接修改了 modeline 相关的 face, 而这个标题是通过 modeline 显示的,其他所有类似的实现都会受到影响。 你可以自行设置 dirvish--header-remap-alist 或者直接关闭顶栏 (setq dirvish-header-style nil)

awesome-tray 是把 modeline的高度设置成了0.1,不是禁用掉的,变粗是会恢复行高,我在使用自动切换主题时会出现这种问题。目前己经放弃awesome-tray。

awesome-tray 是把 modeline的高度设置成了0.1,不是禁用掉的

谢谢提醒。我知道是设置高度,但是目的是使 modeline 变成一条线从而实现「禁用」的效果。

我在使用自动切换主题时会出现这种问题。

那看来是涉及到 modeline 相关 face 改动或者 remap 的时候会这样。

大佬,我这个又出了一个问题,我的最小配置是这样的

 (require 'package)

;; Initialize packages
(unless (bound-and-true-p package--initialized) ; To avoid warnings in 27
  (setq package-enable-at-startup nil)          ; To prevent initializing twice
  (package-initialize))

(setq package-archives
'(("gnu"   . "http://mirrors.tuna.tsinghua.edu.cn/elpa/gnu/")
  ("melpa" . "http://mirrors.tuna.tsinghua.edu.cn/elpa/melpa/")))

(defun shadow-install-use-package ()
  "Install `use-package'."
  (unless (package-installed-p 'use-package)
    (message "%s" "Refreshing package database...")
    (package-refresh-contents)
    (message "done.")
    (package-install 'dired-subtree)
    (package-install 'dired-collapse)
    ))

(shadow-install-use-package)
(require 'dired-subtree)
(setq dired-subtree-use-backgrounds nil)

(require 'dired-collapse)
(add-to-list 'load-path "~/.config/emacs/site-lisp/dirvish")
(require 'dirvish)

现在在dirvish-dired下 使用 dired-subtree-toggle 的时候显示不对啊, 第一是 文件夹里面的内容显示不出来,第二 你可以看到 那个 Makefile 文件 本来是一级文件目录,却跑到 二级目录去了。

在同样的配置下 我 打开 自带的dired,同样使用 dired-subtree-toggle ,就显示正常。

这种情况只在我家里的一个虚拟机才会出现,其他的环境都不会, 而且 好像也没报错信息。

这种情况只在我家里的一个虚拟机才会出现,其他的环境都不会

我按照你的配置没办法复现。由于我没有你出问题的这个环境,所以只能你自己按如下方式验证了。

如果你在 dired 里面先执行 dired-hide-details-mode (Shift + 9) 隐藏掉文件元信息,再 dired-toggle-subtree, 错误还会出现吗?

dired-sidebar 的 issue 里面有一个和你这个一模一样的情况link,最后不了了之。你不妨试试看 dired-sidebar 是不是也会出现这个错误。

上次的问题有一些后续。 follow文件打开的完美解决了。

不过远端显示,可能是我这边doom-emacs的配置或者什么问题,还是有一些行为很奇怪。

操作流程是这样的,

  1. 打开一个远端文件。
  2. \ n t (自定义快捷键 dirvish-side)展示侧边栏。

显示的内容和本地有些差别,不知为何就会默认开启dired-detail-model。而且会同时报错 dirvish-build–parents: Wrong type argument: listp, t

有完整报错信息吗? 就是在错误发生之前 M-x toggle-debug-on-error, 再尝试重现步骤。

应该和来dired-side中开启了dired-detail-mode有什么关系。 我是用的doom-emacs,会在什么设置中有冲突么?