Ideology
Why Vifm
Interesting capabilities
- Works on all widely used operating systems.
- Very easy to start if you grok Vim.
- Can be used remotely over SSH.
- Friendly to terminal multiplexers.
- Low on resources.
- Depends only on a few libraries (curses and regex).
Vifm or ranger
Vifm and ranger follow different ideas in how to implement file management, vi-like behaviour, and user interface in general.
What they have in common:
- They both are file managers.
- They both claim to have vi-like key bindings.
Vifm does have Vi in its name for a reason and while ranger is a vi-like application, being such is not its main goal. Contrary to ranger, Vifm tries to be not just a "vi-like file manager", but rather "vim among file managers".
It's difficult to compare ranger and Vifm, but here's an incomplete attempt:
Vim-like characteristic | Vifm | ranger |
---|---|---|
Command line | Yes | Similar |
Options | Yes | Partially |
Completion | Yes | No |
Bindings | Yes | Similar |
Bindings configuration | Yes | Similar |
Scripting | Partially | Limited |
Window system | Partially | No |
Modes | Yes | No |
Vifm has some features that are absent in ranger and vice versa, those are not listed if they are not very much related regarding how vi-like an application is.
The bottom line is that Vifm aims to give Vim-addicted users a similar application for managing files and ranger is a nice file manager with vi-like features. These are different applications with different goals that do not compete with each other.
How not to use Vifm
Do not use Vifm as your main application at the computer:
- it's not a launcher of all kinds of applications, it's a file manager that supports file associations;
- it's not an environment to spend your life in, it's one of many tools, interleave use of Vifm with Vim, shell and other applications.
When and how to use Vifm
Main points:
- Integrate Vifm within your system.
- Run other applications from Vifm (e.g. Vim).
- Launch Vifm from other applications (e.g. Vim, Mutt).
- Use it as file picker from other applications.
- Communicate data from Vifm to other applications and vice versa:
- Pass list of files to other applications.
- Process input of external tools.
Generic examples:
- If you know a way to do something more efficient in a shell, write a script and invoke it from Vifm or run external shell command if it's convenient, otherwise run shell and do it there.
- If you know an application that fits better, create a command and/or script to run it in directory of current pane and maybe pass current selection to it.