Vifm v0.13April 4, 2023

Thanks to everyone who tried out the beta.

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 and entry selection 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.tar.bz2

(signature)
MD5bd7ae0bc6ddf82d1b19c5b88fbfc6292
SHA1f2d37872aa240910eb0f98895ded57cc88e503bd
SHA2560d9293749a794076ade967ecdc47d141d85e450370594765391bdf1a9bd45075
RIPEMD1601e1c18cf789d346bbe9dafa99fe59e91a3130699
Win32 Binaries
vifm-w32-0.13-binary.zip

(signature)
MD5a87af0c40642195e98b7894203915cd2
SHA1d3b7a5e20e4f67c7171af0f2f86b5a13f383cacd
SHA256ee9143b8103a886e88b74ce2347b1c6e0f5bcd589023aaccfacc912fb97b838b
RIPEMD160ba814bb918eb39805412b90e6e0d773afdb211c4
Win32 Single-Executable Binaries
vifm-w32-se-0.13-binary.zip

(signature)
MD58f280cd8e3554ee8dd14806c56705790
SHA10a082f39ad31eb416aac074578372fbe3978e668
SHA25618bb14ebf00e9389e0387ba5429dd548985cfadcbe057ea1cef39d90ba13a6f5
RIPEMD16095145708db3e633b4c2491f86c3ec2c05c12a670
Win64 Single-Executable Binaries
vifm-w64-se-0.13-binary.zip

(signature)
MD5614261d9fded9556db43c9d296ed1742
SHA196b0423af0cb1c27ed92ba33e8557ec6bae5f235
SHA25640b0cb76b0b1328075eb221488bfd721aa2084b95578c8bd3695ad5a1edc6341
RIPEMD16020b0e4a4a96f6ee286fd4f0dfa2ea5e726458c82
AppImage (x86-64)
vifm-v0.13-x86_64.AppImage
MD5021595785e333a8029b6eae39ffe241b
SHA128ea5656fb6fd6439d5c328c30603630078be0c7
SHA256d96cf8feca95b28c8c784ca2cb50f4732c1941d0c71af8e2bcccaf1b1f042792
RIPEMD160eeceb905360578073d290b452a1e0e12e0a12c6a