Vifm v0.8.1January 17, 2016

New minor version delivers primarily various small improvements of different kinds. There is also improvement of navigation via named bookmarks (or tags), which can ease keeping track of what is where, and an ability to apply settings to specific directories or sub-trees (via combination of autocommands and local options).

Thanks to everyone who was reporting issues during beta period.

Main changes
  • Added local options, which work until directory change.
  • Added named bookmarks (paths are associated with tags).
  • Added autocommands (with DirEnter event).
  • Added ability to sort by regexp-extracted part of file name.
  • Added builtin directory preview (similar to tree).
  • Added a way to communicate menu contents to Vim quickfix.
  • Added "more" mode that is used to handle status bar content that doesn't fit on the screen.
  • IPC got new (safe) implementation with listing/targeting of active instances, it's enabled by default again.
  • Updating local view settings from vifmrc now affects both panes (:windo is not necessary).
  • More predictive cursor updates on directory reload.
  • Improvements related to expression and command parsing.
More detailed list of changes... Command-line mode:
  • Added :setl[ocal] and :setg[lobal] commands to manage values of local options that are specific to current directory and are reset on directory change, similar to local options of Vim.
  • Added :pu[t] command that inserts files into current directory (thanks to mvucBmM0).
  • Added :winc[md] command-line command (thanks to fogine).
  • Added exclamation mark to :shell to suppress spawning new teminal multiplexer pane (patch by Cosmin Popescu, a.k.a. cosminadrianpopescu).
:set command and options:
  • Added :set foo+=bar syntax for string options (append value).
  • Added 'deleteprg' option, which specifies program to run on files that are permanently removed.
  • Added 'dirsize' option to control how size of directories is displayed in file views. This enables one to see number of files in a directory rather than its size (thanks to Martin Fischer).
  • Added optional %u and %U macros to 'findprg', 'grepprg', and 'locateprg' that allow immediate redirection of command output into custom view without opening a menu (thanks to filterfalse).
  • Added 'iooptions' option to configure file system operations. Contains only "fastfilecloning" for btrfs so far (thanks to aleksejrs).
  • Added special treatment for "*" as value of 'slowfs', which might be useful in case of very slow handling of requests to mounts enumeration (patch by Cosmin Popescu, a.k.a. cosminadrianpopescu).
  • Added handling of "%u" in trash specification on *nix, which is replaced with real user ID (thanks to Regis).
  • Allow 'shell' to specify a shell argument on *nix (thanks to loongw).
  • Added 'sortgroups' option and "groups" sorting key, which allow sorting by parts of file names (thanks to aleksejrs).
  • Added 'title' option to control whether title of terminal should be set. Enabled by default if old title can be restored (thanks to Svyatoslav Mishyn, a.k.a. juef).
  • Make "p" in 'tuioptions' affect padding in quick view and view mode.
  • Changed 'fusehome' default from temporary directory to data directory (that is $XDG_DATA_HOME/.local/share/fuse/ or $VIFM/fuse/ depending on which parent directory exists, the second one exists by definition, but first might not) (thanks to aleksejrs and to Hendrik Jaeger, a.k.a. henk).
  • Changed default value of 'trashdir' on *nix again, this time to "%r/.vifm-Trash-%u,$VIFM/Trash,%r/.vifm-Trash". This way it's safer for privacy, although using %r is not very safe in general (thanks to Regis).
Configuration:
  • Make :set, :filter and :normal zo (and alike) in vifmrc affect all views, thus obsoleting use of :winrun or :windo for this purpose (they still work, the new way is a simpler and more obvious one). This is related to commands executed during vifmrc processing (not those in the right-hand side of mappings, commands, etc.).
  • Automatically create ~/.vifm/scripts containing small README file if the directory doesn't exist on startup (thanks to fogine).
Core:
  • Added autocommands (DirEnter event and :au[tocmd] command) (thanks to filterfalse).
File operations:
  • Added retry/ignore/abort prompt for file/directory removal when 'syscalls' is on (thanks to Robert Sarkozi).
  • Make use of file cloning feature of btrfs when possible and enabled in 'iooptions' (thanks to aleksejrs).
  • Preserve file timestamps on copying files with 'syscalls' on (thanks to mvucBmM0).
  • Employ inotify on GNU/Linux for more precise watching directories for changes.
  • Copy timestamps and permissions on merging directories (thanks to willemw12).
Navigation:
  • Added named bookmarks (paths are associated with tags). This adds :bmark, :bmarks, :bmgo and :delbmarks command-line commands. Also there is new "bmarks" value for 'vifminfo' (thanks to Schmalzhaf Stefan).
Normal and visual modes:
  • Accept [count] for h and gh.
  • Added zr normal mode key to reset local filter (thanks to filterfalse).
  • Ctrl-W | and Ctrl-W _ now can set window size to given count (thanks to filterfalse).
Key bindings:
  • Remapping of builtin keys that are followed by selectors (e.g. :nnoremap d y) (thanks to mvucBmM0).
Color schemes:
  • Changed default colorscheme to invert colors of the current line.
Documentation:
  • Documented %= for 'statusline' and 'rulerformat'
  • .
  • Make --select option more prominent in documentation (thanks to Svyatoslav Mishyn, a.k.a. juef).
  • Documented difference between paths in menu with and without trailing slash (thanks to filterfalse).
Macros:
  • Added %pc macro that splits preview command in two pices: preview command and clear command (thanks to Tomek K., a.k.a. TomiCode).
Menus and dialogs:
  • Added B key to menus, which acts like b, but creates unsorted (very custom) view (thanks to filterfalse).
  • Added v key to menu mode that loads current contents into quickfix list of editor (Vim compatible one is assumed) (thanks to filterfalse).
  • Added handling of dd in :trashes, :trashes? and :lstrashes, which either deletes an item in trash or empties trash (thanks to Svyatoslav Mishyn, a.k.a. juef).
  • Somewhat more informative error titles on issues during file operations.
  • Provide conflict resolution options in a dialog rather than on the command-line, which is hard to read with so many options.
  • Expand "~" in menus on navigation.
Packaging:
  • Removed vifmrc-converter. It's been around for four years and not needed any more (thanks to filterfalse).
  • Removed contents of autoconf.sh, autoreconf covers what was there (there is a notice in that script now about it just in case) (thanks to Hendrik Jaeger, a.k.a. henk).
  • Added --with-sanitize=basic|thread|leak option to configure script.
  • Added missing script that's necessary for %s macro in GNU screen. Was lost for a long time.
  • Work around compilation on systems where MAX_ARG_STRLEN is defined, but unusable (thanks to Marcin Juszkiewicz, a.k.a. hrw, Michel Normand and Michael Vetter, a.k.a. jubalh).
  • Put right-hand side of user-defined commands into separate scope of if-else-endif expressions. This prevents affecting of regular input by malformed user-defined command.
Scripting:
  • Added :elseif command (thanks to filterfalse).
  • Added &ption syntax for :let command.
  • Added && and || operators to expression parser (thanks to filterfalse).
  • Added getpanetype() builtin function that retrieves type of current pane (thanks to filterfalse).
  • Added layoutis() builtin function that answers queries about current interface configuration (thanks to fogine).
  • Added paneisat() builtin function that answers queries about current pane position (thanks to fogine).
  • Added inline comments to allow less verbose commenting in configuration.
  • Rewrote expression parser to prevent side-effects from occurring until syntax is checked.
TUI (Text User Interface):
  • Added match numbers to search messages on status bar (patch by Cosmin Popescu, a.k.a. cosminadrianpopescu).
  • Added dynamic view column alignment (specified by "*", just like "-" for left alignment) (patch by Cosmin Popescu, a.k.a. cosminadrianpopescu).
  • Added "more" mode that is used to handle status bar content that doesn't fit on the screen (thanks to Bruce Hunsaker, a.k.a. hunsakerbn, and Svyatoslav Mishyn, a.k.a. juef).
  • Added builtin directory preview (thanks to Damian Ariel Perticone and Alexandre Viau).
  • Added "fileext" sorting key, which sorts files by extensions and directories by name (patch by Cosmin Popescu, a.k.a. cosminadrianpopescu).
  • Added "nitems" sorting, which sorts by number of items in a directory (thanks to filterfalse).
  • Added "nlinks" sorting key to display number of hard links to a file on *nix systems (thanks to filterfalse).
  • Normalize surrounding spaces in menu and dialog titles.
  • Lower minimum supported terminal width and height from 30x10 to 20x5.
  • Update cursor position on file disappearing in more predictable way. Use the closes file to the previously active one that still exists (thanks to ranousse).
  • Display lower bound on item count in status bar progress messages (e.g. on :grep).
Important fixes:
  • Assume UTF-8 sequences can be broken (thanks to Svyatoslav Mishyn, a.k.a. juef).
  • Made setting title inside terminal multiplexers (when terminal type is "screen*") work.
  • Check file system sensitivity on OS X (thanks to loongw).
  • Fixed startup on Windows 10 (thanks to th1rdey3 and Robert Sarkozi).
  • Fixed swapped absolute/relative link creation on :alink/:rlink commands (patch by MadMaverick9).
  • Multiple fixes for custom views (thanks to filterfalse).
  • More careful treating of files with colons in their names for menus and custom views (thanks to aleksejrs).
  • Fixed ranges for :yank, 0.8 regression (thanks to Marius Schmidl).
  • Fixed crash on copy-like operations that move several files into subdirectory of another view (thanks to Marius Schmidl).
  • Fixed creation of intermediate directories on merging directories (thanks to willemw12).
Vim-plugin:
  • Added set of :*Vim commands to vifm run from Vim plugin, which overrule initial :*Vifm command behaviour (thanks to Ross Hadden, a.k.a. rosshadden).
  • Changed plugin to do not depend on location of vifm. g:vifm_home is ignored from now on (thanks to aleksejrs).
Only on Windows:
  • Display directory size on Windows more correctly.
  • Improvements in running commands with special characters and/or spaces (thanks to Stas Malavin).
Other changes:
  • Added handling of "-" command-line argument specified in place of directory path as instruction to read list of files from stdin.
  • Added --server-list and --server-name command-line options that enumerates names of currently running vifm servers and sets name of target/this instance respectively.
  • Added optional argument for --logging parameter that specifies path to startup log (thanks to Cosmin Popescu, a.k.a. cosminadrianpopescu).
  • Invalidate directory size (calculated via ga/gA) if noticed that directory was changed. This affects all parent directories as well, way easier to see what needs recalculation after file moving/removal.
  • Warn about --remote command being disabled at build-time (thanks to Svyatoslav Mishyn, a.k.a. juef).
  • Do not finish argument parsing after finding --help or --version, continue and validate the rest of command-line (thanks to Svyatoslav Mishyn, a.k.a. juef).
  • Display incomplete file name on rename instead of failing with error on Unicode conversion issues.
See change log for full list.
Download links
Source Code
vifm-0.8.1.tar.bz2
MD52b748ed3831b3036bc32689218df356f
SHA1683c3eecc1c671da8cfd58518d2174ff6c46f61d
RIPEMD1605a21f9daff27c9fb79191b32e6cc0a2a1ed33a77
Win32 Binaries
vifm-w32-0.8.1-binary.zip
MD56147411426ed4118a13f9c21ddae34e3
SHA13e14f6758f7796dbae44efb594666a31a2885ba2
RIPEMD160abf39574a6b5c985da22c8e0b3f806095614bd81
Win32 Single-Executable Binaries
vifm-w32-se-0.8.1-binary.zip
MD51ccbadfd90d3403d1fdeb9aaf344cebf
SHA1c8811e4648f28aebd84e3d994aea6654931cbbd1
RIPEMD1600aa8250341720c10b26fc3d5d56e16f068f1893c
Win64 Single-Executable Binaries
vifm-w64-se-0.8.1-binary.zip
MD59c930b32f29274e33367a7afa2ced0c9
SHA1fa05a712eabd2489a8fb351f4917ffa174f10e51
RIPEMD1602687236b37e4bc8207546040a95dbf8212cd9569