Vifm v0.8 betaJune 19, 2015

New version brings several useful improvements of different kinds. The most substantial addition is custom views that allow one to combine files from several directories in one view, which in turn enables processing of search/grep/etc. results similar to handling contents of a regular directory.

That change alone affected internal structure quite seriously which combined with operations on system calls from the previous release distant new version far enough from 0.7 to name it 0.8.

Version change also gives one a moral right to introduce incompatible changes. So if anyone remembers me postponing changing defaults or something like that and is still waiting on it, please send a reminder (unfortunately I was careless enough to didn't make detailed list of such things). As of now the following items are under evaluation:
  • removing options, filetypes, commands from 'vifminfo' option (not a big deal, but it's not really useful as well, and maybe potentially harmful);
  • removing 'trash' option as it effectively affects quite a lot things and is better to be enabled;
  • have 'hlsearch' off by default as normally search doesn't select anything and user can accidentally run some operation on too many files with default setup.
Please see the README file in packages for links where feedback can be provided.

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

Main changes
  • Added filename specific highlight.
  • Added custom views, which contrary to regular views can contain files that do not belong to the same directory.
  • Added job bar to display active backgrounded file operations.
  • Added command-line mode abbreviations.
  • Added global configuration and color schemes directory.
  • Added live search match highlighting.
  • Added optional per-file progress for file operations.
  • Added full path patterns ({{globs}} and //regexp//).
  • Added command-line options to control file/directory selection and selection processing to make it easier to use vifm as a file picker.
  • Color schemes got ".vifm" extension, but the old-style names will still work for now.
  • XDG specification support.
More detailed list of changes... File operations:
  • Added per-file overwrite confirmation on directory merging (thanks to willemw12).
  • Added detailed list of errors when 'syscalls' is used (thanks to willemw12).
Key bindings:
  • Added F key to less-like (file view) mode, which acts similar to tail -F or F key in less (thanks to Daniel Dettlaff, a.k.a. dmilith).
  • Added b key to menu mode that creates custom view filled with menu items filtering out those that are not paths.
  • Added zd normal and visual modes key to exclude items from custom views.
  • Optional per-file progress in dialog mode activated by hitting i while operation is being performed.
:set command and options:
  • Added 'chaselinks' option to automatically expand all symbolic links in path of a view (might not work on Windows) (thanks to filterfalse).
  • Added 'mintimeout' option. It enables controlling responsiveness on external events by Vifm (thanks to hofheinz).
  • Added 'wordchars' option to specify which characters in command-line mode should be considered as part of a word (thanks to filterfalse).
  • Added ^= operation for charset options.
  • Added :redr[aw] command to force immediate redraw (thanks to filterfalse).
  • Added %[ and %] macros for 'statusline'/'ruler' (thanks to ranousse).
  • Added p to 'shortmess' option to control tilde shortening of path in view titles (thanks to Martin Fischer).
  • Changed default value of 'trashdir' from $VIFM/Trash to %r/.vifm-Trash,$VIFM/Trash (thanks to Joseph LP, a.k.a. ootput).
  • Normalized sorting keys/view column names: type -> dir, display real mode in octal for mode, make type actually display file type (as mode did before) (thanks to Michal Belica, a.k.a. beli-sk).
  • United last pattern of :substitute command with search history (thanks to filterfalse).
Command-line mode:
  • Added :highlight {pattern} for filename specific highlight (thanks to Ink, a.k.a. inknoir, filterfalse and Michael Maddern, a.k.a. madders).
  • Added :cabbrev, :cnoreabbrev and :cunabbrev commands to manage command-line mode abbreviations (thanks to filterfalse).
  • Added Ctrl-X / (slash) key to that inserts last search pattern into current cursor position (thanks to filterfalse).
  • Added Ctrl-] key to trigger abbreviation expansion.
  • Added single-argument form of :file[x]type and :fileviewer commands that lists (in menu mode) currently registered patterns that match specified file name.
  • Added :cq[uit] command to exit with non-zero exit code and also abort directory choosing (thanks to Jeet Sukumaran, a.k.a. jeetsukumaran).
  • Added :trashes? to display sizes of each non-empty trash directories (thanks to Svyatoslav Mishyn, a.k.a. juef).
  • Added regexp patterns to :file[x]type and :fileviewer commands (thanks to filterfalse).
  • Allow non-printable characters to be arguments of :commands (thanks to filterfalse).
  • Extended :sync command to support selective synchronization (user can choose among location, cursor position, local options and filters) (thanks to filterfalse).
Completion:
  • Complete clear subcommand of :highlight.
Angle bracket notation:
  • Added <lt>; angle bracket notation (less-than character, '<') (thanks to filterfalse).
  • Map <c-h> and <bs> to different key codes (thanks to fogine). This is caused by inconsistency among terminals, map to both keys and it should work everywhere.
Macros:
  • Added %px, %py, %pw and %ph macros that describe location and dimensions of preview area to use in external commands (thanks to Stephano, a.k.a. cao).
  • Added %u and %U macros to redirect command output directly into custom view. The second one allows for more customization of file list, which is absence of sorting for now (thanks to filterfalse).
  • No more unjustified inconsistency in processing macros in :! and :file[x]type commands (thanks to Miodrag Tokić, a.k.a. loonies).
Scripting:
  • Added system() builtin function that executes command via shell and returns its output.
  • Added full path patterns ({{globs}} and //regexp//) (thanks to astrell).
  • Report error on wrong expression in :if statement and misplaced :else/:endif on file sourcing.
Color scheme:
  • Added JobLine highlight group for the job bar.
Configuration:
  • Added fallback to use "XDG Base Directory Specification" when failed to find configuration in other places (thanks to Miodrag Tokić, a.k.a. loonies).
  • Added global configuration {prefix}/etc/vifm/vifmrc and color schemes {prefix}/etc/vifm/colors/* (thanks to astrell and Michael Vetter, a.k.a. jubalh).
Performance:
  • Significantly reduced amount of work performed by Vifm in idle state (thanks to hofheinz).
  • Quit fast on --help/--version (thanks to Svyatoslav Mishyn, a.k.a. juef).
  • Throw away dead directories in directory histories on merging vifminfo files. Otherwise clearing such directories on :history is almost useless.
Menus and dialogs:
  • Made calculation of directory size visible in :jobs menu.
  • Parse output of mandoc version of apropos in :apropos (thanks to Svyatoslav Mishyn, a.k.a. juef).
TUI (Text User Interface):
  • Added search match highlighting for file names (thanks to Svyatoslav Mishyn, a.k.a. juef, and willemw12).
  • Added job bar that displays backgrounded file operations if any (thanks to geo909).
  • Redraw UI on resize during file operation when 'syscalls' is set.
  • Redraw UI on resize when dialog is active.
  • Dynamic dialog dimensions (minimum %30 percent of the screen rather than screen-wide all the time) (thanks to Svyatoslav Mishyn, a.k.a. juef).
  • Auto-resize position field on the status bar to fit the text (thanks to ranousse).
Documentation:
  • Manual page fixes/improvements (thanks to Svyatoslav Mishyn, a.k.a. juef).
  • Wrapped option names with single quotes in the man page to make it easier to search for options by their names.
Packaging:
  • Added one more light color scheme to assets (in two variations astrell-root and astrell-user) (thanks to astrell).
  • Added lookup for mandoc on *nix to perform manual page to plain text transformation (thanks to Svyatoslav Mishyn, a.k.a. juef).
  • Added OS X version of sample vifmrc file. Now this one will be used on first run on OS X (thanks to Larry Hynes, a.k.a. larryhynes).
  • Added dircolors -> vifm conversion script (thanks to Ink, a.k.a. inknoir, Hendrik Jaeger, a.k.a. henk, and Michael Maddern, a.k.a. madders).
  • Added ".vifm" extension to color schemes (initial rename is performed automatically) (thanks Michael Vetter, a.k.a. jubalh).
  • Install AUTHORS, COPYING, ChangeLog, INSTALL, NEWS, README and TODO to {prefix}/share/doc/vifm. Install color schemes to {prefix}/share/vifm/colors. Otherwise these are not available after installation.
  • Made configure script lookup curs_set in libtinfo.
  • Moved checks for build-time tools existence from Makefile to configure script.
  • Made tests less dependent on environment (thanks to Hendrik Jaeger, a.k.a. henk).
Only on Windows:
  • Automatically install sample vifmrc and help file on first start.
  • Switch to utf-8 internal representation of paths. This fixes issues when file name encoding doesn't match system encoding (thanks to Stas Panteleev).
Major fixes:
  • Fixed undesired file removal on overwriting them with themselves (data loss after confirmation of overwriting files when destination matches source) (thanks to Сергей Соловьёв (Sergej Soloviov)).
  • Fixed crash on navigation to end of line in command-line mode (thanks to Christian Fillion, a.k.a. cfillion).
  • Fixed :help (no arguments) when 'vimhelp' is on and automatically installed Vim documentation is used (thanks to ranousse).
  • Better handling of case related operations.
  • Fixed :vs .. which used to use wrong base directory.
  • Fixed assertion on including type in 'viewcolumns' value (thanks to Michal Belica, a.k.a. beli-sk).
  • Better FUSE handling on OS X (thanks to Michael Maddern, a.k.a. madders).
Vim-plugin:
  • Added K mapping to Vim plugin (quick navigation to documentation, e.g. from vifmrc). Patch by filterfalse.
Other changes:
  • Added --delimiter command-line option. Configures delimiter string on writing out list of paths (like on -f switch) (thanks to Jeet Sukumaran, a.k.a. jeetsukumaran).
  • Added --choose-files and --choose-dir command-line switches to specify output location for names of selected files or last visited directory respectively (thanks to Jeet Sukumaran, a.k.a. jeetsukumaran).
  • Added --on-choose command-line switch to execute a command on selection rather than opening it (thanks to Ross Hadden, a.k.a. rosshadden).
  • Added %FOREGROUND FUSE mounting option, which supersedes %CLEAR and fixes issue with passing input to FUSE mounter (thanks to Johannes, a.k.a. johannesmeng).
  • Removed per-view last search pattern. Don't worry, you probably won't even notice it: this doesn't affect regular use case, rather more exotic one, which is hard to notice.
  • Handle commands that are too long to be passed directly to the shell by breaking them into list of arguments if possible (thanks to filterfalse).
  • Better handling or unexpectedly unavailable directories on startup and while running (thanks to willemw12).
  • Define $VIFM_FUSE_FILE environment variable for external commands to communicate path to file used to initiate FUSE mounting of directory we're in (thanks to astrell).
  • Allowed having multiple file viewers with same rules for choosing them at run-time as for file associations (thanks to filterfalse).
  • Redirect both standard output and error streams from viewers (already was the case for Windows).
See change log for full list of changes and by whom they were suggested.
Download links
Source Code
vifm-0.8-beta.tar.bz2
MD501e5a58eb8999d951557a5ca6b316821
SHA1f18f3d75d090dc4b7b628201145fbadb78a4a483
RIPEMD160dddbdcb1af7e559815279f6b94628ceb9ee51e9c
Win32 Binaries
vifm-w32-0.8-beta-binary.zip
MD5e05b3e422f40f37f7100c7c3e1cf675f
SHA1da98988cea7675bac80adf43081ef1c4ce4add8a
RIPEMD1607e3a59579cdc6fd12faaf81c2624ea6cb376b64c
Win32 Single-Executable Binaries
vifm-w32-se-0.8-beta-binary.zip
MD557291eae6eca345a4a016ade778882d9
SHA11377dd861b2c6a181d23dab99e06e1217714b2c0
RIPEMD1606ef4530e4fd6754201399679cfd63ac13be7a0f9
Win64 Single-Executable Binaries
vifm-w64-se-0.8-beta-binary.zip
MD5b1d4504949694317bff293f5c72ad8a8
SHA12cf2834ebe6fa98794c3f5edfc4b72808f68b819
RIPEMD160d5afecee5e3360ee140b5b9a082a9bb30206745f