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

是的,因为一开始没有图标,就启动了 all-the-icons-dired-mode

image

另外,这个高亮的颜色支持修改吗,我想改的和选中的那个颜色一样,看着统一一点

不然,单行选中和多行选中看着不一样

你试试看

(setq! dirvish-face-remap-alist
  '((header-line :height 1.04 :box (:line-width 4 :color "#303030"))
    (highlight :inherit (diredfl-flag-mark) :extend t)))

不知道你是不是这个意思

你那个文件名那里怎么颜色不一样啊? 你特意改的吗

和之前比是起了变化,但是不是想要

我没改啥,文件夹哪里,我正常光标放在哪里是和你上面的图是一样,mark之后,就是我图里的样子了

header-line 的颜色可以了

1 个赞

那个 face 名字我之前写错了, 应该是 diredfl-flag-mark

你是不是说这种效果。

现在起效了,但是图片哪里不一样

你稍等下,我打个补丁

1 个赞
(set-face-attribute 'dirvish-hl-line nil
                    :foreground (face-attribute 'diredfl-flag-mark :foreground)
                    :background (face-attribute 'diredfl-flag-mark :background))

你更新之后设置这个 效果应该是这样

用上面那句可以,但是在 doom 里面执行下面这个就抛错了

把 dirvish-face-remap-alist 的设置去掉,不需要这个了。

还有就是你这个 set-face-attribute 应该要在 diredfl 加载之后执行。

那行是我用来测试的,现在看着设置成功了,只是效果看起来还是和你的不太一样,不过基本也可以了

实在不清楚你的为什么是这样的。 我反正是这样写的 然后 init.el 里面就是开了 :emacs 那一栏的 dired

(use-package! diredfl)

(use-package! dirvish
   :after (diredfl all-the-icons)
   :config
   (dirvish-override-dired-mode +1)
   (setq dirvish-attributes '(all-the-icons file-size))
   (set-face-attribute 'dirvish-hl-line nil
       :foreground (face-attribute 'diredfl-flag-mark :foreground)
       :background (face-attribute 'diredfl-flag-mark :background)))

别的没了。估计还是有什么其他配置影响了,但是 doom 比较复杂,我不是太懂。

你可以试试用 vscode-icon 的图标,看是不是正常的。如果正常那很有可能是你 all-the-icons-dired 相关配置的问题。

(package! vscode-icon)

(use-package! dirvish
   :after (diredfl vscode-icon)
   :config
   (setq dirvish-attributes '(vscode-icon file-size))
   (setq dirvish-icon-size 23)
   (set-face-attribute 'dirvish-hl-line nil
       :foreground (face-attribute 'diredfl-flag-mark :foreground)
       :background (face-attribute 'diredfl-flag-mark :background)))

image 用了 vscode-icon 也这样,主题是 doom-one ,不知道是哪儿问题

我知道是为啥了,我用的不是 mmark 的,是用的 evil 的 VISUAL LINE 模式选中的,所以有问题,用 m d 之类的选中是可以的

我使用了这行代码后出现了错误:

Debugger entered--Lisp error: (error "Invalid face" dirvish-hl-line)
  internal-set-lisp-face-attribute(dirvish-hl-line :foreground "#ECBE7B" 0)
  set-face-attribute(dirvish-hl-line nil :foreground "#ECBE7B" :background "#4f4942")
  eval((set-face-attribute 'dirvish-hl-line nil :foreground (face-attribute 'diredfl-flag-mark :foreground) :background (face-attribute 'diredfl-flag-mark :background)) nil)
  elisp--eval-last-sexp(nil)
  eval-last-sexp(nil)
  funcall-interactively(eval-last-sexp nil)
  call-interactively(eval-last-sexp)
  meow--keypad-try-execute()
  meow-keypad-self-insert()
  funcall-interactively(meow-keypad-self-insert)
  call-interactively(meow-keypad-self-insert nil nil)
  command-execute(meow-keypad-self-insert)

我看了一下, dirvish-hl-line 是存在的,可是无法调用

配置是我自己写的

(require 'dirvish)
(setq dirvish-preview-dispatchers (remove 'directory-exa dirvish-preview-dispatchers))
(setq dirvish-attributes '(all-the-icons file-size))
(dirvish-override-dired-mode t)
(set-face-attribute 'dirvish-hl-line nil
                    :foreground (face-attribute 'diredfl-flag-mark :foreground)
                    :background (face-attribute 'diredfl-flag-mark :background))

你是想要和他一样的效果吗?

(require 'dirvish)
(custom-theme-set-faces
 'user
 '(dirvish-hl-line ((t (:inherit 'diredfl-flag-mark)))))
1 个赞

试了下,发现 dirvish 选中文件后就消失了,能配置成 VSCode 文件管理器那样嘛,一直在左边开着不关闭。

另外,能解决 always highlight current file · Issue #65 · jojojames/dired-sidebar · GitHub 这个问题嘛,周末我自己试着写 overlay,没能成功。。。

讲道理,我在 Alabama,前几天去给手机贴膜,小哥还问我桌面是什么冻鳗人物他自认看番无数还没见过。

dired-find-file-other-window 不就不关了吗。

另外,能解决 always highlight current file · Issue #65 · jojojames/dired-sidebar · GitHub 这个问题嘛

dirvish 默认就是这样的,不用设置。