Vifm v0.11September 24, 2020

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.

Thanks to everyone who tried out the beta.

Main changes
  • Added persistent tabs
  • Added sessions
  • New format of vifminfo 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... Hover mouse and wait a bit to start animations.

Customization of tab labels


New highlight groups


Sessions


Vim -> Vifm color scheme converter

More detailed list of changes... Normal and visual modes:
  • 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).
  • 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).
  • 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.
  • Made it possible to escape commas in patterns (as usual, by doubling) (thanks to filterfalse).
Command-line mode:
  • Added :tabo[nly] command that closes all tabs but the current one.
  • Added :session and :delsession 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).
  • 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).
  • 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).
  • Added 'sessionoptions' option, which is an alternative to 'vifminfo' for session files.
  • Added 'tablabel' 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).
  • Added treeleafsparent value to 'dotdirs' 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.
  • 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).
  • Reduce width of top line when side borders are hidden (set tuioptions-=s) (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).
  • Use the same label for :grep and :find custom lists as the one used for :grep and :find 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).
  • 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).
  • 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).
  • Make 'title' option work in all terminals which contain tsl and fsl 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).
  • Added LineNr 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).
  • 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).
  • Added global Default-256 color scheme to be used in terminals that support 256-color palette (automatically in sample vifmrc) (thanks to Shakil Akhtar).
  • Create $VIFM/colors 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).
  • 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).
  • 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).
  • 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.
  • Explicitly documented that macros are expanded in user defined commands (thanks to gcmt).
  • Made documentation of :command 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.
  • Documented how selection is handled on launching files (like on l or Enter keys).
  • Improve documentation on bycontents of :compare (thanks to maxigaz).
  • Somewhat improved documentation on 'ignorecase' and 'smartcase' 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).
  • Fixed creating symbolic links with 'syscalls' 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.
  • Fixed issues with non-tiny 'shellcmdflag' (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).
  • 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).
  • Fixed :move subdir & 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.
  • Fixed panic on some redraw operations mixing with file operations during terminal resizing (thanks to aca).
See change log for the full list.
Download links
Source Code
vifm-0.11.tar.bz2

(signature)
MD5c79b606b4763b5c9b82d3b3e6f89ded0
SHA1f32294dcd822bb6fb4c32324e03aa831f8e77c2b
RIPEMD16027b732471db0954c58ff8ee44a58925c5685f8b2
Win32 Binaries
vifm-w32-0.11-binary.zip

(signature)
MD5cf9e606dd6acdd8678be449acd1a827a
SHA13cc196d08e8128fd22753a7d1104c939e1ecf2f7
RIPEMD1608b996243af232ce7c998cbebc10af67f3ab7d852
Win32 Single-Executable Binaries
vifm-w32-se-0.11-binary.zip

(signature)
MD5179e178180ccb8e0ca55d774b146a80e
SHA12a2562a89ea576f2237f5741ce270240ae309dfa
RIPEMD16005687b0b6d5842e480890be2509548b4a249ddc1
Win64 Single-Executable Binaries
vifm-w64-se-0.11-binary.zip

(signature)
MD5d5515ab2fdbe6c5ea02dc68f51e5b420
SHA1d9a8fc41384658fa70edbeda297859d1c25f4e1f
RIPEMD16017c2247f4eb2a865ad25c59cc343c476b72e7afc