▸ What users are saying...
▸ Features...
▸ Reporting bugs/requesting features/asking questions...
▸ Donations...
▾ Latest news

Vifm v0.12.1September 21, 2022

Thanks to everyone who tried out the beta.

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).

If you want to give plugins a try, read overview.


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


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: 26b4c2c6666651bc57160591c58d731e
sha1: 54740edf2ddc957e5d1ff14eb609351f5545d7b8
ripemd160: 609ebb90b783651815cb7db5600f5edf176e4161
Win32 Binaries

md5: 551a5381ef00c4fef15c024b06428968
sha1: 701986caf3f98d9f5f567d1207903e0a703ae9bc
ripemd160: a771b5911691098d869f7adb843bec7841f52bd4
Win32 Single-Executable Binaries

md5: 66234f7eb5ba9d66044db649460ad4ad
sha1: 53502011154f2435f3e79c192afebb56ec4e7524
ripemd160: 989d51187ab1c9a9c91a7563fa4d98a2a9bef06d
Win64 Single-Executable Binaries

md5: f018e3e03333f7f2e642bf9416320846
sha1: 7fd274ede6a6ceccc35265aa6df31f95855fd5ff
ripemd160: 223fcc7053d9aca418c830ba201bd9317a6f99dd
AppImage (x86-64)
md5: 898996197f34e3ae81c24b498dcd1a55
sha1: 887674c94f626f6e0d037259aa54c828b56adcc9
ripemd160: e292cf47057226b6b1027fa0b11d84529c1e62bb