-
Notifications
You must be signed in to change notification settings - Fork 53
Description
Thank you so much for this package. You've done a brilliant job. This is not an issue. I just wanted to say how great this package is and try to explain why it's so great. This may not be very useful to you, but it might help someone else considering trying it. Feel free to link to this blurb in the readme if you want. I don't think the readme makes it immediately clear just how awesome dirvish is. From a brief glance at the readme, it looks like dirvish might just be another package like dired-hacks that adds some nice extra functionality, but after trying it, I can say that dirvish has completely changed the experience of dired for me in a single day. I plan to write a full blog post once I play with dirvish more.
I randomly found out about dirvish the other day and then saw a comment you had made about it:
With all the things being done, I found myself still miss lf/ranger very often. I also found that a lot of people are using ranger/lf in a terminal/shell inside of Emacs. If Dired is really far better than those ones, why would people do that? You might say, because they don't understand enough about dired/emacs/elisp. But I don't see it that way, instead I believe ranger/lf or other similar ones really did something right, and Dired should absorb their good points.
Once I read this and your readme, I was already sold on trying dirvish. I've used both ranger and dired extensively, and this matches my experience exactly. Most Emacs users say that dired is much better than ranger, but I think they are often the ones who don't understand enough about ranger. Dired can do a lot of useful things as a result of being part of Emacs and is a lot more malleable. Obviously I'd prefer to use it, but there were just too many issues or missing features for dired to be able to replace ranger for me.
Every now and then I stumble upon a new package that is not just useful but transformational. After haven been beaten down by the clunkiness of ranger.el for so long, I was elated after trying dirvish.
Dirvish is a work of art. It is fast. It is unobtrusive. It is elegant. It is exactly what a file manager in Emacs should be.
The name is perfect. Not just stylish but also meaningful. While it is nothing like vim-dirvish, it has the same design philosophy of working with builtin functionality. In the context of Emacs, this means augmenting dired rather than replacing it. The simplicity of the current implementation of dired-yank is a testament to how well this works. There's no reason to try to duplicate ranger exactly. Dirvish's multi-stage marking is actually better than ranger's because it doesn't force the user to pick "cut" or "copy" at the beginning. While you normally know what you want to do beforehand, ranger also has a bunch of options for pasting (e.g. paste symlink, relative symlink, hardlink, etc.). You can choose "delete" in ranger and then actually just make a symlink, which doesn't really make sense. It makes more sense to just choose what you want to do with marked items all in one step instead of partially at the beginning and partially at the end.
Dirvish has fixed every major issue I had with dired and ranger.el:
- It provides file copying/movement that is both multi-stage and asynchronous
- Image preview is actually fast and usable. I had stopped using all packages for image preview before because they didn't work well. With dirvish, once an image is cached, it's as fast as any preview method that ranger has, and there is no flicker (unlike some ranger preview methods). This is a game changer.
- File preview in general works flawlessly out of the box and is customizable
- Dirvish is gorgeous, more so than ranger, but without sacrificing speed
- The mode line is simple, customizable, and easy on the eyes
- Icon display is fast/lazy unlike dired-all-the-icons, which is unusably slow
- It can also replace the functionality of dired-k (very slow) and dired-git-info
- I only had to customize one face to get it to look great with my theme
- It provides a 3-pane layout that just works (parent directory, current directory, preview). I never used ranger.el's 3-pane layout, but I will use dirvish's.
- It provides various other helpful commands/features like bookmarks
- It is a minimal layer on top of dired and requires minimal configuration. I had to make many more keybindings for ranger.el since it creates alternatives for a lot of existing dired commands, and I had a bunch of ugly configuration because it was comparably invasive (as both a dired user and as an evil user):
;; prevent ranger from using `evil-make-overriding-map' and making the initial
;; evil state motion state
(general-add-advice '(ranger-define-additional-maps ranger--normalize-keymaps)
:override #'ignore)
...
;; completely delete ranger-mode-map
(setq ranger-mode-map (make-sparse-keymap))
...
;; make ranger quiet
(general-add-advice '(ranger-window-check ranger-revert)
:around #'noct-no-message)
Ranger.el is a good package that adds functionality I was missing from dired, but dirvish is polished and has a more general appeal. The ingenuity of dirvish may not be obvious to someone who has not used both ranger.el and ranger for years, but for me, dirvish is revolutionary. The experience of everything "just working" in dirvish with basically no setup is absolutely sublime. Dirvish is dired, just refined. Like orderless and vertico, dirvish is another good example of an actual case where less is more.
I came to Emacs using a wide ranger of TUI applications (vim for editing, mutt for email, weechat for IRC, ncmpcpp and vimus for music, etc.). Ranger is my last TUI application and has been for years. I thought I would be using ranger as my main file manager indefinitely. Maybe ranger.el would find a new, more active developer, or an alternative package would appear that would eventually be good enough for me to switch, but that wouldn't happen any time soon. I thought ranger was still lightyears ahead of dired, but dirvish has proved me wrong. Thank you!