Vifm v0.10November 11, 2018

New version includes long awaited tabs and support for managing media. The first one comes in two flavours: tabs either include layout or don't. The latter relies on a helper script, whose job is to adapt existing tools to make them usable by vifm.

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 tabs which either operate on the level of layout or level of individual panes
  • Added ability to synchronize contents of registers among multiple instances
  • Added menu for managing media (relies on helper that does the managing)
  • Improved cursor positioning and control over it
  • Ability to colorize statusline
Demonstration of new features... Hover mouse and wait a bit to start animations.

Tabs at global level


Tabs at pane level


Managing media


Synchronizing registers

More detailed list of changes... Command-line mode:
  • Added :tabc[lose] command that closes current tab unless it's the last one.
  • Added :tabm[ove] command that moves tabs (thanks to filterfalse).
  • Added :tabname command that updates name of the current tab.
  • Added :tabnew command that creates a new tab (thanks to Cosmin Popescu, a.k.a. cosminadrianpopescu).
  • Added :tabn[ext] and :tabp[revious] commands, which work as gt and gT normal mode shortcuts correspondingly (thanks to Cosmin Popescu, a.k.a. cosminadrianpopescu).
  • Added :qa[ll], :wqa[ll] and :xa[ll] commands that always try to exit vifm no matter how many tabs are open.
  • Added :goto command that navigates to specified file/directory (thanks to mateusz28 and Dmitry Frank, a.k.a. dimonomid).
  • Added :regular command that leaves custom view (thanks to gammaray).
  • :quit, :wq, :exit, :xit, ZZ and ZQ now try to close current tab before closing the application.
  • Make :echo and :execute report parsing errors in more detail than just "invalid expression".
  • Make :cabbrev and :cnoreabbrev always treat bar (|) as part of their arguments, just like :*map commands do (thanks to filterfalse).
  • Make :tree! toggle view in and out of tree mode (thanks to gammaray).
  • More accurate error message on handling non directories passed to :cd.
:set command and options:
  • Added 'tabscope' option that controls style of tabs (thanks to Cosmin Popescu, a.k.a. cosminadrianpopescu).
  • Added 'showtabline' option that controls visibility of tab line.
  • Added 'histcursor' option that gives partial control over when cursor is positioned in accordance with record of directory history (thanks to filterfalse and Dmitry Frank, a.k.a. dimonomid).
  • Added 'quickview' option that controls visibility of quick view (:view) (thanks to Jochen Schweizer, a.k.a. durcheinandr).
  • Added 'syncregs' option which defines group of instances that share registers (patch by Ma_Sys.ma).
  • Added 'mediaprg' option that can be used to specify helper for managing removable media. One such helper with support of udevil and udisks is provided. Only for *nix systems.
  • Added support for arbitrary expressions in 'statusline': '%{...}', e.g. '%{&sort}' evaluates to the value of the sort option (patch by Dmitry Frank, a.k.a. dimonomid).
  • Added "M" flag to 'shortmess' option to control shortening of titles in windows of terminal multiplexers created by vifm down to file name instead of using full path (thanks to mateusz28).
File operations:
  • Try to preserve file owner/group on copying (thanks to willemw12).
Normal and visual modes:
  • Added gt and gT normal mode shortcuts that switch between tabs in both directions.
Key bindings:
  • Added <silent> :*map argument that postpones UI updates until RHS is completely processed. Probably not all updates are postponed, to be improved as unhandled cases are discovered.
  • Added <wait> :*map argument, which resolves prefix conflicts of user-defined mappings and builtin keys in favour of user-defined mappings (thanks to PaweÅ‚ Smolak, a.k.a. psmolak).
Angle bracket notation:
  • Added <insert> angle bracket notation (thanks to j-xella).
  • Added <c-@> angle bracket notation making it possible to map Ctrl-Space key (thanks to anonymous at Vifm Q2A site).
File list:
  • Use historical cursor position upon startup by default when 'autochpos' is on, this is now independent from "savedirs" in 'vifminfo' option (thanks to filterfalse).
  • Use historical cursor position on navigating to a mark that doesn't specify a file by default when 'autochpos' is on (thanks to filterfalse).
  • Move cursor after p and P to one of files that were moved or to a cause of last conflict (thanks to filterfalse and ranousse).
  • Issue a warning if file system lists several files with identical names in the same directory. It used to be assumed that it can't happen (thanks to Jose Riha, a.k.a. jose1711).
File preview:
  • Support italics in quickview/view mode and in :highlight when curses implementation provides corresponding extension. PDCurses doesn't implement it on Windows. Fallback is to use "reversed" attribute (thanks to GeorgeHJ).
Integration:
  • Escape = at the beginning of paths (has special meaning in zsh) (thanks to agguser).
Menus and dialogs:
  • Added :media menu that can list and perform basic operations on removable media (requires helper to be available, see 'mediaprg'). Only for *nix systems (thanks to Bruce Hunsaker, a.k.a. hunsakerbn and others).
  • Added r key to :undolist menu, which resets position in the undo list to group under the cursor (thanks to mini-turtle).
  • Sort entries of :bmarks menu (thanks to anonymous at Vifm Q2A site).
  • Slightly better formatting in :undolist menu.
  • Do not reset selection before executing a :command from :commands menu (thanks to Jose Riha, a.k.a. jose1711).
  • Less strict parsing of output of external command by :[un]select commands. Similar to %u/%U and menus allow <file>[:[<line>:[<col>:]] <description>] format (thanks to j-xella).
Color schemes:
  • Added TabLine highlight group for highlighting tab line.
  • Added TabLineSel highlight group for highlighting tip of the selected tab on the tab line.
  • Added User1..User9 highlight groups and corresponding %[0-9]* 'statusline' macro, which makes it possible to colorize parts of status line differently (thanks to GeorgeHJ).
TUI (Text User Interface):
  • Display list of files in removal confirmation dialog (thanks to ovk).
Scripting:
  • Added tabpagenr() function that retrieves number of current or last tab page (thanks to filterfalse).
  • Added fnameescape() builtin function, which can be used to escape paths on construction of :commands (thanks to filterfalse).
  • Added second optional parameter to filetype() builtin function that is treated as a boolean and specifies whether symbolic links should be resolved.
  • Added addition and subtraction operations to the parser.
  • Added grouping via parentheses to expressions (thanks to Konst Mayer, a.k.a. cdlscpmv).
  • Allow passing numerical positions to filetype() function.
Documentation:
  • More explicit documentation about leaving custom views (thanks to tagwint).
Vim-plugin:
  • Support embedded terminal in the plugin for newer Vim.
Only on Windows:
  • Fixed flickering on Windows (thanks to Alexandre Viau and randomizedthinking).
  • Fixed graphical applications on Windows not being detected as such, which caused vifm to wait until they finish running. Was broken since 0.9 (thanks to r0ck).
Important fixes:
  • Fixed error messages from put operation being postponed until the next put operation. Got broken in 0.9.
  • Fixed confirmation not being requested on :delete (thanks to anonymous at Vifm Q2A site).
See change log for the full list.
Download links
Source Code
vifm-0.10.tar.bz2

(signature)
MD5fd50f29c2cbea32ac55d37b470ddc692
SHA1fbdfe7bd9da754e9c8b09da5db8fd8f99bbb49ae
RIPEMD160fc331d5e3b0abcf2715149859bd32bfa9ccd9528
Win32 Binaries
vifm-w32-0.10-binary.zip

(signature)
MD5ad623bbfaf2a64f4ad1e6f1ac7292e8d
SHA15dafae88522e9a1bf0eb9feb90384ba457f7c75d
RIPEMD16080588e2051f593d83dbd3ad6e7d7f9a3461ef055
Win32 Single-Executable Binaries
vifm-w32-se-0.10-binary.zip

(signature)
MD5c9517c8a8c2a2fb1c01fae6de68ef607
SHA1f1712d43b73f79168669f7d54b2ec6a3afbe6682
RIPEMD160b0a40a55593076f60fb82bae7f61e1a181d7ddb8
Win64 Single-Executable Binaries
vifm-w64-se-0.10-binary.zip

(signature)
MD5919dbcbf03e1220d706b3dd3bbe093e2
SHA1eee409e324846b83d57a42f0dbc3e4f17a198fc6
RIPEMD16067a57da4dbc881d7013bf65a8e27e5c203d30751