Vifm v0.12.1 betaSeptember 5, 2022

The beta stage will last about two weeks. In case any serious bugs are found during this period, another beta version might be released.

Changes overview
Expression register for command-line prompts (Ctrl-R =)

If you ever wanted to insert result of evaluating an expression into command-line, now you can. One of the most useful applications of this is pasting clipboard's contents without the risk of it being processed as user input (e.g., :<c-r>=system('xsel')).

Selection handling improvements

New :keepsel command-prefix is meant to suppress clearing of selection done automatically after most of command-line commands thus avoiding the need for using gs command to restore it. As a common case, the behaviour for :view command has been changed to not drop selection.

Restoring selection in a newly entered directory can now be done not just from a register populated ahead via yanking selection ("rgs), but just by executing gs to restore selection the directory had before it was left last time. Vifm remembers last 10 locations with non-empty selection.

An arbitrary editor can now be fully integrated via Lua

'vicmd' and 'vixcmd' were always there, but commands specified in these options could receive Vim-specific arguments they don't expect. Writing a shell wrapper was an option, but it had to do guesswork while post-processing arguments meant for Vim, which is error prone. A Lua handler can now be used instead. It receives full context about editor invocation and can perfectly forward the request to an arbitrary editor.

TUI improvements

Escaping of unprintable characters, less of annoying flickering, slightly better File Info dialog.

Conflict resolution dialog now provides a sub-dialog for comparing conflicting files and is also smarter at picking which actions to offer.

Lua API additions (still experimental)

The API now gives some access to layout, tabs and keys.

Unlike :*map commands, keys API allows defining custom selectors (like 2j in d2j), keys that accept an argument (like a in ma) and keys that accept selectors (custom or builtin).


Bulk retargetting of links, optional implicit :cd on command line, macros that expand to non-empty selection, supporting more <keys>.


Escaping of arguments and slashes in paths will now hopefully work better on Windows, which is generally an issue there. Yori shell is now also handled on Windows.

New %N macro can be used to fix image preview in Kitty terminal.

▸ More detailed list of changes...
Download links
Source Code

md5: 7f666c203d91a8e5363734940d346946
sha1: aa150b4584d82e8f2a34808ba03a35da316c00e1
ripemd160: 5fb5d7969d5a66e5ff963796e158b838ba1c1bb8
Win32 Binaries

md5: ca4a7b28db24b760fc83989a41da91fa
sha1: 7d7f3b2a6a3ce82b7e60f5b8042a77cae3d8dabd
ripemd160: 52dbe5dfadfb85442f61a2a9338e95c6faf444d7
Win32 Single-Executable Binaries

md5: f2e1b8fb70a0288cec14a1c0e0b76e37
sha1: 0b5eee2422bbc35a919ee64211a6f43a146914c2
ripemd160: 4cedd92504692165ea4445ac9c809aada2fe9568
Win64 Single-Executable Binaries

md5: b3ec682cf57c592fe764024e7bc45c08
sha1: bcf37fac34c72f6645c8d416a6965e53860f51ad
ripemd160: 925e51df99782d01d27ced6d4c2959b81bcd1961
AppImage (x86-64)
md5: 16c6ed0c0d413cc43e9abc8d45ae7954
sha1: dea1033fbdad483f7b2f290863d309a7ff544d39
ripemd160: 0095a0abdf7c8450b1030d050fd1a24b236dc9da