xaizek / vifm (License: GPLv2+) (since 2018-12-07)
Vifm is a file manager with curses interface, which provides Vi[m]-like environment for managing objects within file systems, extended with some useful ideas from mutt.
vifm v0.8.2 beta ----------------
This release brings a bit of user-friendliness in form of key suggestions and
various descriptions provided in the interface.  Matching of files has been
extended in many ways and become significantly more powerful than before.
Menu mode also got several enhancements.

Main changes:
 - key suggestions in the interface on ambiguous input (e.g. "g");
 - helpful shortcuts for dialogs (for sort dialog in particular);
 - key descriptions in :map menus and %z macro for 'statusline' to display some
 - description of all :commands, 'options' and their values for new multiline
   version of wildmenu;
 - ANDing, ORing and negating patterns for matching files and new mime-type
 - file prefixes and suffixes can now be multi-byte, which with extended
   'classify' option allows specifying "icons" via custom fonts;
 - search result highlighting, enabled completion and a way to export the list
   for menus;
 - an indication of pattern correctness and match state for interactive prompts.
 - :select and :unselect commands to perform automatic file selection (possibly
   by using output of external application);
 - cancellation (handling of Ctrl-C) for quick view and view mode loading.

Not sure if it was noticed, but HTTPS protocol is up for related sites since
Let's Encrypt started their beta.  Everything works fine, so all the links were
updated to https protocol.

If you ever wondered which keys are builtin for the command (normal) mode of
Vifm, this cheatsheet will show you: https://next.vifm.info/cheatsheets.shtml

In case you're into using neovim, you might be interesting into checking out
alternative Vifm plugin for it: https://github.com/vifm/neovim-vifm

More detailed list of changes.

 - added heuristic that uses null byte as separator for file lists if there is
   at least one such byte, otherwise normal line separators are used.  This
   affects :[un]select, `vifm -`, %u, %U, %m and %M (thanks to filterfalse);
 - changed order of initialization to perform autocommands before startup
   commands on launch.

Normal and visual modes:
 - changed ga/gA effect on parent entry (..) to calculate size of current
   directory (thanks to aleksejrs).

:set command and options:
 - added 'wildstyle' option to control the way wild menu is displayed.  Enables
   displaying it as a menu with one item per line (thanks to santhoshr and
 - added 'suggestoptions' option to control displaying of suggestions;
 - added support of patterns to 'classify' option, so that files can now be
   decorated based on their names (thanks to elricbk);
 - added 'cvoptions' option to control when entering/leaving custom views is
   considered to be equal to entering/leaving directories (thanks to
 - added "target" sorting key, which sorts files by symbolic link targets
   (thanks to Marcos Cruz);
 - added %z 'statusline' macro that inserts text of a short tip picked at random
   (thanks to qinghao, a.k.a. haobug);
 - changed type of 'confirm' option.  Now it's a set that picks which operations
   should be confirmed (thanks to Losiara and mvucBmM0);
 - allow suffixes and prefixes in 'classify' to be of up to eight characters in
   length (thanks to elricbk).

Command-line mode:
 - added "filelist" parameter to :sync! that enables synchronization of custom
   view (thanks to filterfalse);
 - added :select and :unselect commands (thanks to filterfalse, Russell Urquhart
   and Marcos Cruz);
 - added negation to patterns with explicitly specified type (surrounded by {}
   or //).  Put exclamation mark to invert pattern match (thanks to Marcos
 - added mime type patterns ([!]<list-of-globs>) (thanks to Ross Hadden, a.k.a.
 - added pattern ANDing.  Just list decorated patterns one after another and
   such composite pattern will much when each of them matches (thanks to
 - added pattern ORing for :file[x]type and :fileviewer commands implemented as
   a comma-separated list (thanks to filterfalse);
 - expand environment variables for :edit (thanks to filterfalse);
 - don't print just table header on `:cabbr something`, print message that no
   matches found instead;
 - use original (before custom view) cursor position on :sync! in custom views
   (thanks to filterfalse).

File preview:
 - added cancellation (handling of Ctrl-C) for quick view and view mode loading
   (thanks to kalterfive);
 - skip UTF-8 BOM for file preview.

File list:
 - never add parent entry (..) to very custom view (%U) (thanks to filterfalse);
 - silently ignore tries to remove parent entry (..) (thanks to aleksejrs);
 - automatically update custom view entries on rename of their parent directory
   in the same custom view.

 - added completion of :wincmd argument;
 - do not reset completion on terminal resize;
 - some corrections of when completion happens for :find and :grep.

 - added chooseopt() builtin function that retrieves various parameters of file
   choosing (thanks to Von Welch).

Menus and dialogs:
 - added highlighting of search matches in menus;
 - added :noh[lsearch] command to menu mode;
 - added quick shortcuts to dialogs (patch by oo-);
 - added description of builtin keys to :map menus;
 - added :write command to menus, that writes all menu lines into specified file
   (thanks to gtors);
 - a bit better delete confirmation messages with number of files to be deleted;
 - avoid displaying useless search messages about incorrect pattern during
   interactive search in menus (those that user can't see, but that are shown in
 - enabled wildmenu for menus.

TUI (Text User Interface):
 - added indication of wrong pattern and absence of matches to command-prompt
   for interactive search/filtering.

Angle bracket notation:
 - display <c-h> as <bs> only at the beginning of key sequence.

Color schemes:
 - added SuggestBox highlight group for key suggestion box.

 - better terminal buffer title for plugin in neovim (thanks to
 - improved syntax highlighting of patterns.

Only on Windows:
 - fixed escaping for cmd.exe again, for :edit and external command invocations
   (thanks to Reva Revadigar);
 - fixed querying file information on 64-bit Windows (thanks to santhoshr);
 - fixed possible crash on displaying job bar (e.g. after :empty) (thanks to
   Reva Revadigar);
 - fixed UTF8 <-> UTF16 conversion, which didn't always work (on surrogate
   characters it seems) (thanks to Reva Revadigar);
 - fixed possible unexpectedly long timeouts when waiting for a key (due to
   limitation of pdcurses);
 - fixed displaying of wide (CJK) characters in pdcurses (thanks to Reva
 - fixed capturing output of external applications when 'shell' is "cmd".  Was
   broken since v0.8 in an attempt to make cmd work better with Unicode (but its
   /U flag affects only input and output streams).

 - fixed functioning on architectures on which `char` is unsigned by default
   (thanks to Ondrej Novy, a.k.a. onovy).

Important fixes:
 - fixed hanging on sudden terminal loss (regression) (thanks to aleksejrs);
 - fixed using original file names after a prompt for new destination name
   (thanks to rbong);
 - fixed unconditional resetting of executable permission when using cp dialog
   (thanks to Svyatoslav Mishyn, a.k.a. juef);
 - fixed remote feature on cygwin (thanks to Cosmin Popescu, a.k.a.
 - fixed epic bug in processing selectors followed by other commands in a
   mapping.  Command which accepted selector was called after tail of sequence
   is processed.  Such case isn't very likely, so it probably didn't affect

See change log for the full list of changes and by whom they were suggested.
Subject SHA-1 Author Date
Version v0.8.2-beta ea34d3f82ddef78379dbbfa06178d6224dc8767c xaizek 2016-07-02 08:54:16
Better tag handling in deploy script 4b89114ae11abf50e7c54ad4866a2910f98e0871 xaizek 2016-07-02 08:39:41
Update tests to work with relative paths 96ee95d4bb9a9b977bc0414b8024b69e8d7cf14f xaizek 2016-07-02 08:27:46
Use longer timeout for fileops/size 6bbde50452d6ee23a0877307e8057d88e026e194 xaizek 2016-07-02 08:25:56
Always specify 64-bit offsets in tests 520db9078654c184c8a6bbbc00027e5404dd4d9e xaizek 2016-07-02 08:18:45
Add some includes to compat/os.c 7e6add2d476bf9fb05a405fcdfc7feb89f74fc9c xaizek 2016-07-02 08:14:38
Update NEWS file for 0.8.2 beta 7b177c61c3c50410e9d9d27324e2e3eae348163b xaizek 2016-07-01 16:13:33
Fix one of ChangeLog entries ee11a76fb96b89a8de159f6d18154841187cc927 xaizek 2016-07-01 15:56:11
Fix strange behaviour if command-line fill screen 0822f4e098eb410ef2359362f79c83516bff19ee xaizek 2016-06-30 18:45:40
Fix possible off cursor after cmdline insertions 28b8b233e8dd4f998522c2d80bf596984da3e7df xaizek 2016-06-30 18:42:56

Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://code.reversed.top/user/xaizek/vifm

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@code.reversed.top/user/xaizek/vifm

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a pull request:
... clone the repository ...
... make some changes and some commits ...
git push origin master