Vifm v0.8July 09, 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.

Thanks to everyone who was reporting issues during beta period.

Main changes
  • Added filename specific highlight (with a script to convert ls options).
  • 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.
  • Ability to use terminal applications to preview graphics (e.g. w3mimgdisplay).
Demonstration of new features... Hover mouse and wait a bit to start animations.

File highlight defined by names


Views of files from different directories


Bar of jobs running in background


Command-line abbreviations in action


Exact search match highlighting


Dialog with details of file operations


Picking files


Previewing images (wiki)

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 %[ 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).
  • Added :redr[aw] command to force immediate redraw (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:
  • Added handling of Ctrl-L to sort dialog (thanks to filterfalse).
  • Added device id (major and minor numbers) to file info dialog.
  • 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).
  • Display RFC 2822 date without time zone in file info (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).
  • Append unused space in view columns to the last one with percent sizing type if any (thanks to fogine).
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).
  • Added script to update timestamps, so that build system won't be regenerated without real reason. One might want to run it when building from git checkout, which doesn't preserve correct timestamps.
  • 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).
Important 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).
  • Fixed (deep) directory merging (thanks to willemw12).
  • Fixed build and work on OpenBSD (at least to some degree that curses implementation there allows). There might be some troubles with non-ascii characters (thanks to hofheinz and Brian Callahan, a.k.a. ibara).
  • Fixed copying of fifo, socket and device files with 'syscalls' enabled. Thanks to Svyatoslav Mishyn (a.k.a. juef).
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.
Download links
Source Code
vifm-0.8.tar.bz2
MD5e28258ba36e062a2852ea06bd5bfa0cb
SHA16988fce1eb2038f6e3910819588fe67d755099c1
RIPEMD1603a942d275834c52bbd6ceab9b559504cc62aeb1d
Win32 Binaries
vifm-w32-0.8-binary.zip
MD59c0e082cc85edbee2d152dcede99f280
SHA17fceeaec00d72138e9a2cadfef39c3c2ed59d5d4
RIPEMD16048d38db7917f33ad42b13e44d160e289333d9340
Win32 Single-Executable Binaries
vifm-w32-se-0.8-binary.zip
MD5d466ca0c0fafac7ff9eeca8589a8a3bc
SHA10f6615340eb493af4cf4f46898c6d7a8eabb1386
RIPEMD160b1037b5f650ecbc71b48eccebc1dba07e09055f1
Win64 Single-Executable Binaries
vifm-w64-se-0.8-binary.zip
MD5161767e4e2d1906c13b455b3b379b8cc
SHA10dad1bf8ffa55723fb8dea2e1295eff56c972e69
RIPEMD160a379a9aa4df330ff6d398f55bac10355f4c0ff1a