Vifm v0.13 betaMarch 17, 2023

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

Highlights
Faster file-system navigation with a new searching/filtering submode

Hitting <c-y> after / or = allows finding and opening consecutive path components without leaving command-line mode. In this mode keys like <c-o>/<c-n>/<c-p>/<left>/<home>/etc. help to refine cursor position or go to parent directory if necessary.

More interactive :compare

You can now see stats about file comparison on the status bar and have an option to easily re-run the comparison while toggling visibility of some of the groups.

Also, default file alignment is more natural now. do and dp handle selection. You can force ignoring or respecting case in paths. Performance and memory consumption have been improved in various cases.

Mouse support and TUI improvements

Once mouse support is enabled, you should be able to perform simple browsing with just your mouse for those cases when it's more convenient.

Conflict dialog now always presents basic file metadata for comparison. Detailed progress dialog has ETA. Ls-like view can now have a fixed number of columns.

Other

Formatting of tabs in Lua. Changing register's content via an editor. Explicitly prompting user for input via input() function.

Fixes

v0.12.1 was supposed to improve escaping on Windows, but it simultaneously made one old bug more prominent, effectively making things much worse in some cases. This release remedies that.

%N macro has been adjusted to fix integration with image preview of Kitty v0.27+.

Lots of fixes related to search and various combinations of 'hlsearch', 'incsearch' in different modes.

More detailed list of changes... Normal and visual modes
  • Made Ctrl-E/Ctrl-Y scroll transposed ls-like view horizontally by one column.
  • Extended do and dp keys to process selection (thanks to Mark S., a.k.a. Markuzcha).
:set command and options
  • Added 'mouse' option to control when mouse input is handled (not handled by default).
  • Added 'navoptions' option to allow tweaking navigation mode a bit (thanks to filterfalse).
  • Added 'tabline' option to specify format of the tab line.
  • Added columncount: value to 'lsoptions' to always display fixed number of columns (thanks to Aleksandr Vysotskiy, a.k.a. loki1368).
  • Added rpreview:files to 'milleroptions' (thanks to aksr).
Command-line mode
  • Changed error reporting for some of the :commands such that now their failures cause a dialog to appear on sourcing, previously those errors were printed only to status bar.
  • Changed implementation of :compare grouppaths to juxtapose only files with identical relative paths (patch by Alexandr Keyp, a.k.a. IAmKapuze).
  • Added withicase and withrcase to :compare that force ignoring and respecting case respectively on comparing file names and paths (thanks to Jose Riha, a.k.a. jose1711).
  • Added show* arguments to :compare command to control/switch which sets of files are displayed (toggling is done by :compare!) (patch by Alexandr Keyp, a.k.a. IAmKapuze).
  • Added :amap, :anoremap and :aunmap commands to configure mappings in navigation mode (thanks to Henrik Holst, a.k.a. hholst80, and dmocek).
  • Added :regedit command for external editing of register contents (thanks to Daniel J. Perry, a.k.a. BioBox; patch by Rostislav Tolushkin, a.k.a. nullptr-deref).
  • Added Ctrl-Y key to command-line mode. It activates fast navigation that allows entering deep paths by a series of searches for individual path components (thanks to Henrik Holst, a.k.a. hholst80, and dmocek).
  • Added Ctrl-J key to command-line navigation. It leaves the mode without opening a file/directory (thanks to filterfalse).
  • Added Ctrl-O key to command-line navigation that goes to parent directory.
  • Added Ctrl-N/Ctrl-P keys to command-line navigation to move view cursor up/down (thanks to Henrik Holst, a.k.a. hholst80, and dmocek).
  • Added Arrows/Home/End/Page Up/Page Down keys to command-line navigation to move view cursor (thanks to Henrik Holst, a.k.a. hholst80, and dmocek).
Core
  • Added printing stats while in :compare mode (patch by Alexandr Keyp, a.k.a. IAmKapuze).
  • Don't move cursor on search failure during search with a count (patch by filterfalse).
  • Specified a few more cases when to show a search message with search highlighting turned on: if found a match, if wrapping is turned on, and in visual mode (patch by filterfalse).
  • A regular search logic showing messages is applied to n/N (patch by filterfalse).
File operations
  • Made aborting deletion abort the operation on the rest of files when deleting multiple files.
Macros
  • Changed %N macro to also not start a process group for a command (thanks to Oskar Grunning, a.k.a. sQVe).
Scripting
  • Added input() builtin function to prompt user for input (thanks to Artur F., a.k.a. arturfabriciohahaedgy).
  • Added filereadable() builtin function mainly as a way to check file's presence.
Menus and dialogs
  • Added r key to :jobs menu, which reloads the list of jobs (thanks to Sylwia Ptasinska, a.k.a. SylEleuth).
  • Made feedback after pressing dd in :jobs more prominent (thanks to Sylwia Ptasinska, a.k.a. SylEleuth).
TUI (Text User Interface)
  • Added builtin handling of mouse events (thanks to ranousse, Sergei Shilovsky and user451421541757324; patch by 高浩亮, a.k.a. haolian9).
  • Added ETA to detailed progress dialog (thanks to Jose Riha, a.k.a. jose1711).
  • Apply file highlighting to ext and fileext view columns (thanks to aleksejrs).
  • Merged file conflict comparison dialog into the main conflict dialog (thanks to aleksejrs).
  • Made file conflict more concise (thanks to aleksejrs).
Color schemes
  • Added additional User10..User20 highlight groups and corresponding %10*-%20* macros (thanks to Sylwia Ptasinska, a.k.a. SylEleuth).
  • Update Default-256 to differentiate between more file types (thanks to aleksejrs).
Invocation
  • Added --plugins-dir command-line option which allows specifying additional places to look for plugins (thanks to 高浩亮, a.k.a. haolian9).
Performance
  • Reduced amount of memory consumed by :compare groupids.
  • Made :compare bycontents not bother reading content of files which have unique size.
Documentation
  • Provide basic instructions in the documentation on how mappings work (thanks to dmocek).
  • Fixed description of %i macro in the documentation to mention that it runs command in background.
Packaging
  • Changed use of $(filter-out) in src/Makefile.am to $(var:from=to) substitution to get rid of a warning on configuration.
  • Changed how pthread support is detected by configure script to handle more cases (thanks to Markus Elfring, a.k.a. elfring).
  • Changed configure script to fail if neither perl nor vim is available instead of failing to generate tags for Vim-style documentation (thanks to Sergei Trofimovich, a.k.a. trofi).
  • Install icons also to ${prefix}/share/icons. It's not clear that using ${prefix}/share/pixmaps will always be handled properly (thanks to Szilárd Andai).
Integration
  • Made instances running inside AppImage consider contents of /etc/vifm (thanks to aleksejrs).
  • Fixed $VIFM_APPDIR_ROOT being ignored by :help command, which made it not work properly from AppImage (thanks to infinitewhileloop).
Only on Windows
  • Fixed escaping of file paths when using 'vicmd' or 'vixcmd' to open a file on Windows (thanks to Phil Runninger).
Noteworthy fixes
  • Fixed abort due to assertion failure on using zx normal mode key after leaving tree in some cases (thanks to Mark S., a.k.a. Markuzcha).
  • Fixed asynchronous previewing of symbolic links, which required manual redraw (thanks to Alexandre Viau).
  • Fixed FUSE mounting assuming 2> redirection is supported by the shell, which isn't true at least for csh and tcsh (thanks to Evgeniy, a.k.a. iron-udjin).
  • Fixed dialogs not handling non-latin characters well.
  • Fixed :locate never escaping its arguments (should be done unless the first one starts with a dash). This is a regression in 0.7.6.
  • Fixed n/N not moving the cursor without prior search (patch by filterfalse).
  • Fixed resetting 'hlsearch' during incremental search in visual mode (patch by filterfalse).
  • Fixed dropping selected files on empty input during incremental search in visual mode when 'hlsearch' is set (patch by filterfalse).
  • Fixed segfault on trying to use a pipe from Lua after its parent VifmJob object was garbage-collected (thanks to PRESFIL).
  • Fixed 'previewprg' not being respected on switching to view mode (regression in 0.12-beta) (thanks to Sitaram Chamarty).
See change log for the full list of changes and by whom they were suggested or implemented.
Download links
Source Code
vifm-0.13-beta.tar.bz2

(signature)
MD5d81fb2ca4e35e5a0f14177e752050e56
SHA1d598541119e94a756ebe70e87fa86750ec4152a7
RIPEMD16001233bbcde687d22b27425a6b559d1de2596f988
Win32 Binaries
vifm-w32-0.13-beta-binary.zip

(signature)
MD545162598859981c9cc298858942b7a4e
SHA12fddecf0cf3a59f37eb27dba0bf7d6e8367f5df0
RIPEMD16039f81b0be8e2e64e7c21140c2fc6555987dc75a7
Win32 Single-Executable Binaries
vifm-w32-se-0.13-beta-binary.zip

(signature)
MD5d79f14496ed4aea3366e528737a2e847
SHA12e150042d3d837d191a8b9cfce8079cb7828ae69
RIPEMD160b7900ae83c42fb1336d169bd178a065df4bd1f06
Win64 Single-Executable Binaries
vifm-w64-se-0.13-beta-binary.zip

(signature)
MD576d8db4742b2d5e02e786189c20ccfc9
SHA17076f6f63b706910895b62c0c41584bec3a33f31
RIPEMD1607358acc074c7235d8a2006493f0ed0521ed80b2f
AppImage (x86-64)
vifm-v0.13-beta-x86_64.AppImage
MD558740a7986ba99915270451427b484af
SHA1b8ddddfe27b2dbaffa6ed18ab7a3b781c6e19027
RIPEMD160d002156d42c714bd36c2f9d31910e7fa63f77952