▸ What users are saying... “To all who have contributed to this great program, I want to thank you from the bottom of my heart. This may be the best program that has ever been installed on my computer. Vifm makes my time on the computer so much more efficient and enjoyable that I cannot begin to tell you how much I appreciate your efforts. Thank you so much for creating and continuing to work on this great product.”

— John Shea

“Thank you for this great Vifm tool whose slogan could be: "If you don't know how to do it, don't look at the docs, just think how you would do it in vi."”

— Carlos Pita

“Thanks so much for maintaining Vifm. I use it every hour I'm awake.”

— Roger Bongers

“There aren't many programs which stay useful and ergonomic for so many releases. I use vifm a lot. And it is the main tool for me while navigating fs. It's so configurable that it feels like a glove on a hand or even like skin. Keep it going!”

— Aetet



▸ Features... vim-like user mappings

vim-like command-line mode with ranges and abbreviations

vim-like marks and registers

directory tree comparison

operation undoing/redoing/backgrounding

FUSE file systems support

color schemes, which can also be applied to specific sub-trees

file decorations customizable according to their type and/or name

named bookmarks (tags)

less-like preview mode with customizable viewers

advanced file filtering and renaming capabilities

one or two pane view

shell-like and external command-line editing

table/grid/tree/miller views of files

built-in integration with GNU Screen and tmux

multi-block selection

remembering position in previously visited directories

remote command execution

ability to script configuration for specific directories

trash

cross-platform (GNU/Linux, *BSD, Solaris, Windows, Mac OS) and UTF-8 aware

▸ Reporting bugs/requesting features...



Otherwise pick the most convenient method of communication for you (e.g. where you already have an account if it's required): GitHub issues

SourceForge tracker

E-mails If it's a general usage question please use dedicated Q&A site . This way answers will be publicly searchable and might be useful for wider range of users.Otherwise pick the most convenient method of communication for you (e.g. where you already have an account if it's required):

▾ Latest news

Vifm v0.11 beta September 10, 2020

Main changes

Added persistent tabs

Added sessions

New format of vifminfo file (old version is imported on first run)

file (old version is imported on first run) Smarter merging of histories between runs that avoids dropping of new entries

Version of default color scheme for 256-color terminals

Customizable tab labels

Keeping ratio of pane sizes constant on resizes, restarts and tab switching

Various performance improvements

Demonstration of new features...

Customization of tab labels





New highlight groups





Sessions





Vim -> Vifm color scheme converter



Hover mouse and wait a bit to start animations.

More detailed list of changes... Added gF normal mode key which acts like gf , but goes all the way to the ultimate target of the chain of symbolic links (thanks to Alexandre Viau).

normal mode key which acts like , but goes all the way to the ultimate target of the chain of symbolic links (thanks to Alexandre Viau). Improve navigation on gf key. Do fewer refreshes and disable filters to make target visible. Core: More sensible merging of histories from multiple instances in vifminfo file (avoids dropping of new entries).

file (avoids dropping of new entries). Invalidate cached directory information (size or number of files) on inode change (thanks to Jose Riha, a.k.a. jose1711).

Invalidate cached directory size when using it to compute size of some parent directory.

Improve cursor positioning after file operations. Command-line mode: Added :tabo[nly] command that closes all tabs but the current one.

command that closes all tabs but the current one. Added :session and :delsession commands to manage sessions (thanks to Marcos Cruz).

and commands to manage sessions (thanks to Marcos Cruz). Added optional full parameter for the :restart command, which makes it discard essentially all context. This is useful with persistent tabs (thanks to Yusuf Aktepe).

parameter for the command, which makes it discard essentially all context. This is useful with persistent tabs (thanks to Yusuf Aktepe). Don't reset histories of views in inactive tabs on :restart .

. Improve differentiation between association and list forms of :colorscheme command on startup. This is important if list contains name of color scheme that doesn't exist. :set command and options: Added tabs value to 'vifminfo' option. It enables persistent tabs (thanks to Cosmin Popescu, a.k.a. cosminadrianpopescu, filterfalse and Neil Griffin, a.k.a. ngriffin7a).

value to option. It enables persistent tabs (thanks to Cosmin Popescu, a.k.a. cosminadrianpopescu, filterfalse and Neil Griffin, a.k.a. ngriffin7a). Added v flag to the 'tuioptions' option. It controls whether width of middle border is adjusted to equalize view sizes (thanks to Matthias Braun, a.k.a. mb720).

flag to the option. It controls whether width of middle border is adjusted to equalize view sizes (thanks to Matthias Braun, a.k.a. mb720). Added 'sessionoptions' option, which is an alternative to 'vifminfo' for session files.

option, which is an alternative to for session files. Added 'tablabel' option that specifies format of a single tab's label when non-empty (thanks to aleksejrs).

option that specifies format of a single tab's label when non-empty (thanks to aleksejrs). Added 'tabprefix' and 'tabsuffix' options that allow customizing tabline separators (thanks to CoreCube).

and options that allow customizing tabline separators (thanks to CoreCube). Added treeleafsparent value to 'dotdirs' option (thanks to filterfalse and Melandel).

value to option (thanks to filterfalse and Melandel). Do not require dhistory to be present in 'vifminfo' for savedirs to work. Menus and dialogs: Added rate and progress bar to progress dialog (patch by Alborz Jafari).

Added real (fully resolved) path to the File Info dialog (thanks to Alexandre Viau).

Added number of hard links to the File Info dialog.

Abort menu, more or file information modes before processing remote commands (thanks to kangshugang).

Deduplicate elements of the :file menu.

menu. Make displaying of spaces in mappings more intelligent by using <space> at the start or end of LHS or RHS. File preview: Improve handling of long or unknown escape sequences in previews (thanks to bratekarate).

Use global color scheme for preview on the other pane ignoring its directory-specific color scheme.

Invalidate textual quickview cache if it contains fewer lines than window height and is incomplete. TUI (Text User Interface): Try harder to preserve position of the splitter. Avoid its drift on terminal resizes and preserve ratio of windows on startup and tab switches (thanks to Shakil Akhtar).

Prevent internally selected files (e.g., via a range of a :command ) from appearing selected in user interface (thanks to filterfalse).

) from appearing selected in user interface (thanks to filterfalse). Reduce width of top line when side borders are hidden ( set tuioptions-=s ) (thanks to Svyatoslav Mishyn, a.k.a. juef).

) (thanks to Svyatoslav Mishyn, a.k.a. juef). Escape some characters as ^X in view and tab titles, custom menu titles, on statusline and in terminal title (thanks to filterfalse).

in view and tab titles, custom menu titles, on statusline and in terminal title (thanks to filterfalse). Use the same label for :grep and :find custom lists as the one used for :grep and :find menus (thanks to filterfalse).

and custom lists as the one used for and menus (thanks to filterfalse). Use unexpanded command for title of custom file lists produced using %u or %U macros and menus produced using %m or %M macros (thanks to filterfalse).

or macros and menus produced using or macros (thanks to filterfalse). Use name of user-defined command in titles of custom views and menus (thanks to filterfalse).

Preserve more information in the title on turning custom view into tree using :tree (thanks to filterfalse).

(thanks to filterfalse). Limit length of custom file list title to 80 character positions (thanks to filterfalse). Integration: Detect being run under Wayland (relevant for :filextype commands) (thanks to mhdzli).

commands) (thanks to mhdzli). Make 'title' option work in all terminals which contain tsl and fsl capabilities (thanks to m-kru).

option work in all terminals which contain and capabilities (thanks to m-kru). Update terminal title when in menus (thanks to filterfalse). Color schemes: Added HardLink highlight group for regular files with more than one hard link (patch by Hans Bieshaar).

highlight group for regular files with more than one hard link (patch by Hans Bieshaar). Added LineNr highlight group for highlighting line number column of views (thanks to Anton Gepting).

highlight group for highlighting line number column of views (thanks to Anton Gepting). Added OddLine highlight group for highlighting every second entry line of a pane (thanks to iSeeU816). Scripting: Added v:jobcount builtin variable that provides number of active jobs (number of lines in :jobs menu) (thanks to iSeeU816).

builtin variable that provides number of active jobs (number of lines in menu) (thanks to iSeeU816). Added v:session builtin variable that provides name of current session or is set to an empty string. Configuration: Added three MC-like shortcuts to sample vifmrc files ( Alt-I , Alt-O and Ctrl-U ) (thanks to Hans Bieshaar).

files ( , and ) (thanks to Hans Bieshaar). Added global Default-256 color scheme to be used in terminals that support 256-color palette (automatically in sample vifmrc ) (thanks to Shakil Akhtar).

color scheme to be used in terminals that support 256-color palette (automatically in sample ) (thanks to Shakil Akhtar). Create $VIFM/colors directory with default color scheme only on the first run (thanks to ranousse).

directory with default color scheme only on the first run (thanks to ranousse). Use mime-types in associations in sample vifmrc (thanks to Shakil Akhtar). Performance: Significantly improved performance of adding files to registers that contain thousands of files. As a result contents of registers is sorted now (thanks to Typo).

Significantly improved performance of adding files to trash that contains thousands of files. As a result contents of trash is sorted now (thanks to Typo).

Significantly improved speed of sourcing files (includes processing configuration on startup and :restart ).

). Significantly improved speed of handling typical globs (and therefore mime-type matchers) and reduced amount of memory they take up (thanks to yanzhang0219).

Improve performance of mime-type detection by caching the results.

Make comparing files by contents ( :compare bycontents ) somewhat faster (thanks to maxigaz).

) somewhat faster (thanks to maxigaz). Don't force view reload after every :command that resets selection when there was non-empty selection. This might make metadata of files less up-to-date, but should increase overall performance (thanks to Jose Riha, a.k.a. jose1711).

that resets selection when there was non-empty selection. This might make metadata of files less up-to-date, but should increase overall performance (thanks to Jose Riha, a.k.a. jose1711). Avoid reloading source file list after copy or move operation when possible (thanks to Jose Riha, a.k.a. jose1711). Vim-plugin: Added :VifmCs command to the plugin for "converting" Vim's color scheme into a Vifm's one (patch by Roman Plášil, a.k.a. Quiark).

command to the plugin for "converting" Vim's color scheme into a Vifm's one (patch by Roman Plášil, a.k.a. Quiark). Multiple improvements of syntax highlighting. Documentation: Added references to "Menus and dialogs" section of documentation from :commands and keys which open menus and dialogs detailed there.

and keys which open menus and dialogs detailed there. Explicitly documented that macros are expanded in user defined commands (thanks to gcmt).

Made documentation of :command more comprehensible.

more comprehensible. Document that user must disable netrw plugin on his own when enabling g:vifm_replace_netrw . Vifm's plugin can't do it, because it's loaded after plugins shipped with Vim.

. Vifm's plugin can't do it, because it's loaded after plugins shipped with Vim. Documented how selection is handled on launching files (like on l or Enter keys).

or keys). Improve documentation on bycontents of :compare (thanks to maxigaz).

of (thanks to maxigaz). Somewhat improved documentation on 'ignorecase' and 'smartcase' options (thanks to filterfalse).

and options (thanks to filterfalse). Fixed Vim version of the documentation lacking description of %p macro of 'findprg' . Only on Windows: Added basic support for using PowerShell (pausing doesn't work) (thanks to Fang, a.k.a. peromage).

Display targets of .lnk-files in file information dialog.

Implemented capturing output of background applications (thanks to Gene Zharov).

Follow targets of .lnk-files (thanks to Alexandre Viau).

Fixed 'chaselinks' (symbolic links weren't resolved).

(symbolic links weren't resolved). Fixed creating symbolic links with 'syscalls' being turned on.

being turned on. Fixed creating symbolic links with spaces in source or target paths.

Fixed Alt key combinations being broken since v0.9.

Fixed running non-cmd shells being broken by adding 'shellcmdflag' in 0.10.1.

in 0.10.1. Fixed issues with non-tiny 'shellcmdflag' (patch by Bas Bossink, a.k.a. basbossink).

(patch by Bas Bossink, a.k.a. basbossink). Fixed detecting presence of :file[x]type commands on Windows when backslashes are present in path (thanks to anonymous and n.e. at Vifm Q2A site). Packaging: Avoid interposing system's reallocarray() , when it's present (thanks to Ben Boeckel, a.k.a. mathstuf).

, when it's present (thanks to Ben Boeckel, a.k.a. mathstuf). Install only one version of sample config and media script, the one which corresponds to operating system being used (thanks to Michael Vetter, a.k.a. jubalh and Ondrej Novy, a.k.a. onovy).

Clean up tests directory on make clean in the top of the tree. Important fixes: Fixed generation of :highlight command for OtherWin on writing $VIFM/colors/Default.vifm . The bug caused white background of inactive pane (thanks to Stas Malavin).

command for on writing . The bug caused white background of inactive pane (thanks to Stas Malavin). Fixed :move subdir & renaming file in the process and doing weird stuff to multiple files (thanks to 45jqlakjrf87ayte7hy34ter4nguijauzl4eitk).

renaming file in the process and doing weird stuff to multiple files (thanks to 45jqlakjrf87ayte7hy34ter4nguijauzl4eitk). Fixed graphics preview not being cleared on switching tabs or starting external applications (including on :shell ).

). Fixed mapped keys being reinterpreted as builtin keys if RHS of the mapping failed at some point (e.g., contained an unmapped key) (thanks to Seok Won Lee, a.k.a. ijleesw).

Fixed dialogs not being visible when UI updates are silenced via <silent> mappings.

mappings. Fixed panic on some redraw operations mixing with file operations during terminal resizing (thanks to aca). See change log for the full list. Normal and visual modes:Core:Command-line mode::set command and options:Menus and dialogs:File preview:TUI (Text User Interface):Integration:Color schemes:Scripting:Configuration:Performance:Vim-plugin:Documentation:Only on Windows:Packaging:Important fixes:See change log for the full list.

Download links

New version finally updates format of vifminfo file unblocking changes such as persistent tabs, sessions and timestamp-based merging of histories. In addition to that there were several noticeable improvements in user interface and important optimizations.The beta stage will last about two weeks. In case any serious bugs are found during this period, another beta version might be released.