VIFM(1)                                                   VIFM(1)



NAME
       vifm - vi file manager

SYNOPSIS
       vifm [OPTION]...
       vifm [OPTION]... path
       vifm [OPTION]... path path

DESCRIPTION
       Vifm  is  an  ncurses based file manager with vi like key-
       bindings.  If you use vi, vifm gives you complete keyboard
       control  over your files without having to learn a new set
       of commands.

OPTIONS
       vifm starts in the current directory unless it is given  a
       different  directory  on  the  command  line or 'vifminfo'
       option includes "savedirs" (in  which  case  last  visited
       directories are used as defaults).

       -      Read  list  of files from standard input stream and
              compose custom view out of them (see "Custom views"
              section).   Current  working directory is used as a
              base for relative paths.

       <path> Starts Vifm in the specified path.

       <path> <path>
              Starts Vifm in the specified paths.

       Specifying two directories triggers split view  even  when
       vifm  was  in  single-view mode on finishing previous run.
       To suppress this behaviour :only command can be put in the
       vifmrc file.

       When  only one path argument is found on command-line, the
       left/top pane is automatically set as the current view.

       Paths to files are also allowed in case you want  vifm  to
       start with some archive opened.

       --select <path>
              Open  parent directory of the given path and select
              specified file in it.

       -f     Makes vifm instead of opening files write selection
              to $VIFM/vimfiles and quit.

       --choose-files <path>|-
              Sets  output  file  to write selection into on exit
              instead of opening files.  "-" means standard  out-
              put.  Use empty value to disable it.

       --choose-dir <path>|-
              Sets  output  file  to write last visited directory
              into on exit.   "-"  means  standard  output.   Use
              empty value to disable it.

       --delimiter <delimiter>
              Sets  separator  for list of file paths written out
              by  vifm.   Empty  value  means   null   character.
              Default is new line character.

       --on-choose <command>
              Sets  command  to  be  executed  on  selected files
              instead of opening them.  The command may  use  any
              of  macros  described  in  "Command macros" section
              below.  The command  is  executed  once  for  whole
              selection.

       --logging[=<startup log path>]
              Log  some  operational  details  $VIFM/log.  If the
              optional startup log path is specified and  permis-
              sions allow to open it for writing, then logging of
              early initialization  (before  value  of  $VIFM  is
              determined) is put there.

       --server-list
              List available server names and exit.

       --server-name <name>
              Name of target or this instance (sequential numbers
              are appended on name conflict).

       --remote
              Sends the rest  of  the  command  line  to  another
              instance  of  vifm,  --server-name  is treated just
              like any other argument and should precede --remote
              on  the  command  line.   When  there is no server,
              quits silently.  There is  no  limit  on  how  many
              arguments   can  be  processed.   One  can  combine
              --remote with -c <command> or +<command> to execute
              commands  in already running instance of vifm.  See
              also "Client-Server" section below.

       --remote-expr
              passes expression to vifm server and prints result.
              See also "Client-Server" section below.

       -c <command> or +<command>
              Run  command-line  mode <command> on startup.  Com-
              mands in such arguments are executed in  the  order
              they  appear in command line.  Commands with spaces
              or special symbols must be enclosed  in  double  or
              single  quotes  or  all  special  symbols should be
              escaped  (the  exact  syntax  strongly  depends  on
              shell).  "+" argument is equivalent to "$" and thus
              picks last item of of the view.

       --help, -h
              Show a brief command summary and exit vifm.

       --version, -v
              Show version information and quit.

       --no-configs
              Skip reading vifmrc and vifminfo.


       See "Startup" section below for the explanations on $VIFM.

General keys
       Ctrl-C or Escape
              cancel most operations (see "Cancellation"  section
              below), clear all selected files.

       Ctrl-L clear and redraw the screen.

Basic Movement
       The  basic  vi  key  bindings are used to move through the
       files and pop-up windows.

       k, gk, or Ctrl-P
              move cursor up one line.

       j, gj or Ctrl-N
              move cursor down one line.

       h      when 'lsview' is off move up one  directory  (moves
              to  parent  directory node in tree view), otherwise
              move left one file.

       l      when 'lsview' is  off  move  into  a  directory  or
              launch  a file, otherwise move right one file.  See
              "Selection" section below.

       gg     move to the first line of the file list.

       G      move to the last line in the file list.

       gh     go up one directory regardless of view  representa-
              tion (regular, ls-like).  Also can be used to leave
              custom views including tree view.

       gl or Enter
              enter directory or launch a file.  See  "Selection"
              section below.

       H      move to the first file in the window.

       M      move to the file in the middle of the window.

       L      move to the last file in the window.

       Ctrl-F or Page Down
              move forward one page.

       Ctrl-B or Page Up
              move back one page.

       Ctrl-D jump back one half page.

       Ctrl-U jump forward one half page.

       n%     move  to the file that is n percent from the top of
              the list (for example 25%).

       0 or ^ move cursor to  the  first  column.   See  'lsview'
              option description.

       $      move  cursor  to  the  last  column.   See 'lsview'
              option description.

       Space  switch file lists.

       gt     switch to the next tab (wrapping around).

       {n}gt  switch to the tab number {n} (wrapping around).

       gT     switch to the previous tab (wrapping around).

       {n}gT  switch to {n}-th previous tab.

Movement with Count
       Most movement commands also accept a count, 12j would move
       down 12 files.

       [count]%
              move to percent of the file list.

       [count]j
              move down [count] files.

       [count]k
              move up [count] files.

       [count]G or [count]gg
              move to list position [count].

       [count]h
              go up [count] directories.

Scrolling panes
       zt     redraw pane with file in top of list.

       zz     redraw pane with file in center of list.

       zb     redraw pane with file in bottom of list.

       Ctrl-E scroll pane one line down.

       Ctrl-Y scroll pane one line up.

Pane manipulation
       Second character can be entered with  or  without  Control
       key.

       Ctrl-W H
              move the pane to the far left.

       Ctrl-W J
              move the pane to the very bottom.

       Ctrl-W K
              move the pane to the very top.

       Ctrl-W L
              move the pane to the far right.


       Ctrl-W h
              switch to the left pane.

       Ctrl-W j
              switch to the pane below.

       Ctrl-W k
              switch to the pane above.

       Ctrl-W l
              switch to the right pane.


       Ctrl-W b
              switch to bottom-right window.

       Ctrl-W t
              switch to top-left window.


       Ctrl-W p
              switch to previous window.

       Ctrl-W w
              switch to other pane.


       Ctrl-W o
              leave only one pane.

       Ctrl-W s
              split window horizontally.

       Ctrl-W v
              split window vertically.


       Ctrl-W x
              exchange panes.

       Ctrl-W z
              quit preview pane or view modes.


       Ctrl-W -
              decrease size of the view by count.

       Ctrl-W +
              increase size of the view by count.

       Ctrl-W <
              decrease size of the view by count.

       Ctrl-W >
              increase size of the view by count.


       Ctrl-W |
              set current view size to count.

       Ctrl-W _
              set current view size to count.

       Ctrl-W =
              make size of two views equal.

       For  Ctrl-W  +, Ctrl-W -, Ctrl-W <, Ctrl-W >, Ctrl-W | and
       Ctrl-W _ commands count can be given before  and/or  after
       Ctrl-W.   The resulting count is a multiplication of those
       two.  So "2 Ctrl-W 2 -" decreases window size by  4  lines
       or columns.

       Ctrl-W | and Ctrl-W _ maximise current view by default.

Marks
       Marks are set the same way as they are in vi.

       You can use these characters for marks [a-z][A-Z][0-9].

       m[a-z][A-Z][0-9]
              set a mark for the file at the current cursor posi-
              tion.

       '[a-z][A-Z][0-9]
              navigate to the file set for the mark.


       There are also several special marks  that  can't  be  set
       manually:

         - ' (single quote) - previously visited directory of the
           view, thus hitting ''  allows  switching  between  two
           last locations

         - < - the first file of the last visually selected block

         - > - the last file of the last visually selected block

Searching
       /regular expression pattern
              search  for  files  matching  regular expression in
              forward direction and advance cursor to next match.

       /      perform forward search with top item of search pat-
              tern history.

       ?regular expression pattern
              search  for  files  matching  regular expression in
              backward direction and advance cursor  to  previous
              match.

       ?      perform  backward  search  with  top item of search
              pattern history.

       Trailing slash for directories is taken into  account,  so
       /\/  searches for directories and symbolic links to direc-
       tories.  At the moment // works too, but this  can  change
       in  the future, so consider escaping the slash if not typ-
       ing pattern by hand.

       Matches are automatically selected if 'hlsearch'  is  set.
       Enabling  'incsearch'  makes search interactive.  'ignore-
       case' and 'smartcase' options affect case  sensitivity  of
       search  queries  as  well as local filter and other things
       detailed in the description of 'caseoptions'.


       [count]n
              go to the next file matching last  search  pattern.
              Takes last search direction into account.

       [count]N
              go  to  the previous file matching last search pat-
              tern.  Takes last search direction into account.

       If 'hlsearch' option is set, hitting n/N to perform search
       and go to the first matching item resets current selection
       in normal mode.  It is not the case if search was  already
       performed on files in the directory, thus selection is not
       reset after clearing selection with escape key and hitting
       n/N key again.

       Note: vifm uses extended regular expressions for / and ?.


       [count]f[character]
              search forward for file with [character]  as  first
              character  in name.  Search wraps around the end of
              the list.

       [count]F[character]
              search backward for file with [character] as  first
              character  in name.  Search wraps around the end of
              the list.

       [count];
              find the next match of f or F.

       [count],
              find the previous match of f or F.

       Note: f, F, ; and , wrap around  list  beginning  and  end
       when they are used alone and they don't wrap when they are
       used as selectors.

File Filters
       There are three basic file filters:

         - dot files filter (does not affect "." and ".." special
           directories,  whose  appearance  is  controlled by the
           'dotdirs' option), see 'dotfiles' option;

         - permanent filter;

         - local filter (see description of the "="  normal  mode
           command).

       Permanent  filter  essentially  allows defining a group of
       files names which are not desirable to be seen by default,
       like  temporary  or  backup  files, which might be created
       alongside normal ones.  Just like you don't  usually  need
       to  see  hidden  dot  files  (files  starting with a dot).
       Local filter on the other hand is for temporary  immediate
       filtering of file list at hand, to get rid of uninterested
       files in the view or to make it possible to use % range in
       a :command.

       For  the  purposes of more deterministic editing permanent
       filter is split into two parts:

         - one edited explicitly via :filter command;

         - another one which is edited implicitly via  zf  short-
           cut.

       Files  are tested against both parts and a match counts if
       at least one of the parts matched.


       Each file list has its own copy of each filter.

       Filtered files are not checked in / search or :commands.

       Files and directories are filtered  separately.   This  is
       done by appending a slash to a directory name before test-
       ing whether it matches the filter. Examples:


         " filter directories which names end with '.files'
         :filter /^.*\.files\/$/

         " filter files which names end with '.d'
         :filter {*.d}

         " filter files and directories which names end with '.o'
         :filter /^.*\.o\/?$/

       Note: vifm uses extended regular expressions.

       The basic vim folding key bindings are used  for  managing
       filters.


       za     toggle visibility of dot files.

       zo     show dot files.

       zm     hide dot files.

       zf     add selected files to permanent filter.

       zO     reset permanent filter.

       zR     save and reset all filters.

       zr     clear local filter.

       zM     restore all filters (undoes last zR).

       zd     exclude  selection  or  current  file from a custom
              view.  Does nothing for  regular  view.   For  tree
              view  excluding  directory  excludes that sub-tree.
              For compare views zd hides group of adjacent  iden-
              tical files, count can be specified as 1 to exclude
              just single file or selected items instead.   Files
              excluded  this  way are not counted as filtered out
              and can't be returned unless view is reloaded.

       =regular expression pattern
              filter out files that don't match  regular  expres-
              sion.   Whether  view is updated as regular expres-
              sion is changed depends on the value of  the  'inc-
              search'  option.   This kind of filter is automati-
              cally reset when directory is changed.

Other Normal Mode Keys
       [count]:
              enter command line mode.  [count] generates range.

       q:     open external editor  to  prompt  for  command-line
              command.   See  "Command  line editing" section for
              details.

       q/     open external editor to prompt for  search  pattern
              to  be searched in forward direction.  See "Command
              line editing" section for details.

       q?     open external editor to prompt for  search  pattern
              to be searched in backward direction.  See "Command
              line editing" section for details.

       q=     open external editor to prompt for filter  pattern.
              See  "Command  line  editing"  section for details.
              Unlike other q{x} commands this one doesn't work in
              Visual mode.

       [count]!! and [count]!<selector>
              enter  command  line  mode  with entered ! command.
              [count] modifies range.

       Ctrl-O go backwards through directory history  of  current
              view.   Nonexistent  directories  are automatically
              skipped.

       Ctrl-I if 'cpoptions' contains "t" flag, <tab>  and  <c-i>
              switch  active  pane just like <space> does, other-
              wise it goes forward through directory  history  of
              current view.  Nonexistent directories are automat-
              ically skipped.

       Ctrl-G show a dialog with detailed information about  cur-
              rent  file.   See  "Menus  and dialogs" section for
              controls.

       Shift-Tab
              enter view mode (works only after  activating  view
              pane with :view command).

       ga     calculate  directory  size.   Uses cached directory
              sizes when possible for better performance.   As  a
              special case calculating size of ".." entry results
              in calculation of size of current directory.

       gA     like ga, but force update.  Ignores old  values  of
              directory sizes.

       If  file  under  cursor is selected, each selected item is
       processed, otherwise only current file is updated.

       gf     find link destination (like  l  with  'followlinks'
              off, but also finds directories).  On Windows addi-
              tionally follows .lnk-files.

       gF     Same as gf, but resolves final path of the chain of
              symbolic links.

       gr     only for MS-Windows
              same as l key, but tries to run program with admin-
              istrative privileges.

       av     go to visual mode  into  selection  amending  state
              preserving current selection.

       gv     go to visual mode restoring last selection.

       [reg]gs
              when  no  register  is  specified,  restore  last t
              selection (similar to what gv does for visual  mode
              selection).  If register is present, then all files
              listed in that register and which  are  visible  in
              current view are selected.

       gu<selector>
              make names of selected files lowercase.

       [count]guu and [count]gugu
              make  names of [count] files starting from the cur-
              rent one lowercase.  Without [count]  only  current
              file is affected.

       gU<selector>
              make names of selected files uppercase.

       [count]gUU and [count]gUgU
              make  names of [count] files starting from the cur-
              rent one uppercase.  Without [count]  only  current
              file is affected.

       e      explore file in the current pane.

       i      handle   file  (even  if  it's  an  executable  and
              'runexec' option is set).

       cw     change word is used to rename a file or files.

       cW     change WORD is used to change  only  name  of  file
              (without extension).

       cl     change link target.

       co     only for *nix
              change file owner.

       cg     only for *nix
              change file group.

       [count]cp
              change  file  attributes  (permission  on  *nix and
              properties on Windows).  If [count]  is  specified,
              it's  treated  as numerical argument for non-recur-
              sive `chmod` command (of the form [0-7]{3,4}).  See
              "Menus and dialogs" section for controls.

       [count]C
              clone file [count] times.

       [count]dd or d[count]selector
              move  selected file or files to trash directory (if
              'trash' option  is  set,  otherwise  delete).   See
              "Trash directory" section below.

       [count]DD or D[count]selector
              like  dd and d<selector>, but omitting trash direc-
              tory (even when 'trash' option is set).

       Y, [count]yy or y[count]selector
              yank selected files.

       p      copy yanked files to the current directory or  move
              the  files  to  the  current directory if they were
              deleted with dd or :d[elete] or if the  files  were
              yanked from trash directory.  See "Trash directory"
              section below.

       P      move the last yanked files.  The advantage of using
              P  instead of d followed by p is that P moves files
              only once.  This isn't  important  in  case  you're
              moving  files  in  the  same file system where your
              home directory is, but using P  to  move  files  on
              some  other  file  system (or file systems, in case
              you want to move files from fs1  to  fs2  and  your
              home is on fs3) can save your time.

       al     put symbolic links with absolute paths.

       rl     put symbolic links with relative paths.

       t      select or unselect (tag) the current file.

       u      undo last change.

       Ctrl-R redo last change.

       dp     in  compare view of "ofboth grouppaths" kind, makes
              corresponding entry of the other pane equal to  the
              current one.  The semantics is as follows:
               - nothing done for identical entries
               -  if  file  is  missing in current view, its pair
              gets removed
               - if file is missing or  differs  in  other  view,
              it's replaced
               -  file  pairs  are  defined  by matching relative
              paths
              File removal obeys 'trash' option.  When the option
              is  enabled,  the  operation  can  be undone/redone
              (although results won't be visible automatically).
              Unlike in Vim, this operation  is  performed  on  a
              single line rather than a set of adjacent changes.

       do     same  as  dp,  but  applies changes in the opposite
              direction.

       v or V enter visual mode, clears current selection.

       [count]Ctrl-A
              increment first number in file name by  [count]  (1
              by default).

       [count]Ctrl-X
              decrement  first  number in file name by [count] (1
              by default).

       ZQ     same as :quit!.

       ZZ     same as :quit.

       .      repeat last command-line command (not  normal  mode
              command)  of  this  run  (does  nothing right after
              startup or :restart command).  The command  doesn't
              depend on command-line history and can be used with
              completely disabled history.

       (      go to previous group.  Groups are defined  by  pri-
              mary  sorting  key.   For name and iname members of
              each group have same first letter,  for  all  other
              sorting keys vifm uses size, uid, ...

       )      go to next group.  See ( key description above.

       {      speeds  up  navigation to closest previous entry of
              the opposite type by moving to the first file back-
              wards  when  cursor  is  on  a directory and to the
              first directory backwards when cursor is on a file.
              This  is  essentially  a  special case of ( that is
              locked on "dirs".

       }      same as {, but in forward direction.

       [c     go to previous mismatched entry in  directory  com-
              parison view or do nothing.

       ]c     go to next mismatched entry in directory comparison
              view or do nothing.

       [d     go to previous directory entry or do nothing.

       ]d     go to next directory entry or do nothing.

       [r     same as :siblprev.

       ]r     same as :siblnext.

       [R     same as :siblprev!.

       ]R     same as :siblnext!.

       [s     go to previous selected entry or do nothing.

       ]s     go to next selected entry or do nothing.

       [z     go to first sibling of current entry.

       ]z     go to last sibling of current entry.

       zj     go to next directory sibling of current entry or do
              nothing.

       zk     go  to  previous directory sibling of current entry
              or do nothing.

Using Count
       You can use count with commands like yy.

       [count]yy
              yank count files starting from current cursor posi-
              tion downward.

       Or you can use count with motions passed to y, d or D.

       d[count]j
              delete (count + 1) files starting from current cur-
              sor position upward.

Registers
       vifm supports multiple  registers  for  temporary  storing
       list of yanked or deleted files.

       Registers  should be specified by hitting double quote key
       followed by a register name.   Count  is  specified  after
       register  name.  By default commands use unnamed register,
       which has double quote as its name.

       Though all commands accept  registers,  most  of  commands
       ignores  them  (for  example H or Ctrl-U).  Other commands
       can fill register or append new files to it.

       Presently vifm supports ", _, a-z and  A-Z  characters  as
       register names.

       As  mentioned  above " is unnamed register and has special
       meaning of the default register.  Every time when you  use
       named  registers (a-z and A-Z) unnamed register is updated
       to contain same list of files as the last used register.

       _ is black hole register.  It can be used for writing, but
       its list is always empty.

       Registers with names from a to z and from A to Z are named
       ones.  Lowercase registers are cleared before  adding  new
       files, while uppercase aren't and should be used to append
       new files to the existing file list of appropriate  lower-
       case register (A for a, B for b, ...).

       Registers can be changed on :empty command if they contain
       files under trash directory (see "Trash directory" section
       below).

       Registers do not contain one file more than once.

       Example:

         "a2yy

       puts  names of two files to register a (and to the unnamed
       register),

         "Ad

       removes one file and append its name to register a (and to
       the unnamed register),

         p or "ap or "Ap

       inserts  previously  yanked and deleted files into current
       directory.

Selectors
       y, d, D, !, gu and gU commands accept selectors.  You  can
       combine them with any of selectors below to quickly remove
       or yank several files.

       Most of selectors are like vi motions: j, k, gg, G, H,  L,
       M,  %,  f, F, ;, comma, ', ^, 0 and $.  But there are some
       additional ones.

       a      all files in current view.

       s      selected files.

       S      all files except selected.

       Examples:

         - dj - delete file under cursor and one below;

         - d2j - delete file under cursor and two below;

         - y6gg - yank all files from cursor position to 6th file
           in the list.

       When  you  pass  a count to whole command and its selector
       they are multiplied. So:

         - 2d2j - delete file under cursor and four below;

         - 2dj - delete file under cursor and two below;

         - 2y6gg - yank all files from cursor  position  to  12th
           file in the list.

Visual Mode
       Visual mode has two generic operating submodes:

         - plain selection as it is in Vim;

         - selection editing submode.

       Both  modes  select files in range from cursor position at
       which visual mode was entered to current  cursor  position
       (let's  call  it "selection region").  Each of two borders
       can be adjusted by swapping them via "o" or "O"  keys  and
       updating  cursor position with regular cursor motion keys.
       Obviously, once initial cursor position  is  altered  this
       way, real start position becomes unavailable.

       Plain  Vim-like visual mode starts with cleared selection,
       which is not restored on  rejecting  selection  ("Escape",
       "Ctrl-C",  "v",  "V").   Contrary to it, selection editing
       doesn't clear previously selected files and restores  them
       after reject.  Accepting selection by performing an opera-
       tion on selected items (e.g. yanking them via  "y")  moves
       cursor  to the top of current selection region (not to the
       top most selected file of the view).

       In turn, selection editing supports three types of editing
       (look at statusbar to know which one is currently active):

         - append  -  amend  selection  by  selecting elements in
           selection region;

         - remove - amend selection by  deselecting  elements  in
           selection region;

         - invert  -  amend  selection  by inverting selection of
           elements in selection region.

       No matter how you activate selection editing it starts  in
       "append".   One can switch type of operation (in the order
       given above) via "Ctrl-G" key.

       Almost all normal mode  keys  work  in  visual  mode,  but
       instead  of  accepting  selectors they operate on selected
       items.

       Enter  save selection and go back to normal mode not  mov-
              ing cursor.

       av     leave  visual  mode  if  in amending mode (restores
              previous selection), otherwise switch  to  amending
              selection mode.

       gv     restore previous visual selection.

       v, V, Ctrl-C or Escape
              leave  visual  mode if not in amending mode, other-
              wise switch to normal visual selection.

       Ctrl-G switch type of  amending  by  round  robin  scheme:
              append -> remove -> invert.

       :      enter  command  line mode.  Selection is cleared on
              leaving the mode.

       o      switch active selection bound.

       O      switch active selection bound.

       gu, u  make names of selected files lowercase.

       gU, U  make names of selected files uppercase.

View Mode
       This mode tries to imitate  the  less  program.   List  of
       builtin  shortcuts  can  be found below.  Shortcuts can be
       customized using :qmap, :qnoremap and :qunmap command-line
       commands.

       Shift-Tab, Tab, q, Q, ZZ
              return to normal mode.

       [count]e,    [count]Ctrl-E,    [count]j,    [count]Ctrl-N,
       [count]Enter
              scroll forward one line (or [count] lines).

       [count]y,    [count]Ctrl-Y,    [count]k,    [count]Ctrl-K,
       [count]Ctrl-P
              scroll backward one line (or [count] lines).

       [count]f, [count]Ctrl-F, [count]Ctrl-V, [count]Space
              scroll forward one window (or [count] lines).

       [count]b, [count]Ctrl-B, [count]Alt-V
              scroll backward one window (or [count] lines).

       [count]z
              scroll  forward  one  window  (and  set  window  to
              [count]).

       [count]w
              scroll backward  one  window  (and  set  window  to
              [count]).

       [count]Alt-Space
              scroll  forward  one window, but don't stop at end-
              of-file.

       [count]d, [count]Ctrl-D
              scroll forward one half-window (and set half-window
              to [count]).

       [count]u, [count]Ctrl-U
              scroll  backward one half-window (and set half-win-
              dow to [count]).

       r, Ctrl-R, Ctrl-L
              repaint screen.

       R      reload view preserving scroll position.

       F      toggle automatic forwarding.  Roughly equivalent to
              periodic  file  reload and scrolling to the bottom.
              The behaviour is similar to `tail -F` or F  key  in
              less.

       [count]/pattern
              search forward for ([count]-th) matching line.

       [count]?pattern
              search backward for ([count]-th) matching line.

       [count]n
              repeat previous search (for [count]-th occurrence).

       [count]N
              repeat  previous  search  in reverse direction (for
              [count]-th occurrence).

       [count]g, [count]<, [count]Alt-<
              scroll to the first  line  of  the  file  (or  line
              [count]).

       [count]G, [count]>, [count]Alt->
              scroll  to  the  last  line  of  the  file (or line
              [count]).

       [count]p, [count]%
              scroll to the beginning of the file (or  N  percent
              into file).

       v      invoke  an  editor  to  edit the current file being
              viewed.  The command for editing is taken from  the
              'vicmd'/'vixcmd'  option  value  and  extended with
              middle line number prepended by  a  plus  sign  and
              name of the current file.

       All  "Ctrl-W  x" keys work the same was as in Normal mode.
       Active mode is automatically changed on  navigating  among
       windows.  When less-like mode activated on file preview is
       left using one by "Ctrl-W x" keys,  its  state  is  stored
       until another file is displayed using preview (it's possi-
       ble to leave the mode, hide  preview  pane,  do  something
       else,  then  get  back  to  the file and show preview pane
       again with previously stored state in it).

Command line Mode
       These keys are available in all submodes  of  the  command
       line mode: command, search, prompt and filtering.

       Down,  Up,  Left, Right, Home, End and Delete are extended
       keys and they are not available if vifm is  compiled  with
       --disable-extended-keys option.

       Esc, Ctrl-C
              leave  command line mode, cancels input.  Cancelled
              input is saved into appropriate history and can  be
              recalled later.

       Ctrl-M, Enter
              execute command and leave command line mode.

       Ctrl-I, Tab
              complete command or its argument.

       Shift-Tab
              complete in reverse order.

       Ctrl-_ stop completion and return original input.

       Ctrl-B, Left
              move cursor to the left.

       Ctrl-F, Right
              move cursor to the right.

       Ctrl-A, Home
              go to line beginning.

       Ctrl-E, End
              go to line end.

       Alt-B  go to the beginning of previous word.

       Alt-F  go to the end of next word.

       Ctrl-U remove  characters  from  cursor  position till the
              beginning of line.

       Ctrl-K remove characters from cursor position till the end
              of line.

       Ctrl-H, Backspace
              remove character before the cursor.

       Ctrl-D, Delete
              remove character under the cursor.

       Ctrl-W remove  characters  from  cursor  position till the
              beginning of previous word.

       Alt-D  remove characters from  cursor  position  till  the
              beginning of next word.

       Ctrl-T swap  the  order  of current and previous character
              and move cursor forward or, if cursor past the  end
              of  line,  swap the order of two last characters in
              the line.

       Alt-.  insert last part of  previous  command  to  current
              cursor  position.   Each next call will insert last
              part of older command.

       Ctrl-G edit command-line content in external editor.   See
              "Command line editing" section for details.

       Ctrl-N recall more recent command-line from history.

       Ctrl-P recall older command-line from history.

       Up     recall  more recent command-line from history, that
              begins as the current command-line.

       Down   recall older command-line from history, that begins
              as the current command-line.

       Ctrl-] trigger abbreviation expansion.

Pasting special values
       The  shortcuts  listed  below insert specified values into
       current cursor position.  Last key of every shortcut  ref-
       erences value that it inserts:
         - c - [c]urrent file
         - d - [d]irectory path
         - e - [e]xtension of a file name
         - r - [r]oot part of a file name
         - t - [t]ail part of directory path

         - a - [a]utomatic filter
         - m - [m]anual filter
         - = - local filter, which is bound to "=" in normal mode

       Values  related  to filelist in current pane are available
       through Ctrl-X prefix, while values from  the  other  pane
       have doubled Ctrl-X key as their prefix (doubled Ctrl-X is
       presumably easier to type  than  uppercase  letters;  it's
       still  easy  to  remap  the keys to correspond to names of
       similar macros).

       Ctrl-X c
              name of the current file of the active pane.

       Ctrl-X d
              path to the current directory of the active pane.

       Ctrl-X e
              extension of the current file of the active pane.

       Ctrl-X r
              name root of current file of the active pane.

       Ctrl-X t
              the last component of path to the current directory
              of the active pane.

       Ctrl-X Ctrl-X c
              name of the current file of the inactive pane.

       Ctrl-X Ctrl-X d
              path to the current directory of the inactive pane.

       Ctrl-X Ctrl-X e
              extension of the current file of the inactive pane.

       Ctrl-X Ctrl-X r
              name root of current file of the inactive pane.

       Ctrl-X Ctrl-X t
              the last component of path to the current directory
              of the inactive pane.


       Ctrl-X a
              value of implicit permanent filter (old name "auto-
              matic") of the active pane.

       Ctrl-X m
              value  of explicit permanent filter (old name "man-
              ual") of the active pane.

       Ctrl-X =
              value of local filter of the active pane.


       Ctrl-X /
              last pattern from search history.

Command line editing
       vifm provides a facility to edit several  kinds  of  data,
       that  is  usually edited in command-line mode, in external
       editor (using command specified  by  'vicmd'  or  'vixcmd'
       option).   This  has at least two advantages over built-in
       command-line mode:
         - one can use full power of Vim to edit text;
         - finding and reusing history entries becomes possible.

       The facility is supported by four input  submodes  of  the
       command-line:
         - command;
         - forward search;
         - backward search;
         -  file rename (see description of cw and cW normal mode
       keys).

       Editing command-line using external editor is activated by
       the  Ctrl-G shortcut.  It's also possible to do almost the
       same from Normal and Visual modes using q:, q/ and q? com-
       mands.

       Temporary file created for the purpose of editing the line
       has the following structure:

         1. First line, which is either empty  or  contains  text
            already entered in command-line.

         2. 2nd  and  all other lines with history items starting
            with the most recent one.  Altering this lines in any
            way won't change history items stored by vifm.

       After  editing  application  is finished the first line of
       the file is taken as the result  of  operation,  when  the
       application  returns  zero  exit code.  If the application
       returns an error (see :cquit  command  in  Vim),  all  the
       edits  made to the file are ignored, but the initial value
       of the first line is saved in appropriate history.

More Mode
       This is the mode that appears when status bar  content  is
       so  big  that it doesn't fit on the screen.  One can iden-
       tify the mode by "-- More --" message at the bottom.

       The following keys are handled in this mode:


       Enter, Ctrl-J, j or Down
              scroll one line down.

       Backspace, k or Up
              scroll one line up.


       d      scroll one page (half of a screen) down.

       u      scroll one page (half of a screen) up.


       Space, f or PageDown
              scroll down a screen.

       b or PageUp
              scroll up a screen.


       G      scroll to the bottom.

       g      scroll to the top.


       q, Escape or Ctrl-C
              quit the mode.

       :      switch to command-line mode.

Commands
       Commands are executed with :command_name<Enter>

       Commented out lines should start  with  the  double  quote
       symbol ("), which may be preceded by whitespace characters
       intermixed with colons.  Inline comments can be  added  at
       the  end  of the line after double quote symbol, only last
       line of a multi-line command  can  contain  such  comment.
       Not  all  commands support inline comments as their syntax
       conflicts with names of registers and fields where  double
       quotes are allowed.

       Most  of  the  commands  have  two forms: complete and the
       short one.  Example:

         :noh[lsearch]

       This means the complete command  is  nohlsearch,  and  the
       short one is noh.

       Most  of  command-line commands completely reset selection
       in the current view.  However, there  are  several  excep-
       tions:

         - `:invert s` most likely leaves some files selected;

         - :normal  command  (when  it doesn't leave command-line
           mode);

         - :if and :else commands don't affect selection on  suc-
           cessful execution.

       '|' can be used to separate commands, so you can give mul-
       tiple commands in one line.  If you want to use '|' in  an
       argument, precede it with '\'.

       These  commands  see  '|'  as part of their arguments even
       when it's escaped:

           :[range]!
           :autocmd
           :cabbrev
           :cmap
           :cnoreabbrev
           :cnoremap
           :command
           :dmap
           :dnoremap
           :filetype
           :fileviewer
           :filextype
           :map
           :mmap
           :mnoremap
           :nmap
           :nnoremap
           :noremap
           :normal
           :qmap
           :qnoremap
           :vmap
           :vnoremap
           :wincmd
           :windo
           :winrun

       To be able to use another command after one of these, wrap
       it with the :execute command.  An example:

         if  filetype('.')  ==  'reg'  |  execute '!!echo regular
       file' | endif

       :[count]

       :number
              move to the file number.
              :12 would move to the 12th file in the list.
              :0 move to the top of the list.
              :$ move to the bottom of the list.

       :[count]command
              The    only     builtin     :[count]command     are
              :[count]d[elete] and :[count]y[ank].

       :d3    would  delete  three  files starting at the current
              file position moving down.

       :3d    would delete one file at  the  third  line  in  the
              list.

       :command [args]

       :[range]!program
              execute command via shell.  Accepts macros.

       :[range]!command &

       same  as  above,  but the command is run in the background
       using vifm's means.

       Programs that write to stderr create error dialogs showing
       errors of the command.

       Note  the  space  before ampersand symbol, if you omit it,
       command will be run in the background using job control of
       your shell.

       Accepts macros.

                                                :!!

       :[range]!!command
              same as :!, but pauses before returning.

       :!!    repeat the last command.

                                                :alink

       :[range]alink[!?]
              create  absolute  symbolic links to files in direc-
              tory of inactive view.  With "?"  prompts for  des-
              tination file names in an editor.  "!" forces over-
              write.

       :[range]alink[!] path
              create absolute symbolic links to files  in  direc-
              tory specified by the path (absolute or relative to
              directory of inactive view).

       :[range]alink[!] name1 name2...
              create absolute symbolic links of files  in  direc-
              tory  of  other view giving each next link a corre-
              sponding name from the argument list.

                                                :apropos

       :apropos keyword...
              create a menu of items returned by the apropos com-
              mand.   Selecting  an item in the menu opens corre-
              sponding man page.  By default the  command  relies
              on  the  external  "apropos"  utility, which can be
              customized by altering value  of  the  'aproposprg'
              option.   See  "Menus and dialogs" section for con-
              trols.

                                                :autocmd

       :au[tocmd] {event} {pat} {cmd}
              register autocommand for the {event}, which can be:
                - DirEnter - triggered after directory is changed
              Event name is case insensitive.

              {pat} is a comma-separated list of  modified  globs
              patterns,  which  can  contain tilde or environment
              variables.  All paths use slash ('/') as  directory
              separator.  The pattern can start with a '!', which
              negates it.  Patterns that do not  contain  slashes
              are  matched against the last item of the path only
              (e.g. "dir" in "/path/dir").  Literal comma can  be
              entered by doubling it.  Two modifications to globs
              matching are as follows:
                - *  - never matches a slash (i.e.,  can  signify
              single directory level)
                -  **  -  matches  any character (i.e., can match
              path of arbitrary depth)

              {cmd} is a :command or several  of  them  separated
              with '|'.

              Examples of patterns:
                - conf.d      - matches conf.d directory anywhere
                -  *.d          - matches directories ending with
              ".d" anywhere
                - **.git      - matches  something.git,  but  not
              .git anywhere
                -  **/.git/**   - matches /path/.git/objects, but
              not /path/.git
                - **/.git/**/ - matches /path/.git/ only (because
              of trailing slash)
                -  /etc/*       - matches /etc/conf.d/, /etc/X11,
              but not /etc/X11/fs
                -    /etc/**/*.d    -    matches     /etc/conf.d,
              /etc/X11/conf.d, etc.
                - /etc/**/*   - matches /etc/ itself and any file
              below it
                - /etc/**/**  - matches /etc/ itself and any file
              below it

       :au[tocmd] [{event}] [{pat}]
              list those autocommands that match given event-pat-
              tern combination.
              {event} and {pat} can be omitted to list all  auto-
              commands.   To  list  any autocommands for specific
              pattern one can  use  *  placeholder  in  place  of
              {event}.

       :au[tocmd]! [{event}] [{pat}]
              remove  autocommands that match given event-pattern
              combination.  Syntax is the  same  as  for  listing
              above.

       :apropos
              repeat last :apropos command.

                                                :bmark

       :bmark tag1 [tag2 [tag3...]]
              bookmark current directory with specified tags.

       :bmark! path tag1 [tag2 [tag3...]]
              same  as  :bmark,  but  allows bookmarking specific
              path instead of current directory.  This is for use
              in vifmrc and for bookmarking files.

              Path  can contain macros that expand to single path
              (%c, %C, %d, %D) or those that can expand to multi-
              ple paths, but contain only one (%f, %F, %rx).  The
              latter is done for convenience on using the command
              interactively.   Complex macros that include spaces
              (e.g. "%c:gs/ /_") should be escaped.

                                                :bmarks

       :bmarks
              display all bookmarks in a menu.

       :bmarks [tag1 [tag2...]]
              display menu of bookmarks that include all  of  the
              specified  tags.   See  "Menus and dialogs" section
              for controls.

                                                :bmgo

       :bmgo [tag1 [tag2...]]
              when there are more than  one  match  acts  exactly
              like  :bmarks,  otherwise navigates to single match
              immediately (and fails if there is no match).

                                                :cabbrev

       :ca[bbrev]
              display menu of  command-line  mode  abbreviations.
              See "Menus and dialogs" section for controls.

       :ca[bbrev] lhs-prefix
              display command-line mode abbreviations which left-
              hand side starts with specified prefix.

       :ca[bbrev] lhs rhs
              register new or  overwrites  existing  abbreviation
              for  command-line mode.  rhs can contain spaces and
              any special sequences accepted in rhs  of  mappings
              (see  "Mappings" section below).  Abbreviations are
              expanded non-recursively.

                                                :cnoreabbrev

       :cnorea[bbrev]
              display menu of  command-line  mode  abbreviations.
              See "Menus and dialogs" section for controls.

       :cnorea[bbrev] lhs-prefix
              display command-line mode abbreviations which left-
              hand side starts with specified prefix.

       :cnorea[bbrev] lhs rhs
              same as :cabbrev, but mappings in rhs  are  ignored
              during expansion.

                                                :cd

       :cd or :cd ~ or :cd $HOME
              change to home directory.

       :cd -  go to the last visited directory.

       :cd ~/dir
              change directory to ~/dir.

       :cd /curr/dir /other/dir
              change  directory  of the current pane to /curr/dir
              and directory of  the  other  pane  to  /other/dir.
              Relative  paths  are  assumed  to  be  relative  to
              directory of current view.  Command won't  fail  if
              one  of  directories  is invalid.  All forms of the
              command accept macros.

       :cd! /dir
              same as :cd /dir /dir.

                                                :cds

       :cds[!] pattern string
              navigate to path  obtained  by  substituting  first
              match  in  current  path.   Arguments  can  include
              slashes, but starting first argument with a separa-
              tor will activate below form of the command.  Spec-
              ifying "!"  changes directory of both panes.

       Available flags:

         - i - ignore  case  (the  'ignorecase'  and  'smartcase'
           options are not used)

         - I  -  don't  ignore case (the 'ignorecase' and 'smart-
           case' options are not used)

       :cds[!]/pattern/string/[flags]
              same as above, but  with  :substitute-like  syntax.
              Other punctuation characters can be used as separa-
              tors.

                                                :change

       :c[hange]
              show a dialog to alter properties of files.

                                                :chmod

       :[range]chmod
              display file attributes  (permission  on  *nix  and
              properties on Windows) change dialog.

       :[range]chmod[!] arg...
              only for *nix
              change  permissions  for  files.  See `man 1 chmod`
              for arg format.  "!" means set  permissions  recur-
              sively.

                                                :chown

       :[range]chown
              only for *nix
              same as co key in normal mode.

       :[range]chown [user][:][group]
              only for *nix
              change  owner  and/or  group of files.  Operates on
              directories recursively.

                                                :clone

       :[range]clone[!?]
              clones files in current directory.  With  "?"  vifm
              will  open vi to edit file names.  "!" forces over-
              write.  Macros are expanded.

       :[range]clone[!] path
              clones files to directory specified with  the  path
              (absolute  or  relative to current directory).  "!"
              forces overwrite.  Macros are expanded.

       :[range]clone[!] name1 name2...
              clones files in current directory giving each  next
              clone  a corresponding name from the argument list.
              "!" forces overwrite.  Macros are expanded.

                                                :colorscheme

       :colo[rscheme]?
              print current color scheme name on the status bar.

       :colo[rscheme]
              display a menu  with  a  list  of  available  color
              schemes.  You can choose primary color scheme here.
              It is used for view if no directory  specific  col-
              orscheme  fits current path.  It's also used to set
              border color (except view  titles)  and  colors  in
              menus and dialogs.  See "Menus and dialogs" section
              for controls.

       :colo[rscheme] color_scheme_name
              change primary color scheme  to  color_scheme_name.
              In  case  of  errors (e.g. some colors are not sup-
              ported by terminal) either nothing  is  changed  or
              color  scheme  is reset to builtin colors to ensure
              that TUI is left in a usable state.

       :colo[rscheme] color_scheme_name directory
              associate directory with  the  color  scheme.   The
              directory  argument can be either absolute or rela-
              tive path when  :colorscheme  command  is  executed
              from command line, but mandatory should be an abso-
              lute path when the command is executed  in  scripts
              loaded   at   startup  (until  vifm  is  completely
              loaded).

       :colo[rscheme] color_scheme_name color_scheme_name...
              loads the first color scheme  in  the  order  given
              that  exists  and is supported by the terminal.  If
              none matches, current one remains  unchanged.   For
              example:

                " use a separate color scheme for panes which are
              inside FUSE mounts
                execute 'colorscheme in-fuse' &fusehome

                                                :comclear

       :comc[lear]
              remove all user defined commands.

                                                :command

       :com[mand]
              display a menu of user commands.   See  "Menus  and
              dialogs" section for controls.

       :com[mand] prefix
              display  user  defined commands that start with the
              prefix.

       :com[mand] name action[ &]
              set or redefine a user command.
              Use  :com[mand]!  to  overwrite  a  previously  set
              command  of  the same name.  Builtin commands can't
              be redefined.
              Unlike in vim, user commands do not have  to  start
              with  a capital letter.  However, command name can-
              not contain numbers or special symbols  except  for
              single trailing '?' or '!'.
              User  commands  are  run in a shell by default (see
              below for syntax of other options).  To run a  com-
              mand  in the background you must mark it as a back-
              ground command by adding " &" after  the  command's
              action (e.g., `:com rm rm %f &`).
              User  commands of all kinds have macros expanded in
              them.  See "Command macros" section for more infor-
              mation.

       :com[mand] name /pattern
              set search pattern.

       :com[mand] name =pattern
              set local filter value.

       :com[mand] name filter{:filter args}
              set  file name filter (see :filter command descrip-
              tion).  For example:

                " display only audio files
                :command              onlyaudio              fil-
              ter/.+.\(mp3|wav|mp3|flac|ogg|m4a|wma|ape\)$/i
                " display everything except audio files
                :command               noaudio               fil-
              ter!/.+.\(mp3|wav|mp3|flac|ogg|m4a|wma|ape\)$/i

       :com[mand] name :commands
              set kind of an alias for internal commands (like in
              a  shell).   Passes  range  given  to  alias  to an
              aliased command, so running :%cp after
                :command cp :copy %a
              equals
                :%copy

                                                :compare

       :compare [byname | bysize | bycontents | listall |  listu-
       nique  | listdups | ofboth | ofone | groupids | grouppaths
       | skipempty]...
              compare files in one or  two  views  according  the
              arguments.   The  default  is  "bycontents  listall
              ofboth grouppaths".  See  "Compare  views"  section
              below  for details.  Tree structure is incompatible
              with  alternative  representations,  so  values  of
              'lsview' and 'millerview' options are ignored.

                                                :copen

       :cope[n]
              opens menu with contents of the last displayed menu
              with navigation to files by default, if any.

                                                :copy

       :[range]co[py][!?][ &]
              copy files to directory of other  view.   With  "?"
              prompts  for  destination  file names in an editor.
              "!" forces overwrite.

       :[range]co[py][!] path[ &]
              copy files to directory  specified  with  the  path
              (absolute  or relative to directory of other view).
              "!" forces overwrite.

       :[range]co[py][!] name1 name2...[ &]
              copy files to directory of other view  giving  each
              next  file  a  corresponding name from the argument
              list.  "!" forces overwrite.

                                                :cquit

       :cq[uit][!]
              same as :quit, but also aborts  directory  choosing
              via  --choose-dir (empties output file) and returns
              non-zero exit code.

                                                :cunabbrev

       :cuna[bbrev] lhs
              unregister command-line mode  abbreviation  by  its
              lhs.

       :cuna[bbrev] rhs
              unregister  command-line  mode  abbreviation by its
              rhs, so that abbreviation  could  be  removed  even
              after expansion.

                                                :delbmarks

       :delbmarks
              remove bookmarks from current directory.

       :delbmarks tag1 [tag2 [tag3...]]
              remove  set  of  bookmarks  that include all of the
              specified tags.

       :delbmarks!
              remove all bookmarks.

       :delbmarks! path1 [path2 [path3...]]
              remove bookmarks of listed paths.

                                                :delcommand

       :delc[ommand] user_command
              remove user defined command named user_command.

                                                :delete

       :[range]d[elete][!][ &]
              delete selected file or files.  "!" means  complete
              removal (omitting trash).

       :[range]d[elete][!] [reg] [count][ &]
              delete  selected or [count] files to the reg regis-
              ter.  "!" means complete removal (omitting trash).

                                                :delmarks

       :delm[arks]!
              delete all marks.

       :delm[arks] marks ...
              delete specified marks, each argument is treated as
              a set of marks.

                                                :delsession

       :delsession
              delete  specified  session  if it was stored previ-
              ously.  Deleting current session doesn't detach it.

                                                :display

       :di[splay]
              display menu with registers content.

       :di[splay] list ...
              display the contents of the numbered and named reg-
              isters  that are mentioned in list (for example "az
              to display "", "a and "z content).

                                                :dirs

       :dirs  display directory stack in a menu.  See "Menus  and
              dialogs" section for controls.

                                                :echo

       :ec[ho] [<expr>...]
              evaluate  each argument as an expression and output
              them separated with a space.  See help on :let com-
              mand for a definition of <expr>.

                                                :edit

       :[range]e[dit] [file...]
              open  selected or passed file(s) in editor.  Macros
              and environment variables are expanded.

                                                :else

       :el[se]
              execute commands until next matching :endif if  all
              other  conditions  didn't  match.  See also help on
              :if and :endif commands.

                                                :elseif

       :elsei[f] {expr1}
              execute commands until next matching :elseif, :else
              or :endif if conditions of previous :if and :elseif
              branches were evaluated to zero.  See also help  on
              :if and :endif commands.

                                                :empty

       :empty permanently  remove  files  from  all existing non-
              empty trash directories (see "Trash directory" sec-
              tion below).  Trash directories which are specified
              via %r and/or %u also get deleted completely.  Also
              remove  all  operations  from undolist that have no
              sense after :empty and  remove  all  records  about
              files  located  inside  directories from all regis-
              ters.  Removal is performed as background task with
              undetermined  amount of work and can be checked via
              :jobs menu.

                                                :endif

       :en[dif]
              end conditional block.  See also help  on  :if  and
              :else commands.

                                                :execute

       :exe[cute] [<expr>...]
              evaluate  each  argument  as an expression and join
              results separated by a space to get a single string
              which  is  then executed as a command-line command.
              See help  on  :let  command  for  a  definition  of
              <expr>.

                                                :exit

       :exi[t][!]
              same as :quit.

                                                :file

       :f[ile][ &]
              display  menu  of programs set for the file type of
              the current file.  " &" forces  running  associated
              program  in  background.   See  "Menus and dialogs"
              section for controls.

       :f[ile] arg[ &]
              run associated command that  begins  with  the  arg
              skipping opening menu.  " &" forces running associ-
              ated program in background.

                                                :filetype

       :filet[ype]        pattern-list         [{descr}]def_prog[
       &],[{descr}]prog2[ &],...
              associate given program list to each  of  the  pat-
              terns.   Associated  program  (command)  is used by
              handlers of l and Enter keys (and also in the :file
              menu).   If  you  need to insert comma into command
              just double it (",,").  Space followed by an amper-
              sand as two last characters of a command means run-
              ning of the command in  the  background.   Optional
              description  can  be  given to each command to ease
              understanding of what command will do in the  :file
              menu.   Vifm  will try the rest of the programs for
              an association when the default isn't found.   When
              program  entry  doesn't contain any of vifm macros,
              name of current file  is  appended  as  if  program
              entry  ended  with %c macro on *nix and %"c on Win-
              dows.  On Windows path  to  executables  containing
              spaces  can  (and  should  be for correct work with
              such paths) be double quoted.  See "Patterns"  sec-
              tion  below  for pattern definition and "Selection"
              section for how selection  is  handled.   See  also
              "Automatic FUSE mounts" section below.  Example for
              zip archives and several actions:

                filetype *.zip,*.jar,*.war,*.ear
                       \ {Mount with fuse-zip}
                       \ FUSE_MOUNT|fuse-zip %SOURCE_FILE %DESTI-
              NATION_DIR,
                       \ {View contents}
                       \ zip -sf %c | less,
                       \ {Extract here}
                       \ tar -xf %c,

              Note  that  on  OS X when `open` is used to call an
              app, vifm is unable to check whether  that  app  is
              actually  available.   So  if automatic skipping of
              programs that aren't  there  is  desirable,  `open`
              should be replaced with an actual command.

       :filet[ype] filename
              list  (in  menu mode) currently registered patterns
              that match specified file name.  Same  as  ":filex-
              type filename".

                                                :filextype

       :filex[type]   pattern-list  [{  description  }]  def_pro-
       gram,program2,...
              same  as  :filetype, but this command is ignored if
              not running in X.  In  X  :filextype  is  equal  to
              :filetype.   See  "Patterns" section below for pat-
              tern definition and  "Selection"  section  for  how
              selection  is  handled.   See  also "Automatic FUSE
              mounts" section below.

              For example, consider the following  settings  (the
              order  might  seem strange, but it's for the demon-
              stration purpose):

                filetype *.html,*.htm
                        \ {View in lynx}
                        \ lynx
                filextype *.html,*.htm
                        \ {Open with dwb}
                        \ dwb %f %i &,
                filetype *.html,*.htm
                        \ {View in links}
                        \ links
                filextype *.html,*.htm
                        \ {Open with firefox}
                        \ firefox %f &,
                        \ {Open with uzbl}
                        \ uzbl-browser %f %i &,

              If you're using vifm  inside  a  terminal  emulator
              that is running in graphical environment (when X is
              used on *nix; always on Windows), vifm attempts  to
              run application in this order:

              1. lynx
              2. dwb
              3. links
              4. firefox
              5. uzbl

              If  there  is  no graphical environment (checked by
              presence of non-empty $DISPLAY or  $WAYLAND_DISPLAY
              environment variable on *nix; never happens on Win-
              dows), the list will look like:

              1. lynx
              2. links

              Just as if all :filextype commands were not there.

              The purpose of such  differentiation  is  to  allow
              comfortable use of vifm with same settings in desk-
              top environment/through remote connection  (SSH)/in
              native console.

              Note that on OS X $DISPLAY isn't defined unless you
              define it, so :filextype should be used only if you
              set $DISPLAY in some way.

       :filext[ype] filename
              list  (in  menu mode) currently registered patterns
              that match specified file name.  Same as ":filetype
              filename".

                                                :fileviewer

       :filev[iewer] pattern-list command1,command2,...
              register  specified list of commands as viewers for
              each of the patterns.  Viewer is  a  command  which
              output  is  captured  and  displayed  in one of the
              panes of vifm after pressing "e" or  running  :view
              command.   When  the command doesn't contain any of
              vifm macros, name of current file is appended as if
              command  ended  with  %c macro.  Comma escaping and
              missing commands processing rules as for  :filetype
              apply  to  this  command.   See  "Patterns" section
              below for pattern definition.

              Example for zip archives:

                fileviewer *.zip,*.jar,*.war,*.ear  zip  -sf  %c,
              echo "No zip to preview:"

       :filev[iewer] filename
              list  (in  menu mode) currently registered patterns
              that match specified filename.

                                                :filter

       :filter[!] {pattern}
              filter files matching the pattern out of  directory
              listings.   '!'  controls state of filter inversion
              after updating filter value (see  also  'cpoptions'
              description).   Filter  is matched case sensitively
              on *nix and case  insensitively  on  Windows.   See
              "File Filters" and "Patterns" sections.

              Example:

                "   filter  all  files  ending  in  .o  from  the
              filelist.
                :filter /.o$/


       :filter[!] {empty-pattern}
              same as above, but use last search pattern as  pat-
              tern value.

              Example:

                :filter //I


       :filter
              reset  filter  (set it to an empty string) and show
              all files.

       :filter!
              same as :invert.

       :filter?
              show information on local, name and auto filters.

                                                :find

       :[range]fin[d] pattern
              display  results  of  find  command  in  the  menu.
              Searches  among  selected  files  if  any.  Accepts
              macros.  By  default  the  command  relies  on  the
              external "find" utility, which can be customized by
              altering value of the 'findprg' option.

       :[range]fin[d] -opt...
              same as :find above,  but  user  defines  all  find
              arguments.  Searches among selected files if any.

       :[range]fin[d] path -opt...
              same  as  :find  above,  but  user defines all find
              arguments.  Ignores selection and range.

       :[range]fin[d]
              repeat last :find command.

                                                :finish

       :fini[sh]
              stop sourcing a script. Can only be used in a  vifm
              script  file.  This is a quick way to skip the rest
              of the file.

                                                :goto

       :go[to]
              change directory if  necessary  and  put  specified
              path under the cursor.  The path should be existing
              non-root path.  Macros  and  environment  variables
              are expanded.

                                                :grep

       :[range]gr[ep][!] pattern
              will show results of grep command in the menu.  Add
              "!" to request inversion of search (look for  lines
              that   do   not  match  pattern).   Searches  among
              selected files if any and no range given.   Ignores
              binary  files  by  default.  By default the command
              relies on the external "grep" utility, which can be
              customized  by  altering  value  of  the  'grepprg'
              option.

       :[range]gr[ep][!] -opt...
              same as :grep above,  but  user  defines  all  grep
              arguments,  which  are not escaped.  Searches among
              selected files if any.

       :[range]gr[ep][!]
              repeat last :grep command.   "!"  of  this  command
              inverts "!" in repeated command.

                                                :help

       :h[elp]
              show the help file.

       :h[elp] argument
              is  the  same  as  using ':h argument' in vim.  Use
              vifm-<something> to get help on vifm  (tab  comple-
              tion works).  This form of the command doesn't work
              when 'vimhelp' option is off.

                                                :hideui

       :hideui
              hide interface to show previous commands' output.

                                                :highlight

       :hi[ghlight]
              display  information  about  all  highlight  groups
              active at the moment.

       :hi[ghlight] clear
              reset  all  highlighting  to  builtin  defaults and
              removed all filename-specific rules.

       :hi[ghlight] clear ( {pat1,pat2,...} | /regexp/ )
              remove specified rule.

       :hi[ghlight] ( group-name | {pat1,pat2,...} | /regexp/ )
              display information on  given  highlight  group  or
              file  name  pattern  of  color  scheme  used in the
              active view.

       :hi[ghlight] ( group-name | {pat1,pat2,...} | /regexp/[iI]
       ) cterm=style | ctermfg=color | ctermbg=color
              set  style  (cterm),  foreground  (ctermfg)  or/and
              background  (ctermbg) parameters of highlight group
              or file name pattern for color scheme used  in  the
              active view.

       All  style values as well as color names are case insensi-
       tive.

       Available style values (some of them can be combined):
        - bold
        - underline
        - reverse or inverse
        - standout
        - italic (on unsupported systems becomes reverse)
        - none

       Available group-name values:
        - Win - color of all windows (views, dialogs, menus)  and
       default  color  for  their  content (e.g. regular files in
       views)
        - AuxWin - color of auxiliary areas of windows
        - OtherWin - color of inactive pane
        - Border - color of vertical parts of the border
        - TabLine  -  tab  line  color  (for  'tabscope'  set  to
       "global")
        -  TabLineSel - color of the tip of selected tab (regard-
       less of 'tabscope')
        - TopLine - top line color of the other pane
        - TopLineSel - top line color of the current pane
        - CmdLine - the command line/status bar color
        - ErrorMsg - color of error messages in the status bar
        - StatusLine - color of the line above the status bar
        - JobLine - color of job line that appears above the sta-
       tus line
        - WildMenu - color of the wild menu items
        - SuggestBox - color of key suggestion box
        - CurrLine - line at cursor position in active view
        - OtherLine - line at cursor position in inactive view
        - OddLine - color of every second entry line in a pane
        - LineNr - line number column of views
        - Selected - color of selected files
        - Directory - color of directories
        - Link - color of symbolic links in the views
        - BrokenLink - color of broken symbolic links
        -  HardLink  -  color of regular files with more than one
       hard link
        - Socket - color of sockets
        - Device - color of block and character devices
        - Executable - color of executable files
        - Fifo - color of fifo pipes
        - CmpMismatch - color of mismatched files in side-by-side
       comparison by path
        -  User1..User9 - 9 colors which can be used via %* 'sta-
       tusline' macro

       Available colors:
        - -1 or default or none - default or transparent
        - black   and lightblack
        - red     and lightred
        - green   and lightgreen
        - yellow  and lightyellow
        - blue    and lightblue
        - magenta and lightmagenta
        - cyan    and lightcyan
        - white   and lightwhite
        - 0-255 - corresponding colors from 256-color palette

       Light versions of colors  are  regular  colors  with  bold
       attribute  set.   So order of arguments of :highlight com-
       mand is important and it's better to put "cterm" in  front
       of others to prevent it from overwriting attributes set by
       "ctermfg" or "ctermbg" arguments.

       For convenience of color scheme authors  xterm-like  names
       for  256  color palette is also supported.  The mapping is
       taken                                                 from
       http://vim.wikia.com/wiki/Xterm256_color_names_for_con-
       sole_Vim Duplicated entries  were  altered  by  adding  an
       underscore followed by numerical suffix.

         0  Black                   86  Aquamarine1           172
       Orange3
         1 Red                     87  DarkSlateGray2         173
       LightSalmon3_2
         2  Green                   88  DarkRed_2             174
       LightPink3
         3 Yellow                  89  DeepPink4_2            175
       Pink3
         4  Blue                    90  DarkMagenta           176
       Plum3
         5 Magenta                 91  DarkMagenta_2          177
       Violet
         6  Cyan                    92  DarkViolet            178
       Gold3_2
         7 White                   93  Purple                 179
       LightGoldenrod3
         8  LightBlack              94  Orange4_2             180
       Tan
         9 LightRed                95  LightPink4             181
       MistyRose3
        10  LightGreen              96  Plum4                 182
       Thistle3
        11 LightYellow             97  MediumPurple3          183
       Plum2
        12  LightBlue               98  MediumPurple3_2       184
       Yellow3_2
        13 LightMagenta            99  SlateBlue1             185
       Khaki3
        14  LightCyan              100  Yellow4               186
       LightGoldenrod2
        15 LightWhite             101  Wheat4                 187
       LightYellow3
        16  Grey0                  102  Grey53                188
       Grey84
        17 NavyBlue               103  LightSlateGrey         189
       LightSteelBlue1
        18  DarkBlue               104  MediumPurple          190
       Yellow2
        19 Blue3                  105  LightSlateBlue         191
       DarkOliveGreen1
        20  Blue3_2                106  Yellow4_2             192
       DarkOliveGreen1_2
        21 Blue1                  107  DarkOliveGreen3        193
       DarkSeaGreen1_2
        22  DarkGreen              108  DarkSeaGreen          194
       Honeydew2
        23 DeepSkyBlue4           109  LightSkyBlue3          195
       LightCyan1
        24  DeepSkyBlue4_2         110  LightSkyBlue3_2       196
       Red1
        25 DeepSkyBlue4_3         111  SkyBlue2               197
       DeepPink2
        26  DodgerBlue3            112  Chartreuse2_2         198
       DeepPink1
        27 DodgerBlue2            113  DarkOliveGreen3_2      199
       DeepPink1_2
        28  Green4                 114  PaleGreen3_2          200
       Magenta2_2
        29 SpringGreen4           115  DarkSeaGreen3          201
       Magenta1
        30  Turquoise4             116  DarkSlateGray3        202
       OrangeRed1
        31 DeepSkyBlue3           117  SkyBlue1               203
       IndianRed1
        32  DeepSkyBlue3_2         118  Chartreuse1           204
       IndianRed1_2
        33 DodgerBlue1            119  LightGreen_2           205
       HotPink
        34  Green3                 120  LightGreen_3          206
       HotPink_2
        35 SpringGreen3           121  PaleGreen1             207
       MediumOrchid1_2
        36  DarkCyan               122  Aquamarine1_2         208
       DarkOrange
        37 LightSeaGreen          123  DarkSlateGray1         209
       Salmon1
        38  DeepSkyBlue2           124  Red3                  210
       LightCoral
        39 DeepSkyBlue1           125  DeepPink4_3            211
       PaleVioletRed1
        40  Green3_2               126  MediumVioletRed       212
       Orchid2
        41 SpringGreen3_2         127  Magenta3               213
       Orchid1
        42  SpringGreen2           128  DarkViolet_2          214
       Orange1
        43 Cyan3                  129  Purple_2               215
       SandyBrown
        44  DarkTurquoise          130  DarkOrange3           216
       LightSalmon1
        45 Turquoise2             131  IndianRed              217
       LightPink1
        46  Green1                 132  HotPink3              218
       Pink1
        47 SpringGreen2_2         133  MediumOrchid3          219
       Plum1
        48  SpringGreen1           134  MediumOrchid          220
       Gold1
        49 MediumSpringGreen      135  MediumPurple2          221
       LightGoldenrod2_2
        50  Cyan2                  136  DarkGoldenrod         222
       LightGoldenrod2_3
        51 Cyan1                  137  LightSalmon3           223
       NavajoWhite1
        52  DarkRed                138  RosyBrown             224
       MistyRose1
        53 DeepPink4              139  Grey63                 225
       Thistle1
        54  Purple4                140  MediumPurple2_2       226
       Yellow1
        55 Purple4_2              141  MediumPurple1          227
       LightGoldenrod1
        56  Purple3                142  Gold3                 228
       Khaki1
        57 BlueViolet             143  DarkKhaki              229
       Wheat1
        58  Orange4                144  NavajoWhite3          230
       Cornsilk1
        59 Grey37                 145  Grey69                 231
       Grey100
        60  MediumPurple4          146  LightSteelBlue3       232
       Grey3
        61 SlateBlue3             147  LightSteelBlue         233
       Grey7
        62  SlateBlue3_2           148  Yellow3               234
       Grey11
        63 RoyalBlue1             149  DarkOliveGreen3_3      235
       Grey15
        64  Chartreuse4            150  DarkSeaGreen3_2       236
       Grey19
        65 DarkSeaGreen4          151  DarkSeaGreen2          237
       Grey23
        66  PaleTurquoise4         152  LightCyan3            238
       Grey27
        67 SteelBlue              153  LightSkyBlue1          239
       Grey30
        68  SteelBlue3             154  GreenYellow           240
       Grey35
        69 CornflowerBlue         155  DarkOliveGreen2        241
       Grey39
        70  Chartreuse3            156  PaleGreen1_2          242
       Grey42
        71 DarkSeaGreen4_2        157  DarkSeaGreen2_2        243
       Grey46
        72  CadetBlue              158  DarkSeaGreen1         244
       Grey50
        73 CadetBlue_2            159  PaleTurquoise1         245
       Grey54
        74  SkyBlue3               160  Red3_2                246
       Grey58
        75 SteelBlue1             161  DeepPink3              247
       Grey62
        76  Chartreuse3_2          162  DeepPink3_2           248
       Grey66
        77 PaleGreen3             163  Magenta3_2             249
       Grey70
        78  SeaGreen3              164  Magenta3_3            250
       Grey74
        79 Aquamarine3            165  Magenta2               251
       Grey78
        80  MediumTurquoise        166  DarkOrange3_2         252
       Grey82
        81 SteelBlue1_2           167  IndianRed_2            253
       Grey85
        82  Chartreuse2            168  HotPink3_2            254
       Grey89
        83 SeaGreen2              169  HotPink2               255
       Grey93
        84 SeaGreen1             170 Orchid
        85 SeaGreen1_2           171 MediumOrchid1

       There  are two colors (foreground and background) and only
       one bold attribute.  Thus single  bold  attribute  affects
       both  colors  when "reverse" attribute is used in vifm run
       inside terminal emulator.  At the same time  linux  native
       console  can  handle boldness of foreground and background
       colors independently, but for  consistency  with  terminal
       emulators this is available only implicitly by using light
       versions of colors.  This behaviour might  be  changed  in
       the future.

       Although vifm supports 256 colors in a sense they are sup-
       ported by UI drawing library, whether you will be able  to
       use  all  of them highly depends on your terminal.  To set
       up terminal properly, make sure that $TERM in the environ-
       ment you run vifm is set to name of 256-color terminal (on
       *nixes  it  can  also  be  set  via  X  resources),   e.g.
       xterm-256color.   One  can find list of available terminal
       names by listing  /usr/lib/terminfo/.   Number  of  colors
       supported by terminal with current settings can be checked
       via "tput colors" command.

       Here is the hierarchy of highlight groups, which you  need
       to know for using transparency:
         JobLine
         SuggestBox
         StatusLine
           WildMenu
           User1..User9
         Border
         CmdLine
           ErrorMsg
         Win
           OtherWin
             AuxWin
               OddLine
                 File name specific highlights
                   Directory
                   Link
                   BrokenLink
                   HardLink
                   Socket
                   Device
                   Fifo
                   Executable
                     Selected
                       CurrLine
                         LineNr (in active pane)
                       OtherLine
                         LineNr (in inactive pane)
         TopLine
           TopLineSel
             TabLineSel (for pane tabs)
               User1..User9
         TabLine
           TabLineSel
             User1..User9

       "none"  means  default terminal color for highlight groups
       at the first level of the hierarchy and  transparency  for
       all others.

       Here  file  name specific highlights mean those configured
       via globs ({}) or regular expressions (//).  At  most  one
       of  them  is applied per file entry, namely the first that
       matches file name,  hence  order  of  :highlight  commands
       might be important in certain cases.

                                                :history

       :his[tory]
              display  a  menu  with list of visited directories.
              See "Menus and dialogs" section for controls.

       :his[tory] x
              x can be:
                d[ir]     or . show directory history.
                c[md]     or : show command line history.
                s[earch]  or / show  search  history  and  search
              forward on l key.
                f[search]  or  /  show  search history and search
              forward on l key.
                b[search] or ? show  search  history  and  search
              backward on l key.
                i[nput]    or  @ show prompt history (e.g. on one
              file renaming).
                fi[lter]  or = show filter history (see  descrip-
              tion of the "=" normal mode command).
              See "Menus and dialogs" section for controls.

                                                :histnext

       :histnext
              same  as <c-i>.  The main use case for this command
              is to work around the common pain  point  of  <tab>
              and <c-i> being the same ASCII character: one could
              alter the terminal emulator settings to  emit,  for
              example,  the  `F1` keycode when Ctrl-I is pressed,
              then `:noremap <f1> :histnext<cr>` in vifm, add "t"
              flag  to  the 'cpoptions', and thus have both <c-i>
              and <tab> working as expected.

                                                :histprev

       :histprev
              same as <c-o>.

                                                :if

       :if {expr1}
              start conditional  block.   Commands  are  executed
              until  next  matching :elseif, :else or :endif com-
              mand if {expr1} evaluates  to  non-zero,  otherwise
              they  are  ignored.   See  also  help  on :else and
              :endif commands.

              Example:

                if $TERM == 'screen.linux'
                    highlight     CurrLine     ctermfg=lightwhite
              ctermbg=lightblack
                elseif $TERM == 'tmux'
                    highlight        CurrLine       cterm=reverse
              ctermfg=black ctermbg=white
                else
                    highlight     CurrLine     cterm=bold,reverse
              ctermfg=black ctermbg=white
                endif

                                                :invert

       :invert [f]
              invert file name filter.

       :invert? [f]
              show current filter state.

       :invert s
              invert selection.

       :invert o
              invert sorting order of the primary sorting key.

       :invert? o
              show sorting order of the primary sorting key.

                                                :jobs

       :jobs  display  menu  of  current  backgrounded processes.
              See "Menus and dialogs" section for controls.

                                                :let

       :let $ENV_VAR = <expr>
              set  an  environment  variable.   Warning:  setting
              environment  variable to an empty string on Windows
              removes it.

       :let $ENV_VAR .= <expr>
              append value to environment variable.

       :let &[l:|g:]opt = <expr>
              sets option value.

       :let &[l:|g:]opt .= <expr>
              append value to string option.

       :let &[l:|g:]opt += <expr>
              increasing option value, adding sub-values.

       :let &[l:|g:]opt -= <expr>
              decreasing option value, removing sub-values.

       Where <expr> could  be  a  single-quoted  string,  double-
       quoted string, an environment variable, function call or a
       concatanation of any of them in any order  using  the  '.'
       operator.  Any whitespace is ignored.

                                                :locate

       :locate filename
              use "locate" command to create a menu of filenames.
              Selecting a file from the menu will reload the cur-
              rent file list in vifm to show the  selected  file.
              By  default  the  command  relies  on  the external
              "locate" utility (it's assumed that its database is
              already built), which can be customized by altering
              value of the 'locateprg' option.   See  "Menus  and
              dialogs" section for controls.

       :locate
              repeat last :locate command.

                                                :ls

       :ls    lists  windows of active terminal multiplexer (only
              when  terminal  multiplexer  is  used).   This   is
              achieved  by issuing proper command for active ter-
              minal multiplexer, thus the list is not handled  by
              vifm.

                                                :lstrash

       :lstrash
              display  a  menu with list of files in trash.  Each
              element of the list is original path of  a  deleted
              file,  thus  the  list can contain duplicates.  See
              "Menus and dialogs" section for controls.

                                                :mark

       :[range]ma[rk][?] x [/full/path] [filename]
              Set mark x (a-zA-Z0-9) at /full/path and  filename.
              By  default current directory is being used.  If no
              filename was given and /full/path is current direc-
              tory  then  last file in [range] is used.  Using of
              macros is allowed.  Question mark will stop command
              from overwriting existing marks.

                                                :marks

       :marks create  a  pop-up  menu  of  marks.  See "Menus and
              dialogs" section for controls.

       :marks list ...
              display the contents of the  marks  that  are  men-
              tioned in list.

                                                :media

       :media only for *nix
              display  media  management  menu.   See  "Menus and
              dialogs" section for controls.  See also 'mediaprg'
              option.

                                                :messages

       :mes[sages]
              shows previously given messages (up to 50).

                                                :mkdir

       :[line]mkdir[!] dir ...
              create  directories at specified paths.  The [line]
              can be used to pick node in a tree-view.  "!" means
              make  parent  directories  as  needed.   Macros are
              expanded.

                                                :move

       :[range]m[ove][!?][ &]
              move files to directory of other  view.   With  "?"
              prompts  for  destination  file names in an editor.
              "!" forces overwrite.

       :[range]m[ove][!] path[ &]
              move files to directory  specified  with  the  path
              (absolute  or relative to directory of other view).
              "!" forces overwrite.

       :[range]m[ove][!] name1 name2...[ &]
              move files to directory of other view  giving  each
              next  file  a  corresponding name from the argument
              list.  "!" forces overwrite.

                                                :nohlsearch

       :noh[lsearch]
              clear selection in current pane.

                                                :normal

       :norm[al][!] commands
              execute normal mode commands.  If "!" is used, user
              defined mappings are ignored.  Unfinished last com-
              mand is aborted as if <esc> or <c-c> was typed.   A
              ":"  should  be  completed as well.  Commands can't
              start with a space, so  put  a  count  of  1  (one)
              before it.

                                                :only

       :on[ly]
              switch to a one window view.

                                                :popd

       :popd  remove pane directories from stack.

                                                :pushd

       :pushd[!] /curr/dir [/other/dir]
              add pane directories to stack and process arguments
              like :cd command.

       :pushd exchange the top two items of the directory stack.

                                                :put

       :[line]pu[t][!] [reg] [ &]
              puts files from specified register ("  by  default)
              into  current directory.  The [line] can be used to
              pick node in a  tree-view.   "!"  moves  files  "!"
              moves files from their original location instead of
              copying them.  During this operation  no  confirma-
              tion  dialogs  will  be  shown, all checks are per-
              formed beforehand.

                                                :pwd

       :pw[d] show the present working directory.

                                                :qall

       :qa[ll][!]
              exit vifm (add ! to skip saving changes and  check-
              ing for active backgrounded commands).

                                                :quit

       :q[uit][!]
              if  there  is  more than one tab, close the current
              one, otherwise exit vifm  (add  !  to  skip  saving
              state  and  checking  for  active backgrounded com-
              mands).

                                                :redraw

       :redr[aw]
              redraw the screen immediately.

                                                :registers

       :reg[isters]
              display menu with registers content.

       :reg[isters] list ...
              display the contents of the numbered and named reg-
              isters  that are mentioned in list (for example "az
              to display "", "a and "z content).

                                                :regular

       :regular

       switch to regular view leaving custom view.
                                                       :rename

       :[range]rename[!]
              rename files using vi to edit  names.  !  means  go
              recursively through directories.

       :[range]rename name1 name2...
              rename  each  of  selected files to a corresponding
              name.

                                                :restart

       :restart
              free a lot of things (histories,  commands,  etc.),
              reread  vifminfo,  vifmrc and session files and run
              startup commands passed in the argument list,  thus
              losing  all unsaved changes (e.g. recent history or
              keys mapped after starting this instance).  Session
              that wasn't yet stored gets reset.

              While  many  things  get reset, some basic UI state
              and  current  locations  are  preserved,  including
              tabs.

       :restart full
              variation of :restart that makes no attempt to pre-
              serve anything.

                                                :restore

       :[range]restore
              restore file from  trash  directory,  doesn't  work
              outside  one  of  trash  directories.   See  "Trash
              directory" section below.

                                                :rlink

       :[range]rlink[!?]
              create relative symbolic links to files  in  direc-
              tory  of other view.  With "?" prompts for destina-
              tion file names in an editor. "!" forces overwrite.

       :[range]rlink[!] path
              create relative symbolic links of files  in  direc-
              tory  specified with the path (absolute or relative
              to directory of other view).  "!" forces overwrite.

       :[range]rlink[!] name1 name2...
              create relative symbolic links of files  in  direc-
              tory  of  other view giving each next link a corre-
              sponding name from the argument list.   "!"  forces
              overwrite.

                                                :screen

       :screen
              toggle  whether  to use the terminal multiplexer or
              not.
              A terminal multiplexer  uses  pseudo  terminals  to
              allow multiple windows to be used in the console or
              in a single xterm.   Starting  vifm  from  terminal
              multiplexer with appropriate support turned on will
              cause vifm to open a new terminal multiplexer  win-
              dow  for  each  new file edited or program launched
              from vifm.
              This requires screen version 3.9.9 or newer for the
              screen -X argument or tmux (1.8 version or newer is
              recommended).

       :screen!
              enable integration with terminal multiplexers.

       :screen?
              display whether integration  with  terminal  multi-
              plexers is enabled.

       Note:  the command is called screen for historical reasons
       (when tmux wasn't yet supported) and might be  changed  in
       future releases, or get an alias.

                                                :select

       :[range]select
              select files in the given range (current file if no
              range is given).

       :select {pattern}
              select files that match specified pattern.   Possi-
              ble  {pattern}  forms  are  described in "Patterns"
              section below.  Trailing slash for  directories  is
              taken  into  account,  so  `:select! */ | invert s`
              selects only files.

       :select //[iI]
              same as item above, but reuses last search pattern.

       :select !{external command}
              select files from the  list  supplied  by  external
              command.  Files are matched by full paths, relative
              paths are converted to absolute ones beforehand.

       :[range]select! [{pattern}]
              same as above, but resets previously selected items
              before proceeding.

                                                :session

       :session?
              print name of the current session.

       :session
              detach  current  session without saving it.  Resets
              v:session.

       :session name
              create or load and switch to  a  session  with  the
              specified  name.  Name can't contain slashes.  Ses-
              sion active at  the  moment  is  saved  before  the
              switch.   Session  is also automatically saved when
              quiting the application in usual ways.  Sets v:ses-
              sion.

                                                :set

       :se[t] display  all options that differ from their default
              value.

       :se[t] all
              display all options.

       :se[t] opt1=val1 opt2='val2' opt3="val3" ...
              sets given options.  For local options both  values
              are set.
              You can use following syntax:
               - for all options - option, option? and option&
               -  for  boolean  options - nooption, invoption and
              option!
               - for integer options -  option=x,  option+=x  and
              option-=x
               - for string options - option=x and option+=x
               -  for  string list options - option=x, option+=x,
              option-=x and option^=x
               - for enumeration options  -  option=x,  option+=x
              and option-=x
               - for set options - option=x, option+=x, option-=x
              and option^=x
               -  for  charset  options  -  option=x,  option+=x,
              option-=x and option^=x

              the meaning:
               -  option  - turn option on (for boolean) or print
              its value (for all others)
               - nooption - turn option off
               - invoption - invert option state
               - option! - invert option state
               - option? - print option value
               - option& - reset option to its default value
               - option=x or option:x - set option to x
               - option+=x - add/append x to option
               - option-=x - remove (or subtract) x from option
               - option^=x - toggle x presence  among  values  of
              the option

              Option  name  can  be prepended and appended by any
              number of whitespace characters.

                                                :setglobal

       :setg[lobal]
              display all global options that differ  from  their
              default value.

       :setg[lobal] all
              display all global options.

       :setg[lobal] opt1=val1 opt2='val2' opt3="val3" ...
              same   as  :set,  but  changes/prints  only  global
              options or global values of local options.  Changes
              to  the latter might be not visible until directory
              is changed.

                                                :setlocal

       :setl[ocal]
              display all local options that  differ  from  their
              default value.

       :setl[ocal] all
              display all local options.

       :setl[ocal] opt1=val1 opt2='val2' opt3="val3" ...
              same  as :set, but changes/prints only local values
              of local options.

                                                :shell

       :sh[ell][!]
              start a shell in current directory.  "!" suppresses
              spawning  dedicated  window of terminal multiplexer
              for a shell.  To make vifm adaptive to  environment
              it  uses  $SHELL if it's defined, otherwise 'shell'
              value is used.


                                                :siblnext

       :[count]siblnext[!]

              change directory to [count]th next  sibling  direc-
              tory  after current path using value of global sort
              option of current pane.  "!" enables wrapping.

              For example, say, you're at /boot and root  listing
              starts like this:

                  bin/
                  boot/
                  dev/
                  ...

              Issuing :siblnext will navigate to /dev.


                                                :siblprev

       :[count]siblprev[!]
              same as :siblnext, but in the opposite direction.

                                                :sort

       :sor[t]
              display  dialog  with  different  sorting  methods,
              where one can select the primary sorting key.  When
              'viewcolumns' options is empty and 'lsview' is off,
              changing primary sorting key will also affect  view
              look  (in  particular the second column of the view
              will be changed).  See "Menus and dialogs"  section
              for controls.

                                                :source

       :so[urce] file
              read command-line commands from the file.

                                                :split

       :sp[lit]
              switch to a two window horizontal view.

       :sp[lit]!
              toggle horizontal window splitting.

       :sp[lit] path
              splits  the  window  horizontally to show both file
              directories.   Also  changes  other  pane  to  path
              (absolute  or  relative  to  current  directory  of
              active pane).

                                                :substitute

       :[range]s[ubstitute]/pattern/string/[flags]
              for each file in range replace a match  of  pattern
              with string.

       String can contain \0...\9 to link to capture groups (\0 -
       all match, \1 - first group, etc.).

       Pattern is stored in search history.

       Available flags:

         - i - ignore  case  (the  'ignorecase'  and  'smartcase'
           options are not used)

         - I  -  don't  ignore case (the 'ignorecase' and 'smart-
           case' options are not used)

         - g - substitute all matches in each file name  (each  g
           toggles this)

       :[range]s[ubstitute]/pattern
              substitute pattern with an empty string.

       :[range]s[ubstitute]//string/[flags]
              use last pattern from search history.

       :[range]s[ubstitute]
              repeat previous substitution command.

                                                :sync

       :sync [relative path]
              change the other pane to the current pane directory
              or to some path relative to the current  directory.
              Using macros is allowed.

       :sync! change the other pane to the current pane directory
              and synchronize cursor position.  If  current  pane
              displays  custom  list  of  files,  position before
              entering it is used (current one might not make any
              sense).


       :sync!  [location  |  cursorpos  |  localopts  | filters |
       filelist | tree | all]...
              change  enumerated  properties of the other pane to
              match corresponding properties of the current pane.
              Arguments have the following meanings:

                - location - current directory of the pane;

                - cursorpos - cursor position (doesn't make sense
                  without "location");

                - localopts - all local options;

                - filters - all filters;

                - filelist  -  list  of  files  for  custom  view
                  (implies "location");

                - tree  -  tree  structure for tree view (implies
                  "location");

                - all - all of the above.

                                                :tabclose

       :tabc[lose]
              close current tab, unless it's the only one open at
              current scope.

                                                :tabmove

       :tabm[ove] [N]
              without  the  argument or with `$` as the argument,
              current tab becomes the last tab.  With  the  argu-
              ment,  current  tab is moved after the tab with the
              specified number.  Argument of  `0`  moves  current
              tab to the first position.

                                                :tabname

       :tabname [name]
              set, update or reset (when no argument is provided)
              name of the current tab.

                                                :tabnew

       :tabnew [path]
              create new tab.  Accepts optional path for the  new
              tab.    Macros   and   environment   variables  are
              expanded.

                                                :tabnext

       :tabn[ext]
              switch to the next tab (wrapping around).

       :tabn[ext] {n}
              go to the tab number {n}.   Tab  numeration  starts
              with 1.

                                                :tabonly

       :tabo[nly]
              close  all  tabs  but the current one.  Closes pane
              tabs only at the active side.

                                                :tabprevious

       :tabp[revious]
              switch to the previous tab (wrapping around).

       :tabp[revious] {n}
              go to the {n}-th previous tab.  Note that  :tabnext
              handles its argument differently.

                                                :touch

       :[line]touch file...
              create files at specified paths.  Aborts on errors.
              Doesn't update time of existing files.  The  [line]
              can  be  used  to pick node in a tree-view.  Macros
              are expanded.

                                                :tr

       :[range]tr/pattern/string/
              for each file in range transliterate the characters
              which  appear in pattern to the corresponding char-
              acter in string.  When string is shorter than  pat-
              tern, it's padded with its last character.

                                                :trashes

       :trashes
              lists  all valid trash directories in a menu.  Only
              non-empty and writable trash directories are shown.
              This  is  exactly  the list of directories that are
              cleared when :empty command is executed.

       :trashes?
              same as :trashes, but also displays  size  of  each
              trash directory.

                                                :tree

       :tree  turn  pane into tree view with current directory as
              its root.  The tree view is implemented on top of a
              custom view, but is automatically kept in sync with
              file system state and considers  all  the  filters.
              Thus  the  structure  corresponds to what one would
              see on visiting the  directories  manually.   As  a
              special  case  for  trees  built out of custom view
              file-system tracking isn't performed.

              To leave tree view go up from its root or use gh at
              any  level  of  the tree.  Any command that changes
              directory will also do, in particular, `:cd ..`.

              Tree structure  is  incompatible  with  alternative
              representations,   so   values   of   'lsview'  and
              'millerview' options are ignored.

       :tree! toggle current view in and out of tree mode.

                                                :undolist

       :undol[ist]
              display list of latest changes.   Use  "!"  to  see
              actual  commands.   See "Menus and dialogs" section
              for controls.

                                                :unlet

       :unl[et][!] $ENV_VAR1 $ENV_VAR2 ...
              remove environment variables. Add !  to  omit  dis-
              playing of warnings about nonexistent variables.

                                                :unselect

       :[range]unselect
              unselect  files in the given range (current file if
              no range is given).

       :unselect {pattern}
              unselect files that match specified pattern.   Pos-
              sible  {pattern}  forms are described in "Patterns"
              section below.  Trailing slash for  directories  is
              taken  into  account,  so  `:unselect */` unselects
              directories.

       :unselect !{external command}
              unselect files from the list supplied  by  external
              command.  Files are matched by full paths, relative
              paths are converted to absolute ones beforehand.

       :unselect //[iI]
              same as item above, but reuses last search pattern.

                                                :version

       :ve[rsion]
              show menu with version information.

                                                :vifm

       :vifm  same as :version.

                                                :view

       :vie[w]
              toggle on and off the quick file view  (preview  of
              file's contents).  See also 'quickview' option.

       :vie[w]!
              turn on quick file view if it's off.

                                                :volumes

       :volumes
              only for MS-Windows
              display  menu  with  volume  list.   Hitting  l (or
              Enter) key opens appropriate volume in the  current
              pane.   See  "Menus  and  dialogs" section for con-
              trols.

                                                :vsplit

       :vs[plit]
              switch to a two window vertical view.

       :vs[plit]!
              toggle window vertical splitting.

       :vs[plit] path
              split the  window  vertically  to  show  both  file
              directories.    And  changes  other  pane  to  path
              (absolute  or  relative  to  current  directory  of
              active pane).

                                                :wincmd

       :[count]winc[md] {arg}
              same as running Ctrl-W [count] {arg}.

                                                :windo

       :windo [command...]
              execute  command  for  each pane (same as :winrun %
              command).

                                                :winrun

       :winrun type [command...]
              execute command for pane(s), which is determined by
              type argument:
                - ^ - top-left pane
                - $ - bottom-right pane
                - % - all panes
                - . - current pane
                - , - other pane

                                                :write

       :w[rite]
              write  current  state to vifminfo and session files
              (if a session is active).

                                                :wq

       :wq[!] same as :quit, but ! disables  only  the  check  of
              backgrounded  commands, while state of the applica-
              tion       is       always        written.
              :wqall

       :wqa[ll][!]
              same  as  :qall,  but  ! disables only the check of
              backgrounded commands, while state of the  applica-
              tion is always written.

                                                :xall

       :xa[ll][!]
              same as :qall.

                                                :xit

       :x[it][!]
              same as :quit.

                                                :yank

       :[range]y[ank] [reg] [count]
              will yank files to the reg register.

                                                :map lhs rhs

       :map lhs rhs
              map  lhs  key  sequence to rhs in normal and visual
              modes.

       :map! lhs rhs
              map lhs key sequence to rhs in command line mode.


                                              :cmap  :dmap  :mmap
       :nmap :qmap :vmap

       :cm[ap] lhs rhs
              map lhs to rhs in command line mode.

       :dm[ap] lhs rhs
              map lhs to rhs in dialog modes.

       :mm[ap] lhs rhs
              map lhs to rhs in menu mode.

       :nm[ap] lhs rhs
              map lhs to rhs in normal mode.

       :qm[ap] lhs rhs
              map lhs to rhs in view mode.

       :vm[ap] lhs rhs
              map lhs to rhs in visual mode.


                                                :*map

       :cm[ap]
              list all maps in command line mode.

       :dm[ap]
              list all maps in dialog modes.

       :mm[ap]
              list all maps in menu mode.

       :nm[ap]
              list all maps in normal mode.

       :qm[ap]
              list all maps in view mode.

       :vm[ap]
              list all maps in visual mode.

                                                :*map beginning

       :cm[ap] beginning
              list all maps in command line mode that start  with
              the beginning.

       :dm[ap] beginning
              list  all  maps in dialog modes that start with the
              beginning.

       :mm[ap] beginning
              list all maps in menu  mode  that  start  with  the
              beginning.

       :nm[ap] beginning
              list  all  maps  in normal mode that start with the
              beginning.

       :qm[ap] beginning
              list all maps in view  mode  that  start  with  the
              beginning.

       :vm[ap] beginning
              list  all  maps  in visual mode that start with the
              beginning.

                                                :noremap

       :no[remap] lhs rhs
              map the key sequence lhs to rhs for normal and vis-
              ual modes, but disallow mapping of rhs.

       :no[remap]! lhs rhs
              map  the  key  sequence lhs to rhs for command line
              mode, but disallow mapping of rhs.

                       :cnoremap  :dnoremap  :mnoremap  :nnoremap
       :qnoremap :vnoremap

       :cno[remap] lhs rhs
              map the key sequence lhs to rhs  for  command  line
              mode, but disallow mapping of rhs.

       :dn[oremap] lhs rhs
              map  the  key sequence lhs to rhs for dialog modes,
              but disallow mapping of rhs.

       :mn[oremap] lhs rhs
              map the key sequence lhs to rhs for menu mode,  but
              disallow mapping of rhs.

       :nn[oremap] lhs rhs
              map  the  key  sequence lhs to rhs for normal mode,
              but disallow mapping of rhs.

       :qn[oremap] lhs rhs
              map the key sequence lhs to rhs for view mode,  but
              disallow mapping of rhs.

       :vn[oremap] lhs rhs
              map  the  key  sequence lhs to rhs for visual mode,
              but disallow mapping of rhs.

                                                :unmap

       :unm[ap] lhs
              remove user mapping of lhs from normal  and  visual
              modes.

       :unm[ap]! lhs
              remove user mapping of lhs from command line mode.

                                  :cunmap :dunmap :munmap :nunmap
       :qunmap :vunmap

       :cu[nmap] lhs
              remove user mapping of lhs from command line mode.

       :du[nmap] lhs
              remove user mapping of lhs from dialog modes.

       :mu[nmap] lhs
              remove user mapping of lhs from menu mode.

       :nun[map] lhs
              remove user mapping of lhs from normal mode.

       :qun[map] lhs
              remove user mapping of lhs from view mode.

       :vu[nmap] lhs
              remove user mapping of lhs from visual mode.

Ranges
       The ranges implemented include:
         2,3  -  from second to third file in the list (including
       it)
         % - the entire directory.
         . - the current position in the filelist.
         $ - the end of the filelist.
         't - the mark position t.

       Examples:

         :%delete

       would delete all files in the directory.

         :2,4delete

       would delete the files in the list positions 2 through 4.

         :.,$delete

       would delete the files from the current  position  to  the
       end of the filelist.

         :3delete4

       would delete the files in the list positions 3, 4, 5, 6.

       If a backward range is given :4,2delete - an query message
       is given and user can chose what to do next.

       The builtin commands that accept a range are :d[elete] and
       :y[ank].

Command macros
       The command macros may be used in user commands.

       %a     User   arguments.    When  user  arguments  contain
              macros, they are expanded before preforming substi-
              tution of %a.

       %c %"c The current file under the cursor.

       %C %"C The  current  file  under  the  cursor in the other
              directory.

       %f %"f All of the selected files, but see "Selection" sec-
              tion below.

       %F %"F All  of  the  selected files in the other directory
              list, but see "Selection" section below.

       %b %"b Same as %f %F.

       %d %"d Full path to current directory.

       %D %"D Full path to other file list directory.

       %rx %"rx
              Full paths to files in the register {x}.   In  case
              of  invalid  symbol in place of {x}, it's processed
              with the rest of the line and default  register  is
              used.

       %m     Show command output in a menu.

       %M     Same  as  %m,  but l (or Enter) key is handled like
              for :locate and :find commands.

       %u     Process command output as list of paths and compose
              custom view out of it.

       %U     Same  as  %u,  but implies less list updates inside
              vifm, which is absence of sorting at the moment.

       %Iu    same as %u, but gives up  terminal  before  running
              external command.

       %IU    same  as  %U,  but gives up terminal before running
              external command.

       %S     Show command output in the status bar.

       %q     redirect command output to  quick  view,  which  is
              activated if disabled.

       %s     Execute  command in split window of active terminal
              multiplexer (ignored if not running inside one).

       %n     Forbid using of terminal  multiplexer  to  run  the
              command.

       %i     Completely ignore command output.


       %pc    Marks the end of the main command and the beginning
              of the clear command for graphical  preview,  which
              is invoked on closing preview of a file.

       %pd    Marks a preview command as one that directly commu-
              nicates with the terminal.  Beware that this is for
              things   like   sixel   which   are  self-contained
              sequences that depend only on current cursor  posi-
              tion,  using  this  with anything else is likely to
              mangle terminal state.

       The following dimensions and coordinates  are  in  charac-
       ters:

       %px    x coordinate of top-left corner of preview area.

       %py    y coordinate of top-left corner of preview area.

       %pw    width of preview area.

       %ph    height of preview area.


       Use %% if you need to put a percent sign in your command.

       Note  that  %m, %M, %s, %S, %i, %u and %U macros are mutu-
       ally exclusive.  Only the last one of them on the  command
       will take effect.

       You  can use file name modifiers after %c, %C, %f, %F, %b,
       %d and %D macros.  Supported modifiers are:

         - :p           - full path

         - :u           - UNC name of path  (e.g.  "\\server"  in
           "\\server\share"),  Windows  only.  Expands to current
           computer name for not UNC paths.

         - :~           - relative to the home directory

         - :.           - relative to current directory

         - :h           - head of the file name

         - :t           - tail of the file name

         - :r           - root of the  file  name  (without  last
           extension)

         - :e           - extension of the file name (last one)

         - :s?pat?sub?   - substitute the first occurrence of pat
           with sub.  You can use any character for '?',  but  it
           must not occur in pat or sub.

         - :gs?pat?sub?  -  like  :s,  but substitutes all occur-
           rences of pat with sub.

       See ':h filename-modifiers' in Vim's documentation for the
       detailed description.

       Using  %x  means  expand  corresponding macro escaping all
       characters that have special meaning.  And %"x means using
       of  double  quotes  and  escape  only backslash and double
       quote characters, which is more useful on Windows systems.

       Position and quantity (if there is any) of %m, %M,  %S  or
       %s macros in the command is unimportant.  All their occur-
       rences are removed from the resulting command.

       %c and %f macros are expanded to file names only, when  %C
       and  %F are expanded to full paths.  %f and %F follow this
       in %b too.

       :com move mv %f %D
              set the :move command to  move  all  of  the  files
              selected  in  the  current  directory  to the other
              directory.

       The %a macro is replaced with any arguments  given  to  an
       alias command.  All arguments are considered optional.
              :com lsl !!ls -l %a - set the lsl command  to  exe-
              cute ls -l with or without an argument.

       :lsl<Enter>
              will  list  the  directory  contents of the current
              directory.

       :lsl filename<Enter>
              will list only the given filename.

       The macros can also be used  in  directly  executing  com-
       mands.   ":!mv  %f  %D"  would  move the current directory
       selected files to the other directory.

       Appending & to the end of a command causes it to  be  exe-
       cuted  in  the  background.  Typically you want to run two
       kinds of external commands in the background:

         - GUI applications that doesn't  fork  thus  block  vifm
           (:!sxiv %f &);

         - console  tools that do not work with terminal (:!mv %f
           %D &).

       You don't want to run  terminal  commands,  which  require
       terminal  input  or output something in background because
       they will mess up vifm's TUI.  Anyway, if you did run such
       a command, you can use Ctrl-L key to update vifm's TUI.

       Rewriting the example command with macros given above with
       backgrounding:

       %m, %M, %s, %S, %u and %U macros cannot be  combined  with
       background mark (" &") as it doesn't make much sense.

Command backgrounding
       Copy and move operation can take a lot of time to proceed.
       That's why vifm supports backgrounding of this two  opera-
       tions.   To  run  :copy,  :move  or :delete command in the
       background just add " &" at the end of a command.

       For each background operation a  new  thread  is  created.
       Job cancellation can be requested in the :jobs menu via dd
       shortcut.

       You can see if command is still running in the :jobs menu.
       Backgrounded  commands have progress instead of process id
       at the line beginning.

       Background operations cannot be undone.

Cancellation
       Note that cancellation works somewhat different on Windows
       platform due to different mechanism of break signal propa-
       gation.  One also might need to  use  Ctrl-Break  shortcut
       instead of Ctrl-C.

       There are two types of operations that can be cancelled:

         - file system operations;

         - mounting with FUSE (but not unmounting as it can cause
           loss of data);

         - calls of external applications.

       Note that vifm never  terminates  applications,  it  sends
       SIGINT signal and lets the application quit normally.

       When  one  of set of operations is cancelled (e.g. copying
       of 5th file of 10 files), further operations are cancelled
       too.  In this case undo history will contain only actually
       performed operations.

       Cancelled operations are indicated by "(cancelled)" suffix
       appended to information message on statusbar.

       File system operations

       Currently the following commands can be cancelled: :alink,
       :chmod, :chown, :clone,  :copy,  :delete,  :mkdir,  :move,
       :restore,  :rlink,  :touch.  File putting (on p/P key) can
       be cancelled as well.  It's not hard to see that these are
       mainly long-running operations.

       Cancelling  commands  when they are repeated for undo/redo
       operations is allowed for convenience, but is  not  recom-
       mended  as  further undo/redo operations might get blocked
       by side-effects of partially  cancelled  group  of  opera-
       tions.

       These  commands can't be cancelled: :empty, :rename, :sub-
       stitute, :tr.

       Mounting with FUSE

       It's not considered to be an error, so  only  notification
       on the status bar is shown.

       External application calls

       Each of this operations can be cancelled: :apropos, :find,
       :grep, :locate.

Selection
       If there is a selection, it's  stashed  before  proceeding
       further  unless  file  under  the  cursor  is part of that
       selection.  This means that when macros are  expanded  for
       :filetype  or  :filextype  programs,  `%f` and `%F` become
       equivalent to `%c` and `%C` respectively if  current  file
       is  not  selected.  So you run selection by running one of
       selected files, otherwise you're  running  a  single  file
       even if there are other selected entries.

       When  running  a selection it must not include broken sym-
       bolic links, has to be consistent and set of file handlers
       must be compatible.  Consistency means that selection con-
       tains either only directories (including links to them) or
       only files, but not their mix.

       Compatibility  is  a  more  sophisticated  check, but it's
       defined in a natural  way  so  that  you  get  what  you'd
       expect.   The  following properties of selection are taken
       into account  while  checking  it  for  compatibility  and
       deciding how to handle it:


         1. If  there  any files for which handler isn't defined,
            then all files are opened using 'vicmd' or 'vixcmd'.


         2. If all handlers match the following criteria:
             - backgrounded
             - include `%c` and/or `%C`
             - include neither `%f` nor `%F`
            then each file is executed independently of the rest.


         3. If all handlers are equal, the common handler is exe-
            cuted.   This  handler  might  ignore  selection  and
            process only file under the cursor.


         4. Otherwise, an error  is  reported,  because  handlers
            differ and they don't support parallel execution.

Patterns
       :highlight,  :filetype,  :filextype,  :fileviewer commands
       and 'classify' option support globs,  regular  expressions
       and mime types to match file names or their paths.

       There are six possible ways to write a single pattern:

         1. [!]{comma-separated-name-globs}

         2. [!]{{comma-separated-path-globs}}

         3. [!]/name-regular-expression/[iI]

         4. [!]//path-regular-expression//[iI]

         5. [!]<comma-separated-mime-type-globs>

         6. undecorated-pattern

       First five forms can include leading exclamation mark that
       negates pattern matching.

       The last form is  implicitly  refers  to  one  of  others.
       :highlight  does not accept undecorated form, while :file-
       type,  :filextype,  :fileviewer,  :select,  :unselect  and
       'classify' treat it as list of name globs.

       Path  patterns  receive  absolute  path  of  the file that
       includes its name component as well.

       To combine several patterns (AND them), make  sure  you're
       using  one  of the first five forms and write patterns one
       after another, like this:
         <text/plain>{*.vifm} Mind that if you make a mistake the
       whole string will be treated as the sixth form.

       :filetype,  :filextype  and  :fileviewer  commands  accept
       comma-separated list of patterns instead of a single  pat-
       tern, thus effectively handling OR operation on them:
         <text/plain>{*.vifm},<application/pdf>{*.pdf} Forms that
       accept comma-separated lists of patterns also process them
       as lists of alternatives.

       Patterns with regular expressions

       Regular   expression  patterns  are  case  insensitive  by
       default, see description of commands, which might override
       default behaviour.

       Flags of regular expressions mean the following:
         - "i" makes filter case insensitive;
         - "I" makes filter case sensitive.  They can be repeated
       multiple times, but the later one takes  precedence  (e.g.
       "iiiI"  is  equivalent  to  "I"  and "IiIi" is the same as
       "i").

       There are no implicit `^` or `$`, so make sure to  specify
       them explicitly if the pattern should match the whole name
       or path.

       Patterns with globs

       "Globs" section below provides short overview of globs and
       some important points that one needs to know about them.

       Patterns with mime-types

       Mime  type  matching is essentially globs matching applied
       to mime type of a file instead of  its  name/path.   Note:
       mime types aren't detected on Windows.

       Examples

       Associate    `evince`    to    PDF-files    only    inside
       `/home/user/downloads/` directory (excluding its subdirec-
       tories):

         :filextype  //^/home/user/downloads/[^/]*.pdf$//  evince
       %f


Globs
       Globs are always case insensitive as  it  makes  sense  in
       general case.

       `*`,  `?`,  `[`  and `]` are treated as special symbols in
       the pattern.  E.g.

         :filetype * less %c

       matches all files.  One  can  use  character  classes  for
       escaping, so

         :filetype [*] less %c

       matches  only  one  file name, the one which contains only
       asterisk symbol.

       `*` means any number of any characters (possibly an  empty
       substring),  with  one  exception: asterisk at the pattern
       beginning doesn't match dot in the first position.  E.g.

         :fileviewer *.zip,*.jar zip -sf %c

       associates using of `zip` program  to  preview  all  files
       with  `zip`  or  `jar` extensions as listing of their con-
       tent, but `.file.zip` won't be matched.

       `?` means any character at this position.  E.g.

         :fileviewer ?.out file %c

       calls `file` tool for all files  which  have  exactly  one
       character before their extension (e.g. a.out, b.out).

       Square  brackets  designate  character  class, which means
       that whole character class matches against any of  charac-
       ters listed in it.  For example

         :fileviewer *.[ch] highlight -O xterm256 -s dante --syn-
       tax c %c

       makes vifm call `highlight` program to colorize source and
       header  files  in  C  language  for  a 256-color terminal.
       Equal command would be

         :fileviewer  *.c,*.h  highlight  -O  xterm256  -s  dante
       --syntax c %c


       Inside  square  brackets `^` or `!` can be used for symbol
       class negotiation and the `-` symbol to set a range.   `^`
       and  `!`  should  appear  right  after  the opening square
       bracket.  For example

         :filetype *.[!d]/ inspect_dir

       associates `inspect_dir` as  additional  handler  for  all
       directories  that have one character extension unless it's
       "d" letter.  And

         :filetype [0-9].jpg sxiv

       associates `sxiv` picture viewer only for JPEG-files  that
       contain single digit in their name.

       If  you  need  to include literal comma, which is normally
       separates multiple globs, double it.

:set options
       Local options
              These are kind of options that are local to a  spe-
              cific view.  So you can set ascending sorting order
              for left pane and descending order for right pane.

              In addition to being  local  to  views,  each  such
              option also has two values:

                - local  to  current  directory (value associated
                  with current location);

                - global to current directory  (value  associated
                  with the pane).

              The  idea  is  that current directory can be made a
              temporary exception to regular configuration of the
              view,  until  directory  change.  Use :setlocal for
              that.  :setglobal changes view value not  affecting
              settings  until  directory  change.   :set  applies
              changes immediately to all values.


       'aproposprg'
              type: string
              default: "apropos %a"
              Specifies format for  an  external  command  to  be
              invoked  by  the :apropos command.  The format sup-
              ports expanding of macros, specific for a  particu-
              lar *prg option, and %% sequence for inserting per-
              cent sign literally.  This  option  should  include
              the  %a  macro  to  specify  placement of arguments
              passed to the :apropos command.  If  the  macro  is
              not used, it will be implicitly added after a space
              to the value of this option.

       'autochpos'
              type: boolean
              default: true
              When disabled vifm will set  cursor  to  the  first
              line  in  the  view  after  :cd and :pushd commands
              instead of saved cursor position.   Disabling  this
              will  also make vifm clear information about cursor
              position in the view history on :cd and :pushd com-
              mands (and on startup if 'autochpos' is disabled in
              the  vifmrc).   l  key  in  the  ":history  ."  and
              ":trashes"  menus  are  treated  like  :cd command.
              This option also affects marks so  that  navigating
              to a mark doesn't restore cursor position.

              When this option is enabled, more fine grained con-
              trol  over  cursor  position   is   available   via
              'histcursor' option.

       'columns' 'co'
              type: integer
              default: terminal width on startup
              Terminal width in characters.

       'caseoptions'
              type: charset
              default: ""
              This option gives additional control over case sen-
              sitivity by allowing overriding  default  behaviour
              to  either  always  be  case sensitive or always be
              case insensitive.  Possible values  form  pairs  of
              lower  and  upper  case letters that configure spe-
              cific aspect of behaviour:
                p - always ignore case of  paths  during  comple-
              tion.
                P - always match case of paths during completion.
                g - always ignore case of characters for f/F/;/,.
                G - always match case of characters for f/F/;/,.

              At most one item of each pair takes affect, if both
              or more are present, only  the  last  one  matters.
              When  none  of pair's elements are present, the be-
              haviour is default (depends on operating system for
              path  completion  and on values of 'ignorecase' and
              'smartcase' options for file navigation).

       'cdpath' 'cd'
              type: string list
              default: value of $CDPATH with  commas  instead  of
              colons
              Specifies  locations to check on changing directory
              with relative path that doesn't start with "./"  or
              "../".   When non-empty, current directory is exam-
              ined after directories listed in the option.

              This option doesn't affect completion of  :cd  com-
              mand.

              Example:

                set cdpath=~

              This  way  ":cd bin" will switch to "~/bin" even if
              directory named "bin" exists in current  directory,
              while  ":cd  ./bin"  command  will  ignore value of
              'cdpath'.

       'chaselinks'
              type: boolean
              default: false
              When enabled path of view  is  always  resolved  to
              real path (with all symbolic links expanded).

       'classify'
              type: string list
              default: ":dir:/"
              Specifies file name prefixes and suffixes depending
              on file type or name.  The format is either of:
                - [{prefix}]:{filetype}:[{suffix}]
                - [{prefix}]::{pattern}::[{suffix}]
              Possible {pattern} forms  are  described  in  "Pat-
              terns" section above.

              Priority rules:
                - file name patterns have priority over type pat-
              terns
                - file name patterns are matched in left-to-right
              order of their appearance in this option

              Either  {prefix} or {suffix} or both can be omitted
              (which is the  default  for  all  unspecified  file
              types),  this means empty {prefix} and/or {suffix}.
              {prefix} and {suffix} should  consist  of  at  most
              eight  characters.   Elements are separated by com-
              mas.  Neither prefixes nor  suffixes  are  part  of
              file  names,  so  they  don't affect commands which
              operate on file names  in  any  way.   Comma  (',')
              character  can be inserted by doubling it.  List of
              file type names can be found in the description  of
              filetype() function.

       'confirm' 'cf'
              type: set
              default: delete,permdelete
              Defines which operations require confirmation:
               -  delete      -  moving  files  to trash (on d or
              :delete);
               - permdelete - permanent deletion of files  (on  D
              or :delete! command or on undo/redo operation).

       'cpoptions' 'cpo'
              type: charset
              default: "fst"
              Contains  a  sequence  of  single-character  flags.
              Each flag enables behaviour of  older  versions  of
              vifm.  Flags:
               -  f  -  when  included,  running  :filter command
              results in not inverted (matching  files  are  fil-
              tered out) and :filter! in inverted (matching files
              are left) filter,  when  omitted,  meaning  of  the
              exclamation mark changes to the opposite;
               -  s  -  when  included, yy, dd and DD normal mode
              commands act on selection, otherwise  they  operate
              on current file only;
               -  t - when included, <tab> (thus <c-i>) behave as
              <space> and switches active pane,  otherwise  <tab>
              and  <c-i>  go  forward  in the view history.  It's
              possible to make both <tab> and <c-i>  to  work  as
              expected  by setting up the terminal to emit a cus-
              tom sequence when <c-i> is pressed;  see  :histnext
              for details.

       'cvoptions'
              type: set
              default:
              Specifies  whether  entering/leaving  custom  views
              triggers events  that  normally  happen  on  enter-
              ing/leaving directories:
               -  autocmds     -  trigger  autocommands on enter-
              ing/leaving custom views;
               - localopts   -  reset  local  options  on  enter-
              ing/leaving custom views;
               -  localfilter  -  reset  local  filter  on enter-
              ing/leaving custom views.

       'deleteprg'
              type: string
              default: ""
              Specifies  program  to  run  on  files   that   are
              permanently removed.  When empty, files are removed
              as usual, otherwise this command is invoked on each
              file by appending its name.  If the command doesn't
              remove files, they will remain on the file system.

       'dirsize'
              type: enumeration
              default: size
              Controls how size of directories  is  displayed  in
              file views.  The following values are possible:
               -  size    - size of directory (i.e., size used to
              store list of files)
               - nitems - number  of  entries  in  the  directory
              (excluding . and ..)

              Size  obtained via ga/gA overwrites this setting so
              seeing count of  files  and  occasionally  size  of
              directories is possible.

       'dotdirs'
              type: set
              default: nonrootparent,treeleafsparent
              Controls  displaying  of dot directories.  The fol-
              lowing values are possible:
               - rootparent      - show "../" in  root  directory
              of file system
               -  nonrootparent   - show "../" in non-root direc-
              tories of file system
               - treeleafsparent - show "../" in  empty  directo-
              ries of tree view

              Note  that  empty  directories always contain "../"
              entry regardless of value of  this  option.   "../"
              disappears  at the moment at least one file is cre-
              ated.

       'dotfiles'
              type: boolean
              default: false
              Whether dot files are shown in the  view.   Can  be
              controlled with z* bindings.

       'fastrun'
              type: boolean
              default: false
              With  this  option  turned on you can run partially
              entered commands with unambiguous  beginning  using
              :! (e.g. :!Te instead of :!Terminal or :!Te<tab>).

       'fillchars' 'fcs'
              type: string list
              default: ""
              Sets characters used to fill borders.

                item         default    used for
                vborder:c     '  '         left, middle and right
              vertical borders

              If value is omitted, its  default  value  is  used.
              Example:

                set fillchars=vborder:.

       'findprg'
              type: string
              default:  "find  %s  %a  -print  ,  -type  d  \(  !
              -readable -o ! -executable \) -prune"
              Specifies format for  an  external  command  to  be
              invoked  by the :find command.  The format supports
              expansion of macros specific  for  this  particular
              option  and  %% sequence for inserting percent sign
              literally.  The macros are:

                macro   value/meaning
                 %s     literal arguments of :find or
                        list of paths to search in

                 %A     empty or
                        literal arguments of :find
                 %a     empty or
                        literal arguments of :find or
                        predicate followed by  escaped  arguments
              of :find
                 %p     empty or
                        literal arguments of :find or
                        escaped arguments (parameters) of :find

                 %u     redirect output to custom view instead of
              showing a menu
                 %U     redirect output to unsorted  custom  view
              instead of showing a menu

              Predicate  in %a is "-name" on *nix and "-iname" on
              Windows.

              If both %u and %U are specified, %U is chosen.

              Some macros can be added implicitly:
               - if %s isn't present, it's appended
               - if neither of %a, %A and %p is  present,  %a  is
              appended
               -  if  neither of %s, %a, %A and %p is present, %s
              and %a are appended in this order

              The macros slightly change their meaning  depending
              on format of :find's arguments:
               -  if  the  first  argument  points to an existing
              directory, %s is assigned all arguments  while  %a,
              %A and %p are left empty
               - otherwise:
                  -  %s  is  assigned a dot (".") meaning current
              directory or list of selected file names, if any
                  - %a, %A and %p are assigned literal  arguments
              when  first argument starts with a dash ("-"), oth-
              erwise %a gets an escaped version of the  arguments
              with a predicate and %p contains escaped version of
              the arguments

              Starting with Windows Server 2003 a `where` command
              is  available.  One can configure vifm to use it in
              the following way:

                  set findprg="where /R %s %A"

              As the syntax of this command  is  rather  limited,
              one  can't use :find command with selection of more
              than one  item  because  the  command  ignores  all
              directory paths except for the last one.

              When  using find port on Windows, another option is
              to setup 'findprg' like this:

                  set findprg="find %s %a"


       'followlinks'
              type: boolean
              default: true
              Follow links on l or Enter.  That  is  navigate  to
              destination file instead of treating the link as if
              it were target  file.   Doesn't  affects  links  to
              directories,  which  are always entered (use gf key
              for directories).

       'fusehome'
              type: string
              default:      "($XDG_DATA_HOME/.local/share       |
              $VIFM)/fuse/"
              Directory to be used as a root dir for FUSE mounts.
              Value of the option can contain  environment  vari-
              ables  (in form "$envname"), which will be expanded
              (prepend it with a  slash  to  prevent  expansion).
              The value should expand to an absolute path.

              If  you change this option, vifm won't remount any-
              thing.  It affects future mounts only.  See  "Auto-
              matic  FUSE mounts" section below for more informa-
              tion.

       'gdefault' 'gd'
              type: boolean
              default: false
              When on, 'g' flag is on for :substitute by default.

       'grepprg'
              type: string
              default: "grep -n -H -I -r %i %a %s"
              Specifies format for  an  external  command  to  be
              invoked  by the :grep command.  The format supports
              expanding of macros, specific for a particular *prg
              option,  and %% sequence for inserting percent sign
              literally.  This option should include the %i macro
              to  specify placement of "-v" string when inversion
              of results is requested, %a or %A macro to  specify
              placement  of arguments passed to the :grep command
              and the %s macro to specify placement  of  list  of
              files  to search in.  If some of the macros are not
              used, they will be implicitly added after  a  space
              to the value of the 'grepprg' option in the follow-
              ing order: %i, %a, %s.  Note that when  neither  %a
              nor  %A  are  specified,  it's  %a  which  is added
              implicitly.

              Optional %u or %U macro  could  be  used  (if  both
              specified  %U  is  chosen)  to force redirection to
              custom or unsorted custom view respectively.

              See 'findprg' option for description of  difference
              between %a and %A.

              Example   of   setup  to  use  ack  (http://beyond-
              grep.com/) instead of grep:

                set grepprg='ack -H -r %i %a %s'

              or          The           Silver           Searcher
              (https://github.com/ggreer/the_silver_searcher):

                set grepprg='ag --line-numbers %i %a %s'



       'histcursor'
              type: set
              default: startup,dirmark,direnter
              Defines  situations  when  cursor  should  be moved
              according to directory history:
               - startup  - on loading file lists during startup
               - dirmark  -  after  navigating  to  a  mark  that
              doesn't specify file
               - direnter - on opening directory from a file list

              This  option has no effect when 'autochpos' is dis-
              abled.

              Note that the list is not exhaustive and there  are
              other situations when cursor is positioned automat-
              ically.

       'history' 'hi'
              type: integer
              default: 15
              Maximum number of stored items in all histories.

       'hlsearch' 'hls'
              type: boolean
              default: true
              Automatically select files that are search matches.

       'iec'  type: boolean
              default: false
              Use KiB, MiB, ... suffixes instead  of  K,  M,  ...
              when printing size in human-friendly format.

       'ignorecase' 'ic'
              type: boolean
              default: false
              Ignore  case in search patterns (:substitute, / and
              ? commands), local filter (but not the rest of fil-
              ters)  and other things detailed in the description
              of 'caseoptions'.

       'incsearch' 'is'
              type: boolean
              default: false
              When this option is set, search and view update for
              local  filter is be performed starting from initial
              cursor  position  each  time  search   pattern   is
              changed.

       'iooptions'
              type: set
              default:
              Controls details of file operations.  The following
              values are available:
               - fastfilecloning  -  perform  fast  file  cloning
              (copy-on-write), when available
                                   (available  on Linux and btrfs
              file system).

       'laststatus' 'ls'
              type: boolean
              default: true
              Controls if status bar is visible.

       'lines'
              type: integer
              default: terminal height on startup
              Terminal height in lines.

       'locateprg'
              type: string
              default: "locate %a"
              Specifies format for  an  external  command  to  be
              invoked  by  the  :locate command.  The format sup-
              ports expanding of macros, specific for a  particu-
              lar *prg option, and %% sequence for inserting per-
              cent sign literally.  This  option  should  include
              the  %a  macro  to  specify  placement of arguments
              passed to the :locate command.  If the macro is not
              used,  it will be implicitly added after a space to
              the value of this option.

              Optional %u or %U macro  could  be  used  (if  both
              specified  %U  is  chosen)  to force redirection to
              custom or unsorted custom view respectively.

       'mediaprg'
              type: string
              default:  path  to  bundled  script  that  supports
              udevil, udisks and udisks2
                       (using  udisks2  requires python with dbus
              module installed)
                       OS X: path points to a python script  that
              uses diskutil
              {only for *nix}
              Specifies  command  to  be  used  to  manage  media
              devices.  Used by :media command.

              The command can be passed the following parameters:
               - list           -- list media
               - mount {device} -- mount a device
               - unmount {path} -- unmount given mount point

              The output of `list` subcommand is parsed in search
              of  lines that start with one of the following pre-
              fixes:
               - device=       -  specifies  device  path  (e.g.,
              "/dev/sde")
               -  label=        - specifies optional device label
              (e.g., "Memory card")
               - info=        - specifies arbitrary text to  dis-
              play next to device (by
                                default  "[label]"  is  used,  if
              label is provided)
               - mount-point= - specifies a mount point  (can  be
              absent or appear more than once)

              All other lines are ignored.  Each `device=` starts
              a new section  describing  a  device  which  should
              include two other possible prefixes.

              `list`  subcommand  is  assumed  to always succeed,
              while exit code of `mount` and `unmount`  is  taken
              into  account  to  determine  whether operation was
              performed successfully.

       'lsoptions'
              type: string list
              default: ""
              scope: local

              Configures ls-like view.

                item          used for
                transposed    filling view grid by columns rather
              than by lines


       'lsview'
              type: boolean
              default: false
              scope: local
              When  this  option  is  set, directory view will be
              displayed in multiple columns with file names simi-
              lar  to  output  of  `ls -x` command.  See "ls-like
              view" section below for format  description.   This
              option has no effect if 'millerview' is on.

       'milleroptions'
              type: string list
              default: "lsize:1,csize:1,rsize:1,rpreview:dirs"
              scope: local

              Configures miller view.

                item          default  used for
                lsize:num     0        left column
                csize:num      1         center  column (can't be
              disabled)
                rsize:num     0        right column
                rpreview:str  dirs     right column

              *size specifies ratios of columns.  Each  ratio  is
              in  the range from 0 to 100 and values are adjusted
              to fit the limits.  Zero  disables  a  column,  but
              central (main) column can't be disabled.

              rpreview  specifies what file-system objects should
              be previewed in the right column and can  take  two
              values:  dirs  (only  directories)  or  all.   Both
              options don't include parent directory ("..").

              Example of two-column mode which is useful in  com-
              bination with :view command:

                set milleroptions=lsize:1,csize:2


       'millerview'
              type: boolean
              default: false
              scope: local
              When  this  option  is  set, directory view will be
              displayed in multiple cascading  columns.   Ignores
              'lsview'.

       'mintimeoutlen'
              type: integer
              default: 150
              The  fracture  of 'timeoutlen' in milliseconds that
              is waited between  subsequent  input  polls,  which
              affects  various asynchronous operations (detecting
              changes made by external  applications,  monitoring
              background  jobs,  redrawing  UI).   There  are  no
              strict guarantees, however the  higher  this  value
              is, the less is CPU load in idle mode.

       'number' 'nu'
              type: boolean
              default: false
              scope: local
              Print  line  number in front of each file name when
              'lsview' option is turned off.   Use  'numberwidth'
              to  control  width of line number.  Also see 'rela-
              tivenumber'.

       'numberwidth' 'nuw'
              type: integer
              default: 4
              scope: local
              Minimal number of characters for line number field.

       'previewprg'
              type: string
              default: ""
              scope: local

              External command to be used instead of preview pro-
              grams configured via :fileviewer command.

              Example:

                "  always show git log in preview of files inside
              some repository
                au  DirEnter  '~/git-repo/**/*'   setl   preview-
              prg='git log --color -- %c 2>&1'

       'quickview'
              type: boolean
              default: false
              Whether  quick  view (:view) is currently active or
              not.

       'relativenumber' 'rnu'
              type: boolean
              default: false
              scope: local
              Print relative line number in front  of  each  file
              name when 'lsview' option is turned off.  Use 'num-
              berwidth' to control width of line number.  Various
              combinations  of 'number' and 'relativenumber' lead
              to such results:

                                      nonumber               num-
              ber

                  norelativenumber   | first                |   1
              first
                                     | second               |   2
              second
                                     | third                |   3
              third

                    relativenumber   |   1 first            |   1
              first
                                     |    0  second            |2
              second
                                     |   1 third            |   1
              third


       'rulerformat' 'ruf'
              type: string
              default: "%l/%S "
              Determines  the  content of the ruler.  Its minimal
              width is 13  characters  and  it's  right  aligned.
              Following macros are supported:
               %=   -  separation  point  between  left and right
              aligned halves of the line
               %l  - file number
               %L  - total number of  files  in  view  (including
              filtered out ones)
               %x  - number of files excluded by filters
               %0- - old name for %x macro
               %S  - number of displayed files
               %=   -  separation  point  between  left and right
              align items
               %%  - literal percent sign
               %[  - designates beginning of an optional block
               %]  - designates end of an optional block

              Percent sign can be followed  by  optional  minimum
              field width.  Add '-' before minimum field width if
              you want field to be right aligned.

              Optional blocks are ignored  unless  at  least  one
              macro  inside  of  them  is expanded to a non-empty
              value.

              Example:

                set rulerformat='%2l-%S%[ +%x%]'

       'runexec'
              type: boolean
              default: false
              Run executable file on Enter, l or Right Arrow key.
              Behaviour  of  the last two depends on the value of
              the 'lsview' option.

       'scrollbind' 'scb'
              type: boolean
              default: false
              When this option is set, vifm will try to keep dif-
              ference  of scrolling positions of two windows con-
              stant.

       'scrolloff' 'so'
              type: integer
              default: 0
              Minimal number of screen lines to  keep  above  and
              below  the  cursor.   If  you  want  cursor line to
              always be in the middle of the view (except at  the
              beginning or end of the file list), set this option
              to some large value (e.g. 999).

       'sessionoptions' 'ssop'
              sessionoptions ssop
              type: set
              default: tui,state,tabs,savedirs,dhistory
              An equivalent of 'vifminfo' for sessions, uses  the
              same  values.   When  both options include the same
              value, data from session file has  higher  priority
              (data  from  vifminfo  isn't necessarily completely
              discarded, instead it's merged with the state of  a
              session the same way state of multiple instances is
              merged on exit).

       'shell' 'sh'
              type: string
              default: $SHELL or "/bin/sh" or "cmd"  (on  MS-Win-
              dows)
              Full  path to the shell to use to run external com-
              mands.  On *nix a shell argument can be supplied.

       'shellcmdflag' 'shcf'
              type: string
              default: "-c" or "/C" (for cmd.exe on MS-Windows)
              Command-line option  used  to  pass  a  command  to
              'shell'.  It's used in contexts where command comes
              from the user.

              Note that using this option  to  force  interactive
              mode  of  the  shell is most likely a BAD IDEA.  In
              general  interactive  host  and  interactive  child
              shell  can't  share the same terminal session.  You
              can't even run such a shell  in  background.   Con-
              sider   writing  a  wrapper  for  your  shell  that
              preloads aliases and commands  without  making  the
              shell  interactive  and ending up using it in a way
              it was not meant to be used.

              Note that this option is ignored  when  'shell'  is
              set  to  PowerShell  due  to  the  internal  use of
              `-encodedCommand`.

       'shortmess' 'shm'
              type: charset
              default: "p"
              Contains  a  sequence  of  single-character  flags.
              Each  flag  enables shortening of some message dis-
              played by vifm in the TUI.  Flags:
               - L - display only  last  directory  in  tab  line
              instead of full path.
               - M - shorten titles in windows of terminal multi-
              plexers created by vifm down to file  name  instead
              of using full path.
               -  T  - truncate status-bar messages in the middle
              if they are too long to fit on  the  command  line.
              "..." will appear in the middle.
               - p - use tilde shortening in view titles.


       'showtabline' 'stal'
              type: enumeration
              default: multiple
              Specifies  when tab line should be displayed.  Pos-
              sible values:
               - never    - never display tab line
               - multiple - show tab line only when there are  at
              least two tabs
               - always   - display tab line always

              Alternatively  0, 1 and 2 Vim-like values  are also
              accepted and correspond to "never", "multiple"  and
              "always" respectively.


       'sizefmt'
              type: string list
              default: "units:iec"
              Configures  the  way  size  is  formatted in
              human-friendly way.

                  item          value         meaning
                  units:         iec            Use   1024
              byte units (K or KiB, etc.).
                                              See    'iec'
              option.
                                si              Use   1000
              byte units (KB, etc.).
                  precision:     i  >  0          How many
              fraction digits to consider.
                                {not set}     Precision of
              1 for integer part < 10,
                                              0  otherwise
              (provides old behaviour).
                  space         {present}     Insert space
              before unit symbols.
                                              This  is the
              default.
                  nospace         {present}       Do   not
              insert space before unit symbols.

              Numbers  are  rounded  from  zero.  Trailing
              zeros are dropped.

              Example:

                set sizefmt=units:iec,precision:2,nospace


       'slowfs'
              type: string list
              default: ""
              only for *nix
              A list of mounter fs name beginnings  (first
              column  in  /etc/mtab  or  /proc/mounts)  or
              paths prefixes for fs/directories that  work
              too  slow  for you.  This option can be used
              to stop vifm from making  some  requests  to
              particular  kinds  of  file systems that can
              slow down  file  browsing.   Currently  this
              means  don't check if directory has changed,
              skip  check  if  target  of  symbolic  links
              exists,  assume  that link target located on
              slow fs to be a directory  (allows  entering
              directories and navigating to files via gf).
              If you set the option to "*", it  means  all
              the  systems are considered slow (useful for
              cygwin, where all the  checks  might  render
              vifm very slow if there are network mounts).

              Example for autofs root /mnt/autofs:

                set slowfs+=/mnt/autofs

       'smartcase' 'scs'
              type: boolean
              default: false
              Overrides the ignorecase option if a pattern
              contains at least one upper case  character.
              Only   used   when  'ignorecase'  option  is
              enabled.

       'sort' type: string list
              default: +name on *nix and +iname on Windows
              scope: local
              Sets list of sorting  keys  (first  item  is
              primary key, second is secondary key, etc.):
                 [+-]ext      -  extension  of  files  and
              directories
                 [+-]fileext - extension of files only
                 [+-]name    - name (including extension)
                 [+-]iname   - name (including  extension,
              ignores case)
                 [+-]type          -       file       type
              (dir/reg/exe/link/char/block/sock/fifo)
                 [+-]dir     - directory grouping  (direc-
              tory < file)
                 [+-]gid     - group id (*nix only)
                 [+-]gname   - group name (*nix only)
                 [+-]mode     - file type derived from its
              mode (*nix only)
                 [+-]perms   -  permissions  string  (*nix
              only)
                 [+-]uid     - owner id (*nix only)
                 [+-]uname   - owner name (*nix only)
                 [+-]nlinks   - number of hard links (*nix
              only)
                 [+-]inode   - inode number (*nix only)
                 [+-]size    - size
                 [+-]nitems  - number of items in a direc-
              tory (zero for files)
                 [+-]groups   -  groups extracted via reg-
              exps from 'sortgroups'
                 [+-]target  - symbolic link target (empty
              for other file types)
                 [+-]atime    -  time accessed (e.g. read,
              executed)
                 [+-]ctime   - time  changed  (changes  in
              metadata, e.g. mode)
                 [+-]mtime    -  time  modified (when file
              contents is changed)

              Note:  look  for  st_atime,   st_ctime   and
              st_mtime  in  "man 2 stat" for more informa-
              tion on time keys.

              '+' means ascending sort for this  key,  and
              '-' means descending sort.

              "dir" key is somewhat similar in this regard
              but it's added implicitly: when "dir" is not
              specified,  sorting behaves as if it was the
              first key in the list.  That's  why  if  one
              wants  sorting  algorithm to mix directories
              and files, "dir" should be appended to sort-
              ing option, for example like this:

                set sort+=dir

              or

                set sort=-size,dir

              Value  of  the  option is checked to include
              dir key and default  sorting  key  (name  on
              *nix,  iname on Windows).  Here is what hap-
              pens if one of them is missing:

                - type key is added at the beginning;

                - default key is added at the end;

              all other keys are left untouched  (at  most
              they are moved).

              This   option   also  changes  view  columns
              according to primary sorting key set, unless
              'viewcolumns' option is not empty.

       'sortnumbers'
              type: boolean
              default: false
              scope: local
              Natural  sort  of  (version)  numbers within
              text.

       'sortgroups'
              type: string
              default: ""
              scope: local
              Sets comma-separated list of regular expres-
              sions for group type of sorting.  Double the
              comma to insert it literally.

              The regular expressions are used to  extract
              substrings  of  file  names to serve as keys
              for sorting.  It is  essentially  a  way  to
              ignore  uninteresting  parts  of  file names
              during sorting by name.

              Each expression should contain at least  one
              group  or its value will be considered to be
              always empty.  Also, only the first match of
              regular expression is processed.

              The  first  group divides list of files into
              sub-groups, each of which is then sorted  by
              substrings  extracted  using  second regular
              expression and so on recursively.

              Example:
                set sortgroups=-(todo|done).*  this  would
              group  files with "-done" in their names and
              files with "-todo" separately.  On ascending
              sorting,   group  containing  "-done"  would
              appear before the other one.

       'sortorder'
              type: enumeration
              default: ascending
              Sets sort order for primary key:  ascending,
              descending.

       'statusline' 'stl'
              type: string
              default: ""
              Determines  the  content  of the status line
              (the line right above command-line).   Empty
              string  means use same format like in previ-
              ous versions.   Following  macros  are  sup-
              ported:

              - %t  -  file name (considering value of the
                'classify' option)

              - %T - symbolic link target (empty for other
                filetypes)

              - %f  - file name relative to current direc-
                tory (considers 'classify')

              - %A - file attributes (permissions on  *nix
                or properties on Windows)

              - %u  -  user  name  or uid (if it cannot be
                resolved)

              - %g - group name or gid (if  it  cannot  be
                resolved)

              - %s - file size in human readable format

              - %E - size of selected files in human read-
                able format, same as %s when no files  are
                selected,  except  that it will never show
                size of ../ in visual mode, since it  can-
                not be selected

              - %d   -   file   modification   date  (uses
                'timefmt' option)

              - %D - path of the other  pane  for  single-
                pane layout

              - %a  -  amount  of  free space available at
                current partition

              - %z - short tips/tricks/hints  that  chosen
                randomly after one minute period

              - %{<expr>}   -   evaluate   arbitrary  vifm
                expression '<expr>', e.g. '&sort'

              - %* - resets or applies one of User1..User9
                highlight groups; reset happens when width
                field is 0 or not specified, one of groups
                gets  picked  when  width  field is in the
                range from 1 to 9

              - all 'rulerformat' macros

              Percent sign can  be  followed  by  optional
              minimum field width.  Add '-' before minimum
              field width if you want field  to  be  right
              aligned.

              On  Windows file properties include the fol-
              lowing flags (upper case means flag is on):
               A - archive
               H - hidden
               I - content isn't indexed
               R - readonly
               S - system
               C - compressed
               D - directory
               E - encrypted
               P - reparse point (e.g. symbolic link)
               Z - sparse file

              Example without colors:

                set statusline="  %t%= %A  %10u:%-7g  %15s
              %20d %{&sort} "

              Example with colors:

               highlight User1 ctermbg=yellow
               highlight  User2 ctermbg=blue ctermfg=white
              cterm=bold
               set statusline="%1* %-26t %2* %= %1* %A %2*
              %7u:%-7g %1* %-5s %2* %d "


       'suggestoptions'
              type: string list
              default:
              Controls  when, for what and how suggestions
              are displayed.   The  following  values  are
              available:
               - normal          - in normal mode;
               - visual          - in visual mode;
               - view            - in view mode;
               -  otherpane       - use other pane to dis-
              play suggestions, when available;
               -  delay[:num]      -  display  suggestions
              after  a small delay (to do not annoy if you
              just want to type a fast shortcut consisting
              of  multiple  keys), num specifies the delay
              in ms  (500  by  default),  'timeoutlen'  at
              most;
               - keys            - include shortcuts (com-
              mands and selectors);
               - foldsubkeys     - fold multiple keys with
              common prefix;
               - marks           - include marks;
               -  registers[:num]  - include registers, at
              most num files (5 by default).

       'syncregs'
              type: string
              default:
              Specifies identifier of group  of  instances
              that  share  registers  between  each other.
              When several instances  of  vifm  have  this
              option set to identical value, they automat-
              ically synchronize contents of their  regis-
              ters on operations which use them.

       'syscalls'
              type: boolean
              default: false
              When  disabled,  vifm  will rely on external
              applications to perform  file-system  opera-
              tions,   otherwise  system  calls  are  used
              instead (much faster and  supports  progress
              tracking).   The option should eventually be
              removed.   Mostly  *nix-like   systems   are
              affected.

       'tablabel'
              type: string
              default: ""
              When  non-empty,  determines  format  of the
              main part of a single tab's label.

              When empty, tab label is set to  either  tab
              name  for  named tabs or to view title (usu-
              ally current path) for unnamed tabs.

              The  following  macros  can  appear  in  the
              format (see below for what a flag is):

              - %C      - flag of a current tab

              - %N      - number of the tab

              - %T      - flag of a tree mode

              - %c      - description of a custom view

              - %n      - name of the tab

              - %p       - path of the view (handles file-
                name modifiers)

              - %t      - title of the view  (affected  by
                'shortmess' flags)

              - %%      - literal percent sign

              - %[        -  designates  beginning  of  an
                optional block

              - %]      - designates end  of  an  optional
                block

              - %*, %0* - resets highlighting

              - %1-%9    -  applies  one  of  User1..User9
                highlight groups

              In global tabs the  view  in  bullets  above
              refers to currently active view of that tab.

              Flag  macros  are  a  special kind of macros
              that always expand to an empty value and are
              ment  to  be  used inside optional blocks to
              control their visibility.

              Optional blocks are ignored unless at  least
              one  macro  inside  of them is expanded to a
              non-empty value or is a set flag macro.

                " %[(%n)%]        -- optional name of  the
              tab
                "  %[              -- optional description
              of the view
                "   %[%T{tree}%]  -- mark of tree mode
                "   %[{%c}%]      -- description of custom
              view
                "   @             -- just an extra separa-
              tor before the path
                ' %]
                " %p:t            -- tail part  of  view's
              location
                set                                 tabla-
              bel=%[(%n)%]%[%[%T{tree}%]%[{%c}%]@%]%p:t

       'tabprefix'
              type: string
              default: "[%N:"
              Determines prefix of a tab's label.  Format-
              ting is done as for 'tablabel' option.

       'tabscope'
              type: enumeration
              default: global
              Picks  style  of  tabs, which defines what a
              single tab contains.  Possible values:
               - global - tab describes complete UI of two
              views and how they are arranged
               -  pane    - tab is located "inside" a pane
              and manages it and quick view

       'tabstop' 'ts'
              type: integer
              default: value from curses library
              Number of spaces that  a  Tab  in  the  file
              counts for.

       'tabsuffix'
              type: string
              default: "]"
              Determines suffix of a tab's label.  Format-
              ting is done as for 'tablabel' option.

       'timefmt'
              type: string
              default: "%m/%d %H:%M"
              Format of time in file  list.   See  "man  1
              date" or "man 3 strftime" for details.

       'timeoutlen' 'tm'
              type: integer
              default: 1000
              The  time in milliseconds that is waited for
              a mapped key in case of  already  typed  key
              sequence is ambiguous.

       'title'
              type: boolean
              default:  true  when  title can be restored,
              false otherwise
              When enabled, title of the terminal or  ter-
              minal   multiplexer's   window   is  updated
              according to current location.  Because  not
              all  terminals  support  setting title, this
              works only if `$TERM` value matches  one  of
              the following conditions:
               - equals "xterm" or starts with "xterm-"
               - equals "rxvt" or starts with "rxvt-"
               - equals "screen" or starts with "screen-"
               - equals "aterm"
               - equals "Eterm"

       'trash'
              type: boolean
              default: true
              Use  trash directory.  See "Trash directory"
              section below.

       'trashdir'
              type: string
              default: on *nix:
                 "%r/.vifm-Trash-%u,$VIFM/Trash,%r/.vifm-
              Trash"
                 or if $VIFM/Trash doesn't exist
                 "%r/.vifm-
              Trash-%u,$XDG_DATA_HOME/vifm/Trash,%r/.vifm-
              Trash"
                       on Windows:
                 "%r/.vifm-
              Trash,$XDG_DATA_HOME/vifm/Trash"
              List of trash directory path specifications,
              separated   with  commas.   Each  list  item
              either defines an  absolute  path  to  trash
              directory  or  a  path  relative  to a mount
              point root when  list  element  starts  with
              "%r/".   Value  of  the  option  can contain
              environment variables (of form  "$envname"),
              which  will  be  expanded  (prepend $ with a
              slash to  prevent  expansion).   Environment
              variables  are  expanded  when the option is
              set.

              On *nix, if element ends with "%u", the mark
              is  replaced  with  real user ID and permis-
              sions are set so that only that  only  owner
              is able to use it.
              Note  that even this setup is not completely
              secure when combined  with  "%r/"  and  it's
              overall  safer  to keep files in home direc-
              tory, but that implies cost of copying files
              between partitions.

              When  new  file gets cut (deleted) vifm tra-
              verses each element of  the  option  in  the
              order  of  their  appearance  and uses first
              trash directory that it was able  to  create
              or that is already writable.

              Default  value  tries to use trash directory
              per  mount   point   and   falls   back   to
              ~/.vifm/Trash on failure.

              Will  attempt  to create the directory if it
              does not exist.  See "Trash directory"  sec-
              tion below.

       'tuioptions' 'to'
              type: charset
              default: "psv"
              Each  flag  configures  some  aspect  of TUI
              appearance.  The flags are:
              p - when included:
                * file list inside a pane gets  additional
              single  character  padding on left and right
              sides;
                * quick view  and  view  mode  get  single
              character padding.
              s  -  when  included, left and right borders
              (side borders, hence "s" character) are vis-
              ible.
              u  - use Unicode characters in the TUI (Uni-
              code ellipsis instead of "...").
              v - vary width of middle border to  equalize
              view sizes.

       'undolevels' 'ul'
              type: integer
              default: 100
              Maximum   number  of  changes  that  can  be
              undone.  Note that here single  file  opera-
              tion  is used as a unit, not operation, i.e.
              deletion of 101 files  will  exceed  default
              limit.

       'vicmd'
              type: string
              default: "vim"
              Command  used  to edit files in various con-
              texts.  Ampersand sign at the  end  (regard-
              less  whether it's preceded by space or not)
              means backgrounding of command.

              Background flag is ignored in  certain  con-
              text where vifm waits for the editor to fin-
              ish.  Such contexts include any command that
              spawns  editor  to change list of file names
              or a command, with :rename being  one  exam-
              ple.  `-f` is also appended to prevent fork-
              ing in such cases, so the command  needs  to
              handle the flag.

              Additionally `+{num}` and `+'call cursor()'`
              arguments are used to position  cursor  when
              location is known.

       'viewcolumns'
              type: string
              default: ""
              scope: local
              Format  string containing list of columns in
              the view.  When this option is  empty,  view
              columns  to  show  are  chosen automatically
              using sorting keys (see 'sort') as  a  base.
              Value  of this option is ignored if 'lsview'
              is set.  See "Column view" section below for
              format description.

              An  example  of setting the options for both
              panes (note :windo command):

                windo              set               view-
              columns=-{name}..,6{size},11{perms}

       'vixcmd'
              type: string
              default: value of 'vicmd'
              Same  as  'vicmd', but takes precedence over
              it when running inside a graphical  environ-
              ment.

       'vifminfo'
              type: set
              default: bookmarks,bmarks
              Controls   what   will   be   saved  in  the
              $VIFM/vifminfo file.

                 bmarks    - named bookmarks  (see  :bmark
              command)
                 bookmarks  -  marks,  except special ones
              like '< and '>
                 tui       - state of the  user  interface
              (sorting, number of windows, quick
                             view state, active view)
                 dhistory  - directory history
                 state     - file name and dot filters and
              terminal multiplexers integration
                             state
                 cs        - primary color scheme
                 savedirs  - save last visited directory
                 chistory  - command line history
                 shistory   -  search  history  (/  and  ?
              commands)
                 phistory  - prompt history
                 fhistory   - history of local filter (see
              description of the "=" normal mode
                             command)
                 dirstack  -  directory  stack  overwrites
              previous stack, unless stack of
                             current instance is empty
                 registers - registers content
                 tabs      - global or pane tabs
                 options    -  all options that can be set
              with the :set command (obsolete)
                 filetypes - associated programs and view-
              ers (obsolete)
                 commands   -  user  defined commands (see
              :command description) (obsolete)

       'vimhelp'
              type: boolean
              default: false
              Use vim help format.

       'wildmenu' 'wmnu'
              type: boolean
              default: false
              Controls whether possible matches of comple-
              tion will be shown above the command line.

       'wildstyle'
              type: enumeration
              default: bar
              Picks presentation style of wild menu.  Pos-
              sible values:
               - bar   - one-line with left-to-right  cur-
              sor
               -  popup  -  multi-line  with top-to-bottom
              cursor

       'wordchars'
              type: string list
              default:  "1-8,14-31,33-255"  (that  is  all
              non-whitespace characters)
              Specifies  which  characters in command-line
              mode should be considered as part of a word.
              Value  of the option is comma-separated list
              of ranges.  If both  endpoints  of  a  range
              match, single endpoint is enough (e.g. "a" =
              "a-a").   Both  endpoints   are   inclusive.
              There are two accepted forms: character rep-
              resenting itself or number encoding  charac-
              ter  according  to  ASCII table.  In case of
              ambiguous characters  (dash,  comma,  digit)
              use  numeric  form.  Accepted characters are
              in the range from 0  to  255.   Any  Unicode
              character with code greater than 255 is con-
              sidered to be part of a word.

              The option affects Alt-D, Alt-B  and  Alt-F,
              but  not  Ctrl-W.   This is intentionally to
              allow two use cases:

               - Moving by WORDS and deletion by words.
               - Moving by words and deletion by WORDS.

              To get the latter use the following mapping:

                cnoremap <c-w> <a-b><a-d>

              Also used for abbreviations.

       'wrap' type: boolean
              default: true
              Controls whether to wrap text in quick view.

       'wrapscan' 'ws'
              type: boolean
              default: true
              Searches wrap around end of the list.

Mappings
       Map arguments

       LHS of mappings can be preceded by arguments  which
       take the form of special sequences:

       <silent>
              Postpone  UI updates until RHS is completely
              processed.

       <wait> In case of builtin mapping causing  conflict
              for   a   user-defined  mapping  (e.g.,  `t`
              builtin to  a  partially  typed  `ta`  user-
              defined mapping), ignore the builtin mapping
              and wait for input indefinitely  as  opposed
              to   default  behaviour  of  triggering  the
              builtin mapping after  a  delay  defined  by
              'timeoutlen'.  Example:

                nnoremap <wait> tw :set wrap!<cr>
                nnoremap <wait> tn :set number!<cr>
                nnoremap   <wait>   tr  :set  relativenum-
              ber!<cr>


       Special sequences

       Since it's not easy  to  enter  special  characters
       there  are  several  special  sequences that can be
       used in place of them.  They are:

       <cr>   Enter key.

       <esc>  Escape key.

       <space>
              Space key.

       <lt>   Less-than character (<).

       <nop>  provides a way to disable a mapping (by map-
              ping it to <nop>).

       <bs>   Backspace  key (see key conflict description
              below).

       <tab> <s-tab>
              Tabulation and Shift+Tabulation keys.

       <home> <end>
              Home/End.

       <left> <right> <up> <down>
              Arrow keys.

       <pageup> <pagedown>
              PageUp/PageDown.

       <del> <delete>
              Delete key.  <del> and <delete> mean differ-
              ent codes, but <delete> is more common.

       <insert>
              Insert key.

       <c-a>,<c-b>,...,<c-z>,<c-[>,<c->,<c-]>,<c-^>,<c-_>
              Control   +   some  key  (see  key  conflict
              description below).

       <c-@>  only for *nix
              Control + Space.

       <a-a>,<a-b>,...,<a-z>
              <m-a>,<m-b>,...,<m-z> Alt + some key.

       <a-c-a>,<a-c-b>,...,<a-c-z>
              <m-c-a>,<m-c-b>,...,<m-c-z> only for *nix
              Alt + Ctrl + some key.

       <f0> - <f63>
              Functional keys.

       <c-f1> - <c-f12>
              only for MS-Windows
              functional keys with Control key pressed.

       <a-f1> - <a-f12>
              only for MS-Windows
              functional keys with Alt key pressed.

       <s-f1> - <s-f12>
              only for MS-Windows
              functional keys with Shift key pressed.

       Note that due to the way  terminals  process  their
       input,  several  keyboard  keys  might be mapped to
       single key code, for example:

         - <cr> and <c-m>;

         - <tab> and <c-i>;

         - <c-h> and <bs>;

         - etc.

       Most of the time they are defined consistently  and
       don't  cause  surprises,  but  <c-h>  and  <bs> are
       treated  differently  in   different   environments
       (although  they  match  each  other  all the time),
       that's why they correspond  to  different  keys  in
       vifm.   As  a consequence, if you map <c-h> or <bs>
       be sure to repeat the mapping with the other one so
       that  it works in all environments.  Alternatively,
       provide your mapping in one form and add one of the
       following:

         " if mappings with <c-h> in the LHS work
         map <c-h> <bs>
         " if mappings with <bs> in the LHS work
         map <bs> <c-h>

       Whitespace

       vifm removes whitespace characters at the beginning
       and end of commands.  That's why you  may  want  to
       use  <space>  at  the  end of rhs in mappings.  For
       example:

         cmap <f1> man<space>

       will put "man " in line when you hit the  <f1>  key
       in the command line mode.

Expression syntax
       Supported expressions is a subset of what VimL pro-
       vides.

       Expression syntax summary, from least to most  sig-
       nificant:

       expr1      expr2
                  expr2 || expr2 ..       logical OR

       expr2      expr3
                  expr3 && expr3 ..       logical AND

       expr3      expr4
                  expr4 == expr4          equal
                  expr4 != expr4          not equal
                  expr4 >  expr4          greater than
                  expr4  >= expr4          greater than or
       equal
                  expr4 <  expr4          smaller than
                  expr4 <= expr4          smaller than  or
       equal

       expr4      expr5
                  expr5 + expr5 ..        number addition
                  expr5  - expr5 ..        number subtrac-
       tion

       expr5      expr6
                  expr6 . expr6 ..        string  concate-
       nation

       expr6      expr7
                  - expr6                 unary minus
                  + expr6                 unary plus
                  ! expr6                 logical NOT

       expr7      number                  number constant
                  "string"                string constant,
       \ is special
                  'string'                string constant,
       ' is doubled
                  &option                 option value
                  $VAR                         environment
       variable
                  v:var                   builtin variable
                  function(expr1, ...)    function call
                  (expr1)                  nested  expres-
       sion

       ".."  indicates  that  the operations in this level
       can be concatenated.

       expr1
       -----
       expr2 || expr2

       Arguments are converted to numbers  before  evalua-
       tion.

       Result  is non-zero if at least one of arguments is
       non-zero.

       It's right associative and  with  short-circuiting,
       so sub-expressions are evaluated from left to right
       until result  of  whole  expression  is  determined
       (i.e.,  until first non-zero) or end of the expres-
       sion.

       expr2
       -----
       expr3 && expr3

       Arguments are converted to numbers  before  evalua-
       tion.

       Result  is non-zero only if both arguments are non-
       zero.

       It's right associative and  with  short-circuiting,
       so sub-expressions are evaluated from left to right
       until result  of  whole  expression  is  determined
       (i.e., until first zero) or end of the expression.

       expr3
       -----
       expr4 {cmp} expr4

       Compare  two expr4 expressions, resulting in a 0 if
       it evaluates to false or 1 if it evaluates to true.

       equal                   ==
       not equal               !=
       greater than            >
       greater than or equal   >=
       smaller than            <
       smaller than or equal   <=

       Examples:

         'a' ==  'a'         == 1
         'a' >   'b'         == 1
         'a' ==  'b'         == 0
         '2' >   'b'         == 0
          2  >   'b'         == 1
          2  >   '1b'        == 1
          2  >   '9b'        == 0
         -1  == -'1'         == 1
          0  ==  '--1'       == 1

       expr4
       -----
       expr5 + expr5 ..     number addition expr5 -  expr5
       ..     number subtraction

       Examples:

         1 + 3 - 3          == 1
         1 + '2'            == 3

       expr5
       -----
       expr6 . expr6 ..     string concatenation

       Examples:

         'a' . 'b'           == 'ab'
         'aaa' . '' . 'c'    == 'aaac'

       expr6
       -----

       - expr6              unary minus
       + expr6              unary plus
       ! expr6              logical NOT

       For '-' the sign of the number is changed.
       For '+' the number is unchanged.
       For '!' non-zero becomes zero, zero becomes one.

       A String will be converted to a Number first.

       These  operations can be repeated and mixed.  Exam-
       ples:

          --9                == 9
         ---9                == -9
          -+9                == 9
          !-9                == 0
          !''                == 1
         !'x'                == 0
          !!9                == 1

       expr7
       -----

       number               number constant
       -----

       Decimal number.  Examples:

         0                   == 0
         0000                == 0
         01                  == 1
         123                 == 123
         10000               == 10000

       string
       ------
       "string"             string constant

       Note that double quotes are used.

       A string constant accepts these special characters:
         \b      backspace <bs>
         \e      escape <esc>
         \n      newline
         \r      return <cr>
         \t      tab <tab>
         \\      backslash
         \"      double quote

       Examples:

         "\"Hello,\tWorld!\""
         "Hi,\nthere!"

       literal-string
       --------------
       'string'             string constant

       Note that single quotes are used.

       This string is taken as it is.  No backslashes  are
       removed or have a special meaning.  The only excep-
       tion is that two quotes stand for one quote.

       Examples:

         'All\slashes\are\saved.'
         'This  string  contains  doubled  single   quotes
       ''here'''

       option
       ------
       &option                option  value  (local one is
       preferred, if exists) &g:option              global
       option  value  &l:option              local  option
       value

       Examples:

         echo 'Terminal size: '.&columns.'x'.&lines
         if &columns > 100

       Any valid option name can be used here  (note  that
       "all" in ":set all" is a pseudo option).  See ":set
       options" section above.

       environment variable
       --------------------
       $VAR                  environment variable

       The String value of any environment variable.  When
       it is not defined, the result is an empty string.

       Examples:

         'This is my $PATH env: ' . $PATH
         'vifmrc at ' . $MYVIFMRC . ' is used.'

       builtin variable
       --------------------
       v:var                 builtin variable

       Information exposed by vifm for use in scripting.

       v:count
         count  passed to : command, 0 by default.  Can be
       used in mappings to passthe count  to  a  different
       command.
       v:count1
         same as v:count, but 1 by default.
       v:jobcount
         number  of  active  jobs  (as  can be seen in the
       :jobs menu).
       v:session
         name of the current session or empty string.
       v:servername
         See below.

       function call
       -------------
       function(expr1, ...)  function call

       See "Functions" section below.

       Examples:

         "'" . filetype('.') . "'"
         filetype('.') == 'reg'

       expression nesting
       ------------------
       (expr1)               nested expression

       Groups any other expression of arbitrary complexity
       enforcing order in which operators are applied.


Functions
       USAGE                 RESULT      DESCRIPTION

       chooseopt({opt})       String       Queries  choose
       parameters passed on startup.
       executable({expr})     Integer      Checks  whether
       {expr} command available.
       expand({expr})         String       Expands special
       keywords in {expr}.
       extcached({cache}, {path}, {extcmd})
                             String      Caches output  of
       {extcmd} per {cache} and
                                         {path}   combina-
       tion.
       filetype({fnum} [, {resolve}])
                             String      Returns file type
       from position.
       fnameescape({expr})    String       Escapes  {expr}
       for use in a :command.
       getpanetype()         String      Returns  type  of
       current pane.
       has({property})        Integer      Checks  whether
       instance has {property}.
       layoutis({type})       Integer      Checks  whether
       layout is of type {type}.
       paneisat({loc})        Integer      Checks  whether
       current pane is at {loc}.
       system({command})      String       Executes  shell
       command and returns its output.
       tabpagenr([{arg}])    Integer     Returns number of
       current or last tab.
       term({command})        String       Like  system(),
       but for interactive commands.

       chooseopt({opt})

       Retrieves  values of options related to file choos-
       ing.  {opt} can be one of:
           files      returns argument  of  --choose-files
       or empty string
           dir         returns argument of --choose-dir or
       empty string
           cmd        returns argument of  --on-choose  or
       empty string
           delimiter   returns  argument of --delimiter or
       the default one (\n)

       executable({expr})

       If {expr} is  absolute  or  relative  path,  checks
       whether  path  destination  exists and refers to an
       executable, otherwise checks whether command  named
       {expr}  is  present in directories listed in $PATH.
       Checks for various executable  extensions  on  Win-
       dows.   Returns  boolean value describing result of
       the check.

       Example:

         " use custom default viewer script if it's avail-
       able and installed
         "  in  predefined system directory, otherwise try
       to find it elsewhere
         if executable('/usr/local/bin/defviewer')
             fileview * /usr/local/bin/defviewer %c
         else
             if executable('defviewer')
                 fileview * defviewer %c
             endif
         endif

       expand({expr})

       Expands environment variables and macros in  {expr}
       just  like  it's  done  for  command-line commands.
       Returns a string.   See  "Command  macros"  section
       above.

       Examples:

         " percent sign
         :echo expand('%%')
         "  the  last  part of directory name of the other
       pane
         :echo expand('%D:t')
         " $PATH  environment  variable  (same  as  `:echo
       $PATH`)
         :echo expand('$PATH')

       extcached({cache}, {path}, {extcmd})

       Caches value of {extcmd} external command automati-
       cally updating it as necessary based on  monitoring
       change  date of a {path}.  The cache is invalidated
       when file or its meta-data is  updated.   A  single
       path can have multiple caches associated with it.

       {path}  value  is normalized, but symbolic links in
       it aren't resolved.

       Example:

         " display number and size of blocks actually used
       by a file or directory
         set statusline+=" Uses: %{ extcached('uses',
                                             expand('%c'),
                                             expand('stat
       --format=%%bx%%B %c')) }"

       filetype({fnum} [, {resolve}])

       The result is a string, which represents file  type
       and is one of the list:
           exe     executables
           reg     regular files
           link    symbolic links
           broken   broken  symbolic  links  (appears only
       when resolving)
           dir     directories
           char    character devices
           block   block devices
           fifo    pipes
           sock    *nix domain sockets
           ?       unknown file type (should not  normally
       happen) or
                   non-file   (pseudo-entries  in  compare
       view)

       The result can also be an empty string in  case  of
       invalid argument.

       Parameter {fnum} can have following values:
           -  '.'  to get type of file under the cursor in
       the active pane
           - numerical value base 1 to get type of file on
       specified line number

       Optional  parameter {resolve} is treated as a bool-
       ean and specifies whether symbolic links should  be
       resolved.

       fnameescape({expr})

       Escapes parameter to make it suitable for use as an
       argument of a :command.  List of escaped characters
       includes %, which is doubled.

       Usage example:

         " navigate to most recently modified file in cur-
       rent directory
         execute 'goto' fnameescape(system('ls -t  |  head
       -1'))

       getpanetype()

       Retrieves  string  describing type of current pane.
       Possible return values:
           regular       regular  file  listing  of   some
       directory
           custom       custom file list (%u)
           very-custom  very custom file list (%U)
           tree         tree view

       has({property})

       Allows  examining  internal parameters from scripts
       to e.g. figure out environment in which application
       is running.  Returns 1 if property is true/present,
       otherwise 0 is returned.  Currently  the  following
       properties  are supported (anything else will yield
       0):
           unix  runs in *nix-like environment  (including
       Cygwin)
           win   runs on Windows

       Usage example:

         " skip user/group on Windows
         if !has('win')
             let $RIGHTS = '%10u:%-7g '
         endif

         execute     'set'    'statusline="     %t%=    %A
       '.$RIGHTS.'%15E %20d  "'

       layoutis({type})

       Checks whether current interface layout  is  {type}
       or not, where {type} can be:
           only    single-pane mode
           split    double-pane  mode  (either vertical or
       horizontal split)
           vsplit  vertical split (left and right panes)
           hsplit  horizontal split (top and bottom panes)

       Usage example:

         " automatically split vertically before  enabling
       preview
         :nnoremap w :if layoutis('only') | vsplit | endif
       | view!<cr>

       paneisat({loc})

       Checks whether position of active pane  in  current
       layout matches one of the following locations:
           top     pane reaches top border
           bottom  pane reaches bottom border
           left    pane reaches left border
           right   pane reaches right border

       system({command})

       Runs  the  command  in shell and returns its output
       (joined  standard   output   and   standard   error
       streams).   All  trailing  newline  characters  are
       stripped to allow easy appending to command output.
       Ctrl-C should interrupt the command.

       Use  this  function  to  consume output of external
       commands that don't require  user  interaction  and
       term()  for  interactive  commands that make use of
       terminal and are capable of handling  stream  redi-
       rection.

       Usage example:

         " command to enter .git/ directory of git-reposi-
       tory (when ran inside one)
         command!  cdgit  :execute  'cd'  fnameescape(sys-
       tem('git rev-parse --git-dir'))

       tabpagenr([{arg}])

       When  called  without  arguments  returns number of
       current tab page base one.

       When called with "$" as an argument returns  number
       of the last tab page base one, which is the same as
       number of tabs.

       term({command})

       Same as system() function, but  user  interface  is
       shutdown during the execution of the command, which
       makes sure that external  interactive  applications
       won't affect the way terminal is used by vifm.

       Usage example:

         "  command  to change directory by picking it via
       fzf
         command! fzfcd :execute 'cd'
                                fnameescape(term('find
       -type d | fzf 2> /dev/tty'))

Menus and dialogs
       When navigating to some path from a menu there is a
       difference in end  location  depending  on  whether
       path  has  trailing  slash  or not.  Files normally
       don't have trailing slashes so "file/"  won't  work
       and one can only navigate to a file anyway.  On the
       other hand with directories there are two  options:
       navigate  to a directory or inside of it.  To allow
       both use cases, the first one is used on paths like
       "dir" and the second one for "dir/".

       Commands

       :range navigate to a menu line.

       :exi[t][!] :q[uit][!] :x[it][!]
              leave menu mode.

       :noh[lsearch]
              reset search match highlighting.

       :w[rite] {dest}
              write  all menu lines into file specified by
              {dest}.

       General

       j, Ctrl-N - move down.
       k, Ctrl-P - move up.
       Enter, l - select and exit the menu.
       Ctrl-L - redraw the menu.

       Escape, Ctrl-C, ZZ, ZQ, q - quit.

       In all menus

       The following set of keys has the same  meaning  as
       in normal mode.

       Ctrl-B, Ctrl-F
       Ctrl-D, Ctrl-U
       Ctrl-E, Ctrl-Y
       /, ?
       n, N
       [count]G, [count]gg
       H, M, L
       zb, zt, zz

       zh  -  scroll  menu items [count] characters to the
       right.
       zl - scroll menu items [count]  characters  to  the
       left.
       zH - scroll menu items half of screen width charac-
       ters to the right.
       zL - scroll menu items half of screen width charac-
       ters to the left.

       :  -  enter  command line mode for menus (currently
       only :exi[t], :q[uit], :x[it] and :{range} are sup-
       ported).

       b  - interpret content of the menu as list of paths
       and use it to create custom view in place of previ-
       ously  active  pane.   See  "Custom  views" section
       below.
       B - same as above, but creates unsorted view.

       v - load menu content into  quickfix  list  of  the
       editor  (Vim  compatible  by assumption) or if list
       doesn't have separators after file  names  (colons)
       open each line as a file name.


       Below  is  description  of  additional commands and
       reaction on selection in some menus and dialogs.

       Apropos menu

       Selecting menu item runs  man  on  a  given  topic.
       Menu  won't  be  closed automatically to allow view
       several pages one by one.

       Command-line mode abbreviations menu

       Type dd on an abbreviation to remove it.

       c leaves menu preserving file selection and inserts
       right-hand  side  of selected command into command-
       line.

       Color scheme menu

       Selecting name of a color  scheme  applies  it  the
       same  way  as if ":colorscheme <name>" was executed
       on the command-line.

       Commands menu

       Selecting command executes it with empty  arguments
       (%a).

       dd on a command to remove.

       Marks menu

       Selecting mark navigates to it.

       dd on a mark to remove it.

       Bookmarks menu

       Selecting a bookmark navigates to it.

       Type dd on a bookmark to remove it.

       gf  and  e  also work to make it more convenient to
       bookmark files.

       Trash (:lstrash) menu

       r on a file name to restore it from trash.

       dd deletes file under the cursor.

       Trashes (:trashes) menu

       dd empties selected trash in background.

       Directory history and Trashes menus

       Selecting directory name will change  directory  of
       the current view as if :cd command was used.

       Directory stack menu

       Selecting  directory  name will rotate stack to put
       selected directory pair at the top of the stack.

       File (:file) menu

       Commands from vifmrc or typed in  command-line  are
       displayed  above  empty  line.   All commands below
       empty line are from .desktop files.

       c leaves menu preserving file selection and inserts
       command after :! in command-line mode.

       Grep,  find,  locate,  bookmarks and user menu with
       navigation (%M macro)

       gf - navigate previously active view  to  currently
       selected  item.   Leaves  menu mode except for grep
       menu.  Pressing Enter key has the same effect.

       e - open selected path in the editor, stays in menu
       mode.

       c - leave menu preserving file selection and insert
       file name after :! in command-line mode.

       User menu without navigation (%m macro)

       c leaves menu preserving file selection and inserts
       whole line after :! in command-line mode.

       Grep menu

       Selecting  file  (via  Enter  or l key) opens it in
       editor set by 'vicmd' at given line  number.   Menu
       won't be closed automatically to allow viewing more
       than one result.

       See above for "gf" and "e" keys description.

       Command-line history menu

       Selecting an item executes it as command-line  com-
       mand, search query or local filter.

       c leaves menu preserving file selection and inserts
       line into command-line of appropriate kind.

       Volumes menu

       Selecting a drive navigates previously active  pane
       to the root of that drive.

       Fileinfo dialog

       Enter, q - close dialog

       Sort dialog

       h, Space - switch ascending/descending.
       q - close dialog

       One shortcut per sorting key (see the dialog).

       Attributes (permissions or properties) dialog

       h, Space - check/uncheck.
       q - close dialog

       Item states:

       - * - checked flag.

       - X  -  means that it has different value for files
         in selection.

       - d (*nix only) - (only for  execute  flags)  means
         u-x+X, g-x+X or o-x+X argument for the chmod pro-
         gram.  If you're not on OS X and want  to  remove
         execute  permission  bit from all files, but pre-
         serve it for directories, set all  execute  flags
         to 'd' and check 'Set Recursively' flag.

       Jobs menu

       dd  requests cancellation of job under cursor.  The
       job won't be removed from the list, but  marked  as
       being  cancelled  (if cancellation was successfully
       requested).  A message will pop up if the  job  has
       already  stopped.   Note that on Windows cancelling
       external programs like this might not work, because
       their parent shell doesn't have any windows.

       e  key  displays errors of selected job if any were
       collected.  They are displayed in a new  menu,  but
       you can get back to jobs menu by pressing h.


       Undolist menu

       r - reset undo position to group under the cursor.


       Media menu

       Selecting  a  device  either  mounts  (if it wasn't
       mounted yet) or navigates to its first mount point.

       Selecting a mount point navigates to it.

       Selecting "not mounted" line causes mounting.

       Selecting any other line does nothing.

       r - reload the list.

       m - mount/unmount device (cursor  should  be  posi-
       tioned on lines under device information).

       [ - put cursor on the previous device.

       ] - put cursor on the next device.


Custom views
       Definition

       Normally  file  views  contain list of files from a
       single directory, but sometimes it's useful to pop-
       ulate them with list of files that do not belong to
       the same directory, which is what custom views  are
       for.

       Presentation

       Custom  views  are  still related to directory they
       were in before custom list  was  loaded.   Path  to
       that  directory (original directory) can be seen in
       the title of a custom view.

       Files in same directory have to  be  named  differ-
       ently, this doesn't hold for custom views thus see-
       ing just file names might be rather confusing.   In
       order  to  give  an  idea where files come from and
       when possible, relative paths to original directory
       of  the  view  is displayed, otherwise full path is
       used instead.

       Custom views normally don't contain any  inexistent
       files.

       Navigation

       Custom views have some differences related to navi-
       gation in regular views.

       gf - acts similar to gf on symbolic links and navi-
       gates to the file at its real
            location.

       h  -  go to closes parent node in tree view, other-
       wise return to the original directory.

       gh - return to the original directory.

       Opening ".." entry also causes return to the origi-
       nal directory.

       History

       Custom  list  exists  only while it's visible, once
       left one can't return to it, so there is no appear-
       ances of it in any history.

       Filters

       Only  local  filter  affects  content  of the view.
       This is intentional, presumably if one loads  list,
       precisely that list should be displayed (except for
       inexistent paths, which are ignored).

       Search

       Although directory names are  visible  in  listing,
       they are not searchable.  Only file names are taken
       into account (might be changed in future, searching
       whole lines seems quite reasonable).

       Sorting

       Contrary  to  search sorting by name works on whole
       visible part of file path.

       Highlight

       Whole file name is highlighted as one entity,  even
       if there are directory elements.

       Updates

       Reloads  can  occur,  though they are not automatic
       due  to  files  being  scattered  among   different
       places.   On a reload, inexistent files are removed
       and meta-data of all other files is updated.

       Once custom view forgets about the file,  it  won't
       add  it  back  even  if it's created again.  So not
       seeing file previously affected  by  an  operation,
       which was undone is normal.

       Operations

       All  operations  that  add  files are forbidden for
       custom views.  For example,  moving/copying/putting
       files  into  a custom view doesn't work, because it
       doesn't make much sense.

       On the other hand, operations that use files  of  a
       custom  view  as  a  source (e.g. yanking, copying,
       moving file from custom view, deletion) and  opera-
       tions that modify names are all allowed.

Compare views
       Kinds

       :compare can produce four different results depend-
       ing on arguments:
        - single compare view (ofone and either listall or
       listdups);
        - single custom view (ofone and listunique);
        -  two compare views (ofboth and either listall or
       listdups);
        - two custom views (ofboth and listunique).

       The first two display  files  of  one  file  system
       tree.  Here duplicates are files that have at least
       one copy in the same tree.  The other two kinds  of
       operation  compare  two  trees, in which duplicates
       are files that are found in both trees.

       Lists of unique files are presented in custom views
       because  there  is  no file grouping to preserve as
       all file ids are guaranteed to be distinct.

       Creation

       Arguments passed to :compare form  four  categories
       each  with  its  own  prefix and is responsible for
       particular property of operation.

       Which files to compare:
        - ofboth - compares files  of  two  panes  against
       each other;
        - ofone  - compares files of the same directory.

       How files are compared:
        - byname     - by their name only;
        - bysize     - only by their size;
        -  bycontents  - by data they contain (combination
       of size and hash of small chunk of contents is used
       as  first  approximation,  so  don't worry too much
       about large files).

       Which files to display:
        - listall    - all files;
        - listunique - unique files only;
        - listdups   - only duplicated files.

       How results are grouped (has no effect  if  "ofone"
       specified):
        -  groupids    -  files  considered  identical are
       always adjacent in output;
        - grouppaths - file system ordering  is  preferred
       (this  also  enables  displaying  identically named
       files as mismatches).

       Which files to omit:
        - skipempty - ignore empty files.

       Each argument can appear multiple times, the right-
       most  one  of  the  group is considered.  Arguments
       alter default behaviour instead of substituting it.

       Examples

       The defaults corresponds to probably the most  com-
       mon  use  case of comparing files in two trees with
       grouping by paths, so the following are equivalent:

         :compare
         :compare bycontents grouppaths
         :compare bycontents listall ofboth grouppaths

       Another use case is to find duplicates in the  cur-
       rent sub-tree:

         :compare listdups ofone

       The  following  command lists files that are unique
       to each pane:

         :compare listunique

       Look

       The view can't  switch  to  ls-like  view  as  it's
       unable to display diff-like data.

       Comparison  views  have second column displaying id
       of the file, files with same id are  considered  to
       be equal.  The view columns configuration is prede-
       fined.

       Behaviour

       When two views  are  being  compared  against  each
       other  the  following changes to the regular behav-
       iour apply:
        - views are scrolled synchronously (as if 'scroll-
       bind' was set);
        - views' cursors are synchronized;
        -   local   filtering  is  disabled  (its  results
       wouldn't be meaningful);
        - zd excludes groups of adjacent identical  files,
       1zd gives usual behaviour;
        -  sorting  is  permanently  disabled (ordering is
       fixed);
        - removed files hide their counter pairs;
        - exiting one of the views  terminates  the  other
       immediately;
        -  renaming  files  isn't blocked, but isn't taken
       into account and might require regeneration of com-
       parison;
        -  entries  which  indicate  absence of equivalent
       file have empty names and can be matched as such;
        - when unique files of both views are listed  cus-
       tom  views  can  be  empty,  this absence of unique
       files is stated clearly.

       One compare view has similar properties (those that
       are applicable for single pane).

       Files are gathered in this way:
        -  recursively starting at current location of the
       view;
        - dot files are excluded if view hides them at the
       moment of comparison;
        - directories are not taken into account;
        - symbolic links to directories are ignored.

Startup
       On  startup  vifm determines several variables that
       are used during execution.  They are determined  in
       the order they appear below.

       On  *nix systems $HOME is normally present and used
       as is.  On Windows systems vifm tries to find  cor-
       rect home directory in the following order:
        - $HOME variable;
        - $USERPROFILE variable (on Windows only);
        -  a combination of $HOMEDRIVE and $HOMEPATH vari-
       ables (on Windows only).

       vifm tries to find correct configuration  directory
       by checking the following places:
        - $VIFM variable;
        - parent directory of the executable file (on Win-
       dows only);
        - $HOME/.vifm directory;
        - $APPDATA/Vifm directory (on Windows only);
        - $XDG_CONFIG_HOME/vifm directory;
        - $HOME/.config/vifm directory.

       vifm tries to find correct  configuration  file  by
       checking the following places:
        - $MYVIFMRC variable;
        -  vifmrc  in  parent  directory of the executable
       file (on Windows only);
        - $VIFM/vifmrc file.

Configure
       See "Startup" section above for the explanations on
       $VIFM and $MYVIFMRC.

       The vifmrc file contains commands that will be exe-
       cuted on vifm startup.  There are two  such  files:
       global   and   local.    Global  one  is  at  {pre-
       fix}/etc/vifm/vifmrc,   see   $MYVIFMRC    variable
       description  for  the search algorithm used to find
       local vifmrc.  Global vifmrc is loaded  before  the
       local  one, so that the later one can redefine any-
       thing configured globally.

       Use vifmrc to  set  settings,  mappings,  filetypes
       etc.   To use multi line commands precede each next
       line with  a  slash  (whitespace  before  slash  is
       ignored, but all spaces at the end of the lines are
       saved).  For example:

         set
             \smartcase

       equals "setsmartcase".  When

         set<space here>
             \ smartcase

       equals "set  smartcase".

       The $VIFM/vifminfo file contains generic  state  of
       the application.  You can control what is stored in
       vifminfo by setting 'vifminfo' option.  Vifm always
       writes  this  file on exit unless 'vifminfo' option
       is empty.  Marks, bookmarks,  commands,  histories,
       filetypes,  fileviewers  and  registers in the file
       are merged with vifm configuration (which has  big-
       ger priority).

       Generally,  runtime configuration has bigger prior-
       ity during merging, but there are some exceptions:

         - directory stack stored in the file is not over-
           written  unless  something  is  changed in vifm
           instance that performs merge;

         - each mark or bookmark is marked  with  a  time-
           stamp,  so  that newer value is not overwritten
           by older one, thus  no  matter  from  where  it
           comes, the newer one wins;

         - all  histories  are  marked  with timestamps on
           storing, this means that last instance to  quit
           puts its elements on top of the list;

         - tabs  are  merged only if both current instance
           and stored state contain exactly one tab of any
           kind.

       The   $VIFM/scripts  directory  can  contain  shell
       scripts.  vifm modifies its PATH environment  vari-
       able to let user run those scripts without specify-
       ing  full  path.    All   subdirectories   of   the
       $VIFM/scripts will be added to PATH too.  Script in
       a subdirectory overlaps script with the  same  name
       in all its parent directories.

       The   $VIFM/colors/  and  {prefix}/etc/vifm/colors/
       directories contain color schemes.  Available color
       schemes are searched in that order, so on name con-
       flict the one in $VIFM/colors/ wins.

       Each color scheme should  have  ".vifm"  extension.
       This wasn't the case before and for this reason the
       following rules apply during lookup:

         - if there is no file with .vifm  extension,  all
           regular files are listed;

         - otherwise  only  files with .vifm extension are
           listed (with the extension being truncated).

Sessions
       Sessions provide a way to have multiple  persistent
       runtime  configurations.   Think of them as second-
       level vifminfo files in addition to the first-level
       one  used  by  all  sessions.  In other words, they
       aren't a replacement for vifminfo file that  exists
       without  sessions,  but an addition to it.  One can
       empty 'vifminfo' option and  rely  solely  on  ses-
       sions, but in practice one might want to share some
       state among instances in different sessions or have
       an  "out-of-sessions"  state  for  tasks that don't
       deserve a session of their own.

       This leads to a two-level structure where  data  in
       session  files  has  higher  priority  than data in
       vifminfo files (where this makes  sense)  following
       the same rules that merging of vifminfo file obeys.
       In addition to that,  history  items  from  session
       files  are  never ordered before history items from
       vifminfo file.

       Format

       Sessions have the format of vifminfo files, they do
       not  consist  of  sequence of command-line commands
       and are not meant to be sourced  via  :source  com-
       mand.

       Storage and naming

       `$VIFM/sessions/` directory serves as a storage for
       sessions.  Consequently names should be valid file-
       names.   The structure of the storage is flat mean-
       ing that there are no  subdirectories,  that's  why
       names of sessions can't contain slashes.

       Usage model

       Contrary to Vim, vifm automates basic management of
       sessions.  You can start, switch, stop or delete  a
       session using builtin means.

       Current  session is saved at the same time vifminfo
       is saved (on normal exits or explicitly  on  :write
       command) and right before switching to another ses-
       sion.  To avoid saving in those cases use  :session
       command  to  detach (without saving) from a session
       before proceeding.

       Related topics

       Commands: :session, :delsession
       Options: 'sessionoptions'
       Variables: v:session

Automatic FUSE mounts
       vifm has a builtin support of automated  FUSE  file
       system  mounts.  It is implemented using file asso-
       ciations mechanism.  To  enable  automated  mounts,
       one needs to use a specially formatted program line
       in filetype or filextype commands.  These use  spe-
       cial  macros,  which differ from macros in commands
       unrelated to FUSE.   Currently  three  formats  are
       supported:

       1)  FUSE_MOUNT  This  format should be used in case
       when all information needed for mounting all  files
       of a particular type is the same.  E.g. mounting of
       tar files don't require any file specific options.

       Format line:
         FUSE_MOUNT|mounter %SOURCE_FILE  %DESTINATION_DIR
       [%FOREGROUND]

       Example filetype command:

         :filetype  FUSE_MOUNT|fuse-zip %SOURCE_FILE %DES-
       TINATION_DIR

       2) FUSE_MOUNT2 This format allows one to  use  spe-
       cially  formatted  files to perform mounting and is
       useful for mounting  remotes,  for  example  remote
       file systems over ftp or ssh.

       Format line:
         FUSE_MOUNT2|mounter    %PARAM    %DESTINATION_DIR
       [%FOREGROUND]

       Example filetype command:

         :filetype *.ssh FUSE_MOUNT2|sshfs %PARAM  %DESTI-
       NATION_DIR

       Example file content:

         root@127.0.0.1:/

       3) FUSE_MOUNT3

       This  format is equivalent to FUSE_MOUNT, but omits
       unmounting.  It is useful for cases, when  unmount-
       ing isn't needed, like when using AVFS.

       Example :filetype command:

         :filetype
       *.tar,*.tar.bz2,*.tbz2,*.tgz,*.tar.gz,*.tar.xz,*.txz,*.deb
              \ {Mount with avfs}
              \   FUSE_MOUNT3|mount-avfs  %DESTINATION_DIR
       %SOURCE_FILE

       Example `mount-avfs` helper script:

         #!/bin/sh

         dest=$1
         file=$2

         rmdir "$dest"
         ln -s "$HOME/.avfs$file#/" "$dest"

       All % macros are expanded by vifm  at  runtime  and
       have the following meaning:
         -  %SOURCE_FILE  is  replaced  by  full  path  to
       selected file;
         - %DESTINATION_DIR is replaced by  full  path  to
       mount directory, which is created by vifm basing on
       the value of 'fusehome' option;
         - %PARAM value is filled from the first  line  of
       file  (whole  line), though in the future it can be
       changed to whole file content;
         - %FOREGROUND means that you want  to  run  mount
       command  as  a regular command (required to be able
       to provide input for communication with mounter  in
       interactive way).

       %FOREGROUND is an optional macro.  Other macros are
       not mandatory, but mount commands likely won't work
       without them.

       %CLEAR  is  obsolete  name of %FOREGROUND, which is
       still supported, but might be  removed  in  future.
       Its use is discouraged.

       Unlike  macros elsewhere, these are recognized only
       if they appear at the end of a command or are  fol-
       lowed  by  a  space.   There  is no way to escape %
       either.  These are  historical  limitations,  which
       might be addressed in the future.

       The mounted FUSE file systems will be automatically
       unmounted in two cases:

         - when vifm quits (with  ZZ,  :q,  etc.  or  when
           killed by signal);

         - when  you explicitly leave mount point going up
           to its parent directory (with h, Enter on "../"
           or  ":cd ..") and other pane is not in the same
           directory or its child directories.

View look
       vifm supports displaying of file list view  in  two
       different ways:

         - in  a  table mode, when multiple columns can be
           set using  'viewcolumns'  option  (see  "Column
           view" section below for details);

         - in a multicolumn list manner which looks almost
           like `ls -x` command output (see "ls-like view"
           section below for details).

       The  look  is local for each view and can be chosen
       by changing value of the 'lsview' boolean option.

       Depending on view look some of  keys  change  their
       meaning  to allow more natural cursor moving.  This
       concerns mainly h, j, k, l and other similar  navi-
       gation keys.

       Also  some  of options can be ignored if they don't
       affect  view  displaying  in  selected  look.   For
       example  value  of  'viewcolumns'  when 'lsview' is
       set.

ls-like view
       When this view look is enabled by setting  'lsview'
       option on, vifm will display files in multiple col-
       umns.  Number of columns depends on the  length  of
       the  longest file name present in current directory
       of the view.   Whole  file  list  is  automatically
       reflowed  on  directory  change,  terminal  or view
       resize.

       View looks close to output of `ls -x`  command,  so
       files are listed left to right in rows.

       In  this  mode  file manipulation commands (e.g. d)
       don't work line-wise like they  do  in  Vim,  since
       such  operations would be uncommon for file manipu-
       lation tasks.  Thus, for example,  dd  will  remove
       only current file.

       By default the view is filled by lines, 'lsoptions'
       can be used to get filling by columns.

       Note that tree-view and compare  view  inhibit  ls-
       like view.

Column view
       View  columns  are  described  by a comma-separated
       list of column descriptions, each of which has  the
       following format
           [  '-'  ]  [ fw ( [ '.' tw ] | '%' ) ] '{' type
       '}' '.'{0,3}
       where fw stands for full width and  tw  stands  for
       text width.

       So it basically consists of four parts:
        1. Optional alignment specifier
        2. Optional width specifier
        3. Mandatory column name
        4. Optional cropping specifier

       Alignment specifier

       It's  an  optional  minus  or  asterisk sign as the
       first symbol of the string.

       Specifies type of text alignment within  a  column.
       Three types are supported:

       - left align

           set viewcolumns=-{name}

       - right align (default)

           set viewcolumns={name}

       - dynamic align

         It's  like  left  alignment, but when the text is
         bigger than the column, the alignment is made  at
         the  right  (so  the  part of the field is always
         visible).

           set viewcolumns=*{name}

       Width specifier

       It's a number followed by a percent sign, two  num-
       bers  (second  one  should be less than or equal to
       the first one) separated with a  dot  or  a  single
       number.

       Specifies  column  width  and  its units. There are
       three size types:

       - absolute size -  column  width  is  specified  in
         characters

           set viewcolumns=-100{name},20.15{ext}

         results in two columns with lengths of 100 and 20
         and a reserved space of five  characters  on  the
         left of second column.

       - relative  (percent) size - column width is speci-
         fied in percents of view width

           set viewcolumns=-80%{name},15%{ext},5%{mtime}

         results in three columns with lengths of  80/100,
         15/100 and 5/100 of view width.

       - auto  size  (default) - column width is automati-
         cally determined

           set viewcolumns=-{name},{ext},{mtime}

         results in three columns with length of one third
         of  view  width.  There  is no size adjustment to
         content, since it will slow down rendering.

       Columns of different sizing  types  can  be  freely
       mixed in one view. Though sometimes some of columns
       can be seen partly or be  completely  invisible  if
       there is not enough space to display them.

       Column name

       This  is  just  a  sort  key  surrounded with curly
       braces or {root}, e.g.

         {name},{ext},{mtime}

       {name} and {iname} keys are the  same  and  present
       both for consistency with 'sort' option.

       Following  keys  don't  have  corresponding sorting
       keys:

         - {root}     - display name without extension (as
           a complement for {ext})

         - {fileroot} - display name without extension for
           anything except for  directories  and  symbolic
           links  to  directories  (as  a  complement  for
           {fileext})

       Empty curly  braces  ({})  are  replaced  with  the
       default  secondary  column for primary sort key. So
       after the  next  command  view  will  be  displayed
       almost  as  if  'viewcolumns'  is empty, but adding
       ellipsis for long file names:

         set viewcolumns=-{name}..,6{}.

       Cropping specifier

       It's from one to three  dots  after  closing  curly
       brace in column format.

       Specifies type of text truncation if it doesn't fit
       in the column.   Currently  three  types  are  sup-
       ported:

         - truncation - text is truncated

             set viewcolumns=-{name}.

           results  in  truncation  of  names that are too
           long too fit in the view.

         - adding of ellipsis - ellipsis on  the  left  or
           right are added when needed

             set viewcolumns=-{name}..

           results  in  that ellipsis are added at the end
           of too long file names.

         - none (default) - text can  pass  column  bound-
           aries

             set viewcolumns=-{name}...,{ext}

           results  in  that long file names can partially
           be written on the ext column.

Color schemes
       The color schemes in vifm can  be  applied  in  two
       different ways:

         - as the primary color scheme;

         - as local to a pane color scheme.

       Both  types are set using :colorscheme command, but
       of different forms:

         - :colorscheme color_scheme_name - for  the  pri-
           mary color scheme;

         - :colorscheme  color_scheme_name directory - for
           local color schemes.

       Look of different  parts  of  the  TUI  (Text  User
       Interface) is determined in this way:

         - Border,    TabLine,   TabLineSel,   TopLineSel,
           TopLine,   CmdLine,    ErrorMsg,    StatusLine,
           JobLine,  SuggestBox  and  WildMenu  are always
           determined by the primary color scheme;

         - CurrLine, Selected,  Directory,  Link,  Broken-
           Link, Socket, Device, Executable, Fifo, CmpMis-
           match, Win, AuxWin and OtherWin are  determined
           by  primary  color  scheme  and  a set of local
           color schemes, which can be empty.

       There might be a set of local color schemes because
       they  are  structured  hierarchically  according to
       file system structure. For example, having the fol-
       lowing piece of file system:

         ~
         `-- bin
            |
            `-- my

       Two color schemes:

         # ~/.vifm/colors/for_bin
         highlight     Win     cterm=none    ctermfg=white
       ctermbg=red
         highlight   CurrLine    cterm=none    ctermfg=red
       ctermbg=black

         # ~/.vifm/colors/for_bin_my
         highlight   CurrLine   cterm=none   ctermfg=green
       ctermbg=black

       And these three commands in the vifmrc file:

         colorscheme Default
         colorscheme for_bin ~/bin
         colorscheme for_bin_my ~/bin/my

       File list will look in the following way  for  each
       level:

       - ~/ - Default color scheme
         black background
         cursor with blue background

       - ~/bin/ - mix of Default and for_bin color schemes
         red background
         cursor with black background and red foreground

       - ~/bin/my/   -   mix   of   Default,  for_bin  and
         for_bin_my color schemes
         red background
         cursor with black background and green foreground

Trash directory
       vifm has support of trash directory, which is  used
       as  temporary  storage  for  deleted files or files
       that were cut.  Using trash is  controlled  by  the
       'trash'  option, and exact path to the trash can be
       set with 'trashdir'  option.   Trash  directory  in
       vifm  differs  from the system-wide one by default,
       because of possible  incompatibilities  of  storing
       deleted  files  among different file managers.  But
       one can set 'trashdir' to "~/.local/share/Trash" to
       use a "standard" trash directory.

       There are two scenarios of using trash in vifm:

         1. As  a place for storing files that were cut by
            "d" and may be inserted to some other place in
            file system.

         2. As  a  storage  of files, that are deleted but
            not purged yet.

       The first scenario uses deletion  ("d")  operations
       to  put  files to trash and put ("p") operations to
       restore files from trash directory.  Note that such
       operations  move files to and from trash directory,
       which can be long term operations in case  of  dif-
       ferent partitions or remote drives mounted locally.

       The  second scenario uses deletion ("d") operations
       for moving files to trash directory and :empty com-
       mand-line  command  to purge all previously deleted
       files.

       Deletion and put operations  depend  on  registers,
       which  can point to files in trash directory.  Nor-
       mally, there are no nonexistent files in registers,
       but  vifm doesn't keep track of modifications under
       trash directory, so one shouldn't expect  value  of
       registers  to be absolutely correct if trash direc-
       tory was modified not by operation that  are  meant
       for  it.   But  this  won't lead to any issues with
       operations, since they ignore nonexistent files.

Client-Server
       vifm supports remote execution of command-line mode
       commands,   remote   changing  of  directories  and
       expression  evaluation.   This  is  possible  using
       --remote and --remote-expr command-line arguments.

       To  execute  a  command  remotely  combine --remote
       argument with  -c  <command>  or  +<command>.   For
       example:

         vifm --remote -c 'cd /'
         vifm --remote '+cd /'

       To  change  directory  not  using command-line mode
       commands one can specify paths right after --remote
       argument, like this:

         vifm --remote /
         vifm --remote ~
         vifm --remote /usr/bin /tmp

       Evaluating  expression  remotely might be useful to
       query information about an  instance,  for  example
       its location:

         vifm --remote-expr 'expand("%d")'

       If  there are several running instances, the target
       can be specified with --server-name option  (other-
       wise, the first one lexicographically is used):

         vifm --server-name work --remote ~/work/project

       List  of names of running instances can be obtained
       via --server-list option.  Name of the current  one
       is available via v:servername.


       v:servername
              server  name  of  the running vifm instance.
              Empty if client-server feature is disabled.

Plugin
       Plugin for using vifm in vim as a file selector.

       Commands:

         :EditVifm   select a file or files to open in the
       current buffer.
         :Vifm       alias for :EditVifm.
         :SplitVifm   split  buffer  and  select a file or
       files to open.
         :VsplitVifm vertically split buffer and select  a
       file or files to open.
         :DiffVifm    select a file or files to compare to
       the current file with
                     :vert diffsplit.
         :TabVifm    select a file or  files  to  open  in
       tabs.

       Each command accepts up to two arguments: left pane
       directory and right pane  directory.   After  argu-
       ments  are  checked,  vifm  process is spawned in a
       special "file-picker" mode.   To  pick  files  just
       open them either by pressing l, i or Enter keys, or
       by  running  :edit  command.   If  no   files   are
       selected,  file  under the cursor is opened, other-
       wise whole selection is passed to  the  plugin  and
       opened in vim.

       The  plugin  have only two settings.  It's a string
       variable named g:vifm_term to let user specify com-
       mand to run GUI terminal.  By default it's equal to
       'xterm -e'.   And  another  string  variable  named
       g:vifm_exec,  which  equals  "vifm"  by default and
       specifies path to vifm's executable.  To pass argu-
       ments  to vifm use g:vifm_exec_args, which is empty
       by default.

       To use the plugin copy the vifm.vim file to  either
       the   system  wide  vim/plugin  directory  or  into
       ~/.vim/plugin.

       If you would prefer not to use the plugin and it is
       in the system wide plugin directory add

       let loaded_vifm=1

       to your ~/.vimrc file.

Reserved
       The   following  command  names  are  reserved  and
       shouldn't be used for user commands.

         g[lobal]
         v[global]

ENVIRONMENT
       VIFM   Points to main configuration directory (usu-
              ally ~/.vifm/).

       MYVIFMRC
              Points  to  main configuration file (usually
              ~/.vifm/vifmrc).

       These environment variables are valid  inside  vifm
       and  also  can  be  used to configure it by setting
       some of them before running vifm.

       When $MYVIFMRC isn't set, it's made as $VIFM/vifmrc
       (exception  for  Windows: vifmrc in the same direc-
       tory  as  vifm.exe   has   higher   priority   than
       $VIFM/vifmrc).

       See "Startup" section above for more details.

       VIFM_FUSE_FILE
              On execution of external commands this vari-
              able is set to the full path of file used to
              initiate  FUSE  mount  of  the closest mount
              point  from  current  pane's  directory  up.
              It's  not set when outside FUSE mount point.
              When vifm is  used  inside  terminal  multi-
              plexer,  it  tries  to  set this variable as
              well (it doesn't work this way on its own).

SEE ALSO
       vifm-convert-dircolors(1), vifm-pause(1)

       Website: https://vifm.info/
       Wiki: https://wiki.vifm.info/

       Esperanto  translation  of  the  documentation   by
       Sebastian Cyprych:
       http://cyprych.neostrada.pl/tekstoj/kom-
       putiloj/vifm-help.eo.html

AUTHOR
       Vifm was written  by  ksteen  <ksteen@users.source-
       forge.net>
       And  currently  is developed by xaizek <xaizek@pos-
       teo.net>



vifm 0.11               September 24, 2020                VIFM(1)
