Vifm v0.9June 18, 2017
New version brings two new ways of viewing and processing file lists, namely
tree-view and directory-comparison. As usual, previously existing facilities
were extended and improved to become more useful.
Thanks to everyone who tried out the beta.
Main changes
- Introduced tree-like representation of files.
- Added directory comparison facilities.
- Added ability to restore last navigation menu.
- Background operations and programs can now be cancelled.
- Dismissed error output of external programs can now be queried.
- Added shell completion for bash and zsh.
- Now it's possible to configure mappings in dialogs.
Demonstration of new features...
More detailed list of changes...
Packaging:
- Removed
-Werror
in tests from non-developer builds.
Command-line mode:
- Added
:tree
command that converts current view into a tree (thanks to filterfalse and Kornel).
- Added
:dmap
, :dnoremap
and :dunmap
commands to configure mappings in dialogs (thanks to Sassan Haradji, a.k.a. sassanh).
- Added
"tree"
parameter to :sync!
that enables synchronization of tree view (thanks to filterfalse).
- Added
:compare
command to perform comparison in one or two directory trees (thanks to anonymous on SourceForge discussion forum and aleksejrs).
- Added
:copen
command to restore last menu that supports navigation (thanks to Sassan Haradji, a.k.a. sassanh).
- Added
:screen!
form that enables terminal multiplexers support (instead of toggling it as :screen does) (thanks to Marcos Cruz).
- Added
:siblnext
and :siblprev
commands. They change directory to next or previous sibling directories of current path (in global sorting order of current pane) (thanks to sudo-nice).
- Made
:put
, :touch
and :mkdir
accept [line]
range, which can be used to specify target position in tree-view (thanks to filterfalse).
- Accept paths in
:touch
, not just file names (thanks to filterfalse).
- Disallow applying
:
chmod on ".."
entry.
- Disallow selecting
".."
entry with :
select command.
- Expand macros in
:[un]select !{command}
(thanks to Michael Corvin).
Macros:
- Added
%Iu
and %IU
macros, which are %u
and %U
equivalents, but work better if external command is interactive and changes terminal state.
- Added
%q
macro that redirects command output into quick view (thanks to svenn71).
:set command and options:
- Added
'dotfiles'
(local) option, which exposes dot files filter as an option (thanks to filterfalse).
- Added
'caseoptions'
option that enables more fine-grained control over case sensitivity (thanks to Alexandru Geana, a.k.a. alegen).
- Added
'sizefmt'
option that configures formatting of human-friendly size (thanks to sudo-nice).
- Added
%f
'statusline'
macro that inserts relative path of the entry, which might be useful for non-regular views (thanks to filterfalse).
- Added
%D
'statusline'
macro that displays path of the other pane in single-pane layout (thanks to sudo-nice).
- Added
%T
'statusline'
macro that displays symbolic link target (thanks to sudo-nice).
- Added
%a
'statusline'
macro that displays amount of free space available at current partition (thanks to sudo-nice).
- Consider trailing slash for directories or symbolic links that point to directories in
'classify'
patterns by file name (e.g., this works now: [::*/::]
).
- Better handling of setting
'fillchars'
to incorrect or excessive value.
Normal and visual modes:
- Added [d and ]d shortcuts to navigate to previous/next directory entry (thanks to filterfalse).
- Added [s and ]s shortcuts to navigate to previous/next selected entry (thanks to filterfalse).
- Added [z and ]z shortcuts to navigate to first/last sibling in a tree (thanks to filterfalse).
- Added zj and zk shortcuts to navigate to next/previous directory sibling in a tree (thanks to filterfalse).
- Added [c and ]c shortcuts to navigate to previous/next mismatch in directory comparison view (thanks to filterfalse).
- Added do and dp keys to compare views for applying changes in files (thanks to filterfalse).
Menus and dialogs:
- Added dd key to
:jobs
menu, which requests cancellation of background operation. Background :put
, :copy
, :move
, :delete
, size calculation with ga and gA as well as applications started in background can be cancelled this way (thanks to blurm).
- Added e key to
:jobs
menu that displays list of errors issues by that jobs, if any. h key goes back to :jobs menu.
- Added % key to menu mode, which navigates to
[count]
-th percent of the list.
- Added meaning to
[count]
of cp shortcut, which is now processed as numerical argument for non-recursive chmod
command (thanks to sudo-nice).
- Partially return progress report for menus. Was disabled by introduction of null byte heuristic.
File operations:
- Enable restoring files from trash from custom views.
- Disallow moving/copying/linking files into custom view (put is forbidden, so makes sense to forbid these too).
- Try harder to move files by not giving up on getting permission error, which isn't always a reliable indication of actual permission error. Only when
'syscalls'
is on (thanks to Marcin Kurczewski, a.k.a. rr-).
File preview:
- View current directory on
".."
for quickview/view mode if no viewer matches such entry (thanks to filterfalse).
- Enable cancellation of tree preview construction (thanks to filterfalse).
- Do not resolve symbolic links in directory preview (thanks to filterfalse).
Security:
- Make temporary rename files accessible only by the user (thanks to aleksejrs).
Performance:
- Improve performance of startup and exit by omitting file existence checks. The cost is possibly old files staying in the state, but it should be for long time (thanks to Marcin Kurczewski, a.k.a. rr-).
- Improved sorting performance in the presence of huge amount of symbolic links (thanks to Marcin Kurczewski, a.k.a. rr-).
Invocation:
- Don't disable preview on
--remote --select
if it doesn't hide updated pane (thanks to Marcin Kurczewski, a.k.a. rr-).
- Make
+{num}
and similar options work (actually affect cursor of the view) (thanks to filterfalse).
- Treat
+
option the same way as Vim (like :$
) (thanks to filterfalse).
Scripting:
- Added
v:servername
variable, which provides access to server name of the running instance used by --remote feature (thanks to Marcin Kurczewski, a.k.a. rr-).
getpanetype()
got new value ("tree"
) to indicate tree-view (thanks to filterfalse).
TUI (Text User Interface):
- Limited maximum height of message popup, just print how many lines we're skipping.
- Put hardware cursor according to current mode and cursor within it (thanks to Tyler Spivey).
- Display path to the conflicting file in conflict resolution dialog.
- Provide better messages on i/o errors with 'syscalls' (thanks to Behrooz).
File filtering:
- Don't move cursor off
"../"
before start of local filtering (thanks to filterfalse).
- Prevent clearing filters on zM if there were no zO preceding it (thanks to sudo-nice).
Color schemes:
- Added CmpMismatch highlight group for highlighting mismatched files on side-by-side comparison.
Integration:
- Added completion scripts for bash and zsh (patches by filterfalse).
- Escape first tilde in paths that go to the shell (thanks to Marius Schmidl).
- Resolve symbolic link for listing associated programs from desktop-files (thanks to filterfalse).
Vim-plugin:
- Work around
:drop
command being disabled in the plugin (thanks to Phil Runninger).
- Fixed inconsistent behaviour of
:EditVifm
in plugin with regard to "[No Name]"
buffer (thanks to Phil Runninger).
- Fixed plugin in versions of Vim where
:argadd
without argument doesn't work (thanks to eco0414).
Only on Windows:
- Use
<exe file location>/data/colors
as global storage of color schemes on Windows (thanks to r44083).
- Handle terminal resize on Windows 10 (thanks to randomizedthinking).
- Properly recover from invalid/strange UNC root on Windows. Don't end up with empty filelist.
- Fixed use of non-latin characters in environment variables and command-line options (thanks to khaoos-abominable).
Important fixes:
- Fixed redirecting stdout of background commands to
/dev/null
, which could be unwritable descriptor (thanks to c02y).
- Fixed possible data loss on moving/copying files over their own parent or child directories via p, P,
:move
, :copy
, :alink
and :rlink
(thanks to Marius Schmidl).
- Fixed detection of too-small-terminal state.
- Fixed treating characters like š and ć (with low Unicode values, just above 0x100) as functional keys on input (thanks to granderil).
Other changes:
- Changed size formatting to round from zero (matches behaviour of e.g.
ls
).
- Read error output of background commands independently of main thread (prevents blocking of tools which produce huge amount of output) (thanks to Stas Malavin).
- No vifminfo merging if file change isn't detected. Might result in faster quitting in some cases. Not accounting for some changes is still possible when multiple instances quit simultaneously, but same could happen without this change.
- Made search consider trailing slash for directories and symbolic links that point to directories (thanks to filterfalse).
- Don't use :filextype in sample vifmrc for OS X, we can't tell whether graphical system is running (thanks to piotryordanov).
See change log for the full list.
Download links