1VIFM(1)                     General Commands Manual                    VIFM(1)
2
3
4

NAME

6       vifm - vi file manager
7

SYNOPSIS

9       vifm [OPTION]...
10       vifm [OPTION]... path
11       vifm [OPTION]... path path
12

DESCRIPTION

14       Vifm is an ncurses based file manager with vi like keybindings.  If you
15       use vi, vifm gives you complete keyboard control over your files  with‐
16       out having to learn a new set of commands.
17

OPTIONS

19       vifm starts in the current directory unless it is given a different di‐
20       rectory on the command line or 'vifminfo'  option  includes  "savedirs"
21       (in which case last visited directories are used as defaults).
22
23       -      Read list of files from standard input stream and compose custom
24              view out of them (see "Custom views" section).  Current  working
25              directory is used as a base for relative paths.
26
27       <path> Starts Vifm in the specified path.
28
29       <path> <path>
30              Starts Vifm in the specified paths.
31
32       Specifying  two  directories  triggers split view even when vifm was in
33       single-view mode on finishing previous run.  To suppress this behaviour
34       :only command can be put in the vifmrc file.
35
36       When only one path argument is found on command-line, the left/top pane
37       is automatically set as the current view.
38
39       Paths to files are also allowed in case you want  vifm  to  start  with
40       some archive opened.
41
42       --select <path>
43              Open  parent  directory  of  the given path and select specified
44              file in it.
45
46       -f     Makes  vifm  instead  of  opening  files  write   selection   to
47              $VIFM/vimfiles and quit.
48
49       --choose-files <path>|-
50              Sets  output  file  to  write  selection into on exit instead of
51              opening files.  "-" means standard output.  Use empty  value  to
52              disable it.
53
54       --choose-dir <path>|-
55              Sets  output  file to write last visited directory into on exit.
56              "-" means standard output.  Use empty value to disable it.
57
58       --delimiter <delimiter>
59              Sets separator for list of  file  paths  written  out  by  vifm.
60              Empty  value  means null character.  Default is new line charac‐
61              ter.
62
63       --on-choose <command>
64              Sets command to be executed on selected files instead of opening
65              them.   The  command may use any of macros described in "Command
66              macros" section below.  The command is executed once  for  whole
67              selection.
68
69       --plugins-dir <path>
70              Additional  plugins  directory (can appear multiple times).  The
71              last one added has the highest priority.
72
73       --logging[=<startup log path>]
74              Log  some  operational  details  to  $XDG_DATA_HOME/vifm/log  or
75              $VIFM/log.   If  the  optional startup log path is specified and
76              permissions allow to open it for writing, then logging of  early
77              initialization (before configuration directories are determined)
78              is put there.
79
80       --server-list
81              List available server names and exit.
82
83       --server-name <name>
84              Name of target or this instance (sequential numbers are appended
85              on name conflict).
86
87       --remote
88              Sends  the rest of the command line to another instance of vifm,
89              --server-name is treated just like any other argument and should
90              precede  --remote on the command line.  When there is no server,
91              quits silently.  There is no limit on how many arguments can  be
92              processed.  One can combine --remote with -c <command> or +<com‐
93              mand> to execute commands in already running instance  of  vifm.
94              See also "Client-Server" section below.
95
96       --remote-expr
97              passes  expression  to  vifm server and prints result.  See also
98              "Client-Server" section below.
99
100       -c <command> or +<command>
101              Run command-line mode <command> on startup.   Commands  in  such
102              arguments are executed in the order they appear in command line.
103              Commands with spaces or special symbols must be enclosed in dou‐
104              ble  or  single  quotes or all special symbols should be escaped
105              (the exact syntax strongly depends on shell).  "+"  argument  is
106              equivalent to "$" and thus picks last item of of the view.
107
108       --help, -h
109              Show a brief command summary and exit vifm.
110
111       --version, -v
112              Show version information and quit.
113
114       --no-configs
115              Skip reading vifmrc and vifminfo.
116
117
118       See "Startup" section below for the explanations on $VIFM.
119

General keys

121       Ctrl-C or Escape
122              cancel most operations (see "Cancellation" section below), clear
123              all selected files.
124
125       Ctrl-L clear and redraw the screen.  Can also reload file list  in  ap‐
126              propriate modes (like normal and visual).
127

Basic Movement

129       The basic vi key bindings are used to move through the files and pop-up
130       windows.
131
132       k, gk, or Ctrl-P
133              move cursor up one line.
134
135       j, gj or Ctrl-N
136              move cursor down one line.
137
138       h      when 'lsview' is off move up one directory (moves to parent  di‐
139              rectory node in tree view), otherwise move left one file.
140
141       l      when  'lsview'  is  off  move into a directory or launch a file,
142              otherwise move right one file.  See "Selection" section below.
143
144       gg     move to the first line of the file list.
145
146       G      move to the last line in the file list.
147
148       gh     go up one directory regardless of view representation  (regular,
149              ls-like).  Also can be used to leave custom views including tree
150              view.
151
152       gl or Enter
153              enter directory or launch a file.  See "Selection"  section  be‐
154              low.
155
156       H      move to the first file in the window.
157
158       M      move to the file in the middle of the window.
159
160       L      move to the last file in the window.
161
162       Ctrl-F or Page Down
163              move forward one page.
164
165       Ctrl-B or Page Up
166              move back one page.
167
168       Ctrl-D jump back one half page.
169
170       Ctrl-U jump forward one half page.
171
172       n%     move to the file that is n percent from the top of the list (for
173              example 25%).
174
175       0 or ^ move cursor to the first column.  See 'lsview'  option  descrip‐
176              tion.
177
178       $      move  cursor  to  the last column.  See 'lsview' option descrip‐
179              tion.
180
181       Space  switch file lists.
182
183       gt     switch to the next tab (wrapping around).
184
185       {n}gt  switch to the tab number {n} (wrapping around).
186
187       gT     switch to the previous tab (wrapping around).
188
189       {n}gT  switch to {n}-th previous tab.
190

Movement with Count

192       Most movement commands also accept a count,  12j  would  move  down  12
193       files.
194
195       [count]%
196              move to percent of the file list.
197
198       [count]j
199              move down [count] files.
200
201       [count]k
202              move up [count] files.
203
204       [count]G or [count]gg
205              move to list position [count].
206
207       [count]h
208              go up [count] directories.
209

Scrolling panes

211       zt     redraw pane with file in top of list.
212
213       zz     redraw pane with file in center of list.
214
215       zb     redraw pane with file in bottom of list.
216
217       Ctrl-E scroll pane one line down or column right (in transposed ls-like
218              view).
219
220       Ctrl-Y scroll pane one line up or column left  (in  transposed  ls-like
221              view).
222

Pane manipulation

224       Second character can be entered with or without Control key.
225
226       Ctrl-W H
227              move the pane to the far left.
228
229       Ctrl-W J
230              move the pane to the very bottom.
231
232       Ctrl-W K
233              move the pane to the very top.
234
235       Ctrl-W L
236              move the pane to the far right.
237
238
239       Ctrl-W h
240              switch to the left pane.
241
242       Ctrl-W j
243              switch to the pane below.
244
245       Ctrl-W k
246              switch to the pane above.
247
248       Ctrl-W l
249              switch to the right pane.
250
251
252       Ctrl-W b
253              switch to bottom-right window.
254
255       Ctrl-W t
256              switch to top-left window.
257
258
259       Ctrl-W p
260              switch to previous window.
261
262       Ctrl-W w
263              switch to other pane.
264
265
266       Ctrl-W o
267              leave only one pane.
268
269       Ctrl-W s
270              split window horizontally.
271
272       Ctrl-W v
273              split window vertically.
274
275
276       Ctrl-W x
277              exchange panes.
278
279       Ctrl-W z
280              quit preview pane or view modes.
281
282
283       Ctrl-W -
284              decrease size of the view by count.
285
286       Ctrl-W +
287              increase size of the view by count.
288
289       Ctrl-W <
290              decrease size of the view by count.
291
292       Ctrl-W >
293              increase size of the view by count.
294
295
296       Ctrl-W |
297              set current view size to count.
298
299       Ctrl-W _
300              set current view size to count.
301
302       Ctrl-W =
303              make size of two views equal.
304
305       For  Ctrl-W +, Ctrl-W -, Ctrl-W <, Ctrl-W >, Ctrl-W | and Ctrl-W _ com‐
306       mands count can be given before and/or  after  Ctrl-W.   The  resulting
307       count  is  a  multiplication of those two.  So "2 Ctrl-W 2 -" decreases
308       window size by 4 lines or columns.
309
310       Ctrl-W | and Ctrl-W _ maximise current view by default.
311

Marks

313       Marks are set the same way as they are in vi.
314
315       You can use these characters for marks [a-z][A-Z][0-9].
316
317       m[a-z][A-Z][0-9]
318              set a mark for the file at the current cursor position.
319
320       '[a-z][A-Z][0-9]
321              navigate to the file set for the mark.
322
323
324       There are also several special marks that can't be set manually:
325
326         - ' (single quote) - previously visited directory of the  view,  thus
327           hitting '' allows switching between two last locations
328
329         - < - the first file of the last visually selected block
330
331         - > - the last file of the last visually selected block
332

Searching

334       /regular expression pattern
335              search  for  files matching regular expression in forward direc‐
336              tion and advance cursor to next match.
337
338       /      perform forward search with top item of search pattern history.
339
340       ?regular expression pattern
341              search for files matching regular expression in backward  direc‐
342              tion and advance cursor to previous match.
343
344       ?      perform backward search with top item of search pattern history.
345
346       Trailing  slash  for directories is taken into account, so /\/ searches
347       for directories and symbolic links to directories.  At  the  moment  //
348       works  too, but this can change in the future, so consider escaping the
349       slash if not typing pattern by hand.
350
351       Matches are automatically selected  if  'hlsearch'  is  set.   Enabling
352       'incsearch' makes search interactive.  'ignorecase' and 'smartcase' op‐
353       tions affect case sensitivity of search queries as well as local filter
354       and other things detailed in the description of 'caseoptions'.
355
356
357       [count]n
358              go  to  the  next file matching last search pattern.  Takes last
359              search direction into account.
360
361       [count]N
362              go to the previous file matching  last  search  pattern.   Takes
363              last search direction into account.
364
365       If  'hlsearch'  option  is set, hitting n/N to perform search and go to
366       the first matching item resets current selection in normal mode.  It is
367       not the case if search was already performed on files in the directory,
368       thus selection is not reset after clearing selection  with  escape  key
369       and hitting n/N key again.
370
371       See also "Regular expressions" section.
372
373
374       [count]f[character]
375              search  forward  for file with [character] as first character in
376              name.  Search wraps around the end of the list.
377
378       [count]F[character]
379              search backward for file with [character] as first character  in
380              name.  Search wraps around the end of the list.
381
382       [count];
383              find the next match of f or F.
384
385       [count],
386              find the previous match of f or F.
387
388       Note:  f,  F,  ; and , wrap around list beginning and end when they are
389       used alone and they don't wrap when they are used as selectors.
390

File Filters

392       There are three basic file filters:
393
394         - dot files filter (does not affect "." and ".." special directories,
395           whose  appearance is controlled by the 'dotdirs' option), see 'dot‐
396           files' option;
397
398         - permanent filter;
399
400         - local filter (see description of the "=" normal mode command).
401
402       Permanent filter essentially allows defining a  group  of  files  names
403       which are not desirable to be seen by default, like temporary or backup
404       files, which might be created alongside normal  ones.   Just  like  you
405       don't usually need to see hidden dot files (files starting with a dot).
406       Local filter on the other hand is for temporary immediate filtering  of
407       file  list  at hand, to get rid of uninterested files in the view or to
408       make it possible to use % range in a :command.
409
410       For the purposes of more  deterministic  editing  permanent  filter  is
411       split into two parts:
412
413         - one edited explicitly via :filter command;
414
415         - another one which is edited implicitly via zf shortcut.
416
417       Files  are tested against both parts and a match counts if at least one
418       of the parts matched.
419
420
421       Each file list has its own copy of each filter.
422
423       Filtered files are not checked in / search or :commands.
424
425       Files and directories are filtered separately.  This is done by append‐
426       ing  a  slash to a directory name before testing whether it matches the
427       filter. Examples:
428
429
430         " filter directories which names end with '.files'
431         :filter /^.*\.files\/$/
432
433         " filter files which names end with '.d'
434         :filter {*.d}
435
436         " filter files and directories which names end with '.o'
437         :filter /^.*\.o\/?$/
438
439       See also "Regular expressions" and "Patterns" sections.
440
441       The basic Vim folding key bindings are used for managing filters.
442
443
444       za     toggle visibility of dot files.
445
446       zo     show dot files.
447
448       zm     hide dot files.
449
450       zf     add selected files to permanent filter.
451
452       zO     reset permanent filter.
453
454       zR     save and reset all filters.
455
456       zr     clear local filter.
457
458       zM     restore all filters (undoes last zR).
459
460       zd     exclude selection or current file  from  a  custom  view.   Does
461              nothing for regular view.  For tree view excluding directory ex‐
462              cludes that sub-tree.  For compare views zd hides group of adja‐
463              cent  identical  files,  count  can be specified as 1 to exclude
464              just single file or selected items instead.  Files excluded this
465              way are not counted as filtered out and can't be returned unless
466              view is reloaded.
467
468       =regular expression pattern
469              filter out files that don't match regular  expression.   Whether
470              view  is updated as regular expression is changed depends on the
471              value of the 'incsearch' option.  This kind of filter  is  auto‐
472              matically reset when directory is changed.
473
475       While  some  of the keys make sense outside of tree-view, they are most
476       useful in trees.
477
478       [z     go to first sibling of current entry.
479
480       ]z     go to last sibling of current entry.
481
482       zj     go to next directory sibling of current entry or do nothing.
483
484       zk     go to previous directory sibling of current entry or do nothing.
485
486       zx     toggle fold under the cursor or parent entry of the current file
487              if cursor is not on a directory.
488

Other Normal Mode Keys

490       [count]:
491              enter command line mode.  [count] generates range.
492
493       q:     open  external  editor  to prompt for command-line command.  See
494              "Command line editing" section for details.
495
496       q/     open external editor to prompt for search pattern to be searched
497              in  forward  direction.   See "Command line editing" section for
498              details.
499
500       q?     open external editor to prompt for search pattern to be searched
501              in  backward  direction.  See "Command line editing" section for
502              details.
503
504       q=     open external editor to prompt for filter pattern.  See "Command
505              line  editing"  section for details.  Unlike other q{x} commands
506              this one doesn't work in Visual mode.
507
508       [count]!! and [count]!<selector>
509              enter command line mode with entered ! command.   [count]  modi‐
510              fies range.
511
512       Ctrl-O go  backwards through directory history of current view.  Nonex‐
513              istent directories are automatically skipped.
514
515       Ctrl-I if 'cpoptions' contains "t" flag, <tab> and <c-i> switch  active
516              pane  just  like <space> does, otherwise it goes forward through
517              directory history of current view.  Nonexistent directories  are
518              automatically skipped.
519
520       Ctrl-G show a dialog with detailed information about current file.  See
521              "Menus and dialogs" section for controls.
522
523       Shift-Tab
524              enter view mode (works only  after  activating  view  pane  with
525              :view command).
526
527       ga     calculate directory size.  Uses cached directory sizes when pos‐
528              sible for better performance.  As  a  special  case  calculating
529              size of ".." entry results in calculation of size of current di‐
530              rectory.
531
532       gA     like ga, but force update.   Ignores  old  values  of  directory
533              sizes.
534
535       If file under cursor is selected, each selected item is processed, oth‐
536       erwise only current file is updated.
537
538       gf     find link destination (like l with 'followlinks' off,  but  also
539              finds directories).  On Windows additionally follows .lnk-files.
540
541       gF     Same  as  gf,  but  resolves final path of the chain of symbolic
542              links.
543
544       gr     only for MS-Windows
545              same as l key, but tries  to  run  program  with  administrative
546              privileges.
547
548       av     go into visual mode for updating current selection, any existing
549              selection is preserved.
550
551       gv     go into visual mode restoring last selection.
552
553       [reg]gs
554              if register is present, then all files listed in  that  register
555              that are visible in current view are selected.
556
557              When  no register is specified, restore the last selection saved
558              for this view (similar to what gv does for  visual  mode  selec‐
559              tion).   When  you leave a directory, its saved selection is re‐
560              membered for that path and visiting the directory again restores
561              it.   Selection  for up to 10 distinct file-system locations are
562              remembered.
563
564       gu<selector>
565              make names of selected files lowercase.
566
567       [count]guu and [count]gugu
568              make names of [count] files starting from the current one lower‐
569              case.  Without [count] only current file is affected.
570
571       gU<selector>
572              make names of selected files uppercase.
573
574       [count]gUU and [count]gUgU
575              make names of [count] files starting from the current one upper‐
576              case.  Without [count] only current file is affected.
577
578       e      explore file in the current pane.
579
580       i      handle file (even if it's an executable and 'runexec' option  is
581              set).
582
583       cw     change  word  is  used  to  rename a file or files.  If multiple
584              files are selected, behaves as :rename command run without argu‐
585              ments.
586
587       cW     change  WORD is used to change only name of file (without exten‐
588              sion).
589
590       cl     change link target.  If multiple files are selected,  an  editor
591              is spawn to edit paths.
592
593       co     only for *nix
594              change file owner.
595
596       cg     only for *nix
597              change file group.
598
599       [count]cp
600              change  file  attributes  (permission  on *nix and properties on
601              Windows).  If [count] is specified, it's  treated  as  numerical
602              argument   for   non-recursive  `chmod`  command  (of  the  form
603              [0-7]{3,4}).  See "Menus and dialogs" section for controls.
604
605       [count]C
606              clone file [count] times.
607
608       [count]dd or d[count]selector
609              move selected file or files to trash directory (if  'trash'  op‐
610              tion  is  set, otherwise delete).  See "Trash directory" section
611              below.
612
613       [count]DD or D[count]selector
614              like dd and d<selector>, but omitting trash directory (even when
615              'trash' option is set).
616
617       Y, [count]yy or y[count]selector
618              yank selected files.
619
620       p      copy  yanked files to the current directory or move the files to
621              the current directory if they were deleted with dd or  :d[elete]
622              or  if  the  files were yanked from trash directory.  See "Trash
623              directory" section below.
624
625       P      move the last yanked files.  The advantage of using P instead of
626              d followed by p is that P moves files only once.  This isn't im‐
627              portant in case you're moving files  in  the  same  file  system
628              where  your home directory is, but using P to move files on some
629              other file system (or file systems, in case  you  want  to  move
630              files  from  fs1  to  fs2 and your home is on fs3) can save your
631              time.
632
633       al     put symbolic links with absolute paths.
634
635       rl     put symbolic links with relative paths.
636
637       t      select or unselect (tag) the current file.
638
639       u      undo last change.
640
641       Ctrl-R redo last change.
642
643       dp     in compare view of "ofboth grouppaths" kind makes  corresponding
644              entries of the other pane equal to the current one.  If at least
645              one file is selected, the command processes selection, otherwise
646              current file.
647              The semantics is as follows:
648               - nothing is done for identical entries
649               - if file is missing in current view, its pair gets removed
650               - if file is missing or differs in other view, it's replaced
651               - file pairs are defined by matching relative paths
652              File  removal obeys 'trash' option.  When the option is enabled,
653              the operation can be undone/redone (although  results  won't  be
654              visible automatically).
655              Unlike  in  Vim,  this  operation  is performed on a single line
656              rather than a set of adjacent changes.
657
658       do     same as dp, but applies changes in the opposite direction.
659
660       v or V enter visual mode, clears current selection.
661
662       [count]Ctrl-A
663              increment first number in file name by [count] (1 by default).
664
665       [count]Ctrl-X
666              decrement first number in file name by [count] (1 by default).
667
668       ZQ     same as :quit!.
669
670       ZZ     same as :quit.
671
672       .      repeat last command-line command (not normal  mode  command)  of
673              this run (does nothing right after startup or :restart command).
674              The command doesn't depend on command-line history  and  can  be
675              used with completely disabled history.
676
677       (      go  to  previous  group.   Groups are defined by primary sorting
678              key.  For name and iname members of each group have  same  first
679              letter, for all other sorting keys vifm uses size, uid, ...
680
681       )      go to next group.  See ( key description above.
682
683       {      speeds  up  navigation to closest previous entry of the opposite
684              type by moving to the first file backwards when cursor is  on  a
685              directory and to the first directory backwards when cursor is on
686              a file.  This is essentially a special case of ( that is  locked
687              on "dirs".
688
689       }      same as {, but in forward direction.
690
691       [c     go  to previous mismatched entry in directory comparison view or
692              do nothing.
693
694       ]c     go to next mismatched entry in directory comparison view  or  do
695              nothing.
696
697       [d     go to previous directory entry or do nothing.
698
699       ]d     go to next directory entry or do nothing.
700
701       [r     same as :siblprev.
702
703       ]r     same as :siblnext.
704
705       [R     same as :siblprev!.
706
707       ]R     same as :siblnext!.
708
709       [s     go to previous selected entry or do nothing.
710
711       ]s     go to next selected entry or do nothing.
712

Using Count

714       You can use count with commands like yy.
715
716       [count]yy
717              yank count files starting from current cursor position downward.
718
719       Or you can use count with motions passed to y, d or D.
720
721       d[count]j
722              delete  (count  + 1) files starting from current cursor position
723              upward.
724

Registers

726       vifm supports multiple registers for temporary storing list  of  yanked
727       or deleted files.
728
729       Registers should be specified by hitting double quote key followed by a
730       register name.  Count is specified after  register  name.   By  default
731       commands use unnamed register, which has double quote as its name.
732
733       Though  all  commands  accept  registers, most of commands ignores them
734       (for example H or Ctrl-U).  Other commands can fill register or  append
735       new files to it.
736
737       Presently vifm supports ", _, a-z and A-Z characters as register names.
738
739       As mentioned above " is unnamed register and has special meaning of the
740       default register.  Every time when you use named registers (a-z and  A-
741       Z)  unnamed  register  is  updated to contain same list of files as the
742       last used register.
743
744       _ is black hole register.  It can be used for writing, but its list  is
745       always empty.
746
747       Registers  with names from a to z and from A to Z are named ones.  Low‐
748       ercase registers are cleared before adding new files,  while  uppercase
749       aren't and should be used to append new files to the existing file list
750       of appropriate lowercase register (A for a, B for b, ...).
751
752       Registers can be changed on :empty command if they contain files  under
753       trash directory (see "Trash directory" section below).
754
755       Registers do not contain one file more than once.
756
757       Example:
758
759         "a2yy
760
761       puts names of two files to register a (and to the unnamed register),
762
763         "Ad
764
765       removes  one file and append its name to register a (and to the unnamed
766       register),
767
768         p or "ap or "Ap
769
770       inserts previously yanked and deleted files into current directory.
771

Selectors

773       y, d, D, !, gu and gU commands accept selectors.  You can combine  them
774       with any of selectors below to quickly remove or yank several files.
775
776       Most  of  selectors are like vi motions: j, k, gg, G, H, L, M, %, f, F,
777       ;, comma, ', ^, 0 and $.  But there are some additional ones.
778
779       a      all files in current view.
780
781       s      selected files.
782
783       S      all files except selected.
784
785       Examples:
786
787         - dj - delete file under cursor and one below;
788
789         - d2j - delete file under cursor and two below;
790
791         - y6gg - yank all files from cursor position to 6th file in the list.
792
793       When you pass a count to whole command and its selector they are multi‐
794       plied. So:
795
796         - 2d2j - delete file under cursor and four below;
797
798         - 2dj - delete file under cursor and two below;
799
800         - 2y6gg  -  yank  all  files from cursor position to 12th file in the
801           list.
802

Visual Mode

804       Visual mode has two generic operating submodes:
805
806         - plain selection as it is in Vim;
807
808         - selection editing submode.
809
810       Both modes select files in range from cursor position at  which  visual
811       mode  was  entered to current cursor position (let's call it "selection
812       region").  Each of two borders can be adjusted by swapping them via "o"
813       or  "O"  keys  and  updating cursor position with regular cursor motion
814       keys.  Obviously, once initial cursor position  is  altered  this  way,
815       real start position becomes unavailable.
816
817       Plain  Vim-like visual mode starts with cleared selection, which is not
818       restored on rejecting selection ("Escape", "Ctrl-C", "v",  "V").   Con‐
819       trary  to it, selection editing doesn't clear previously selected files
820       and restores them after reject.  Accepting selection by  performing  an
821       operation on selected items (e.g. yanking them via "y") moves cursor to
822       the top of current selection region (not to the top most selected  file
823       of the view).
824
825       In  turn,  selection  editing  supports three types of editing (look at
826       status bar to know which one is currently active):
827
828         - append - amend selection by selecting elements in selection region;
829
830         - remove - amend selection by deselecting elements in  selection  re‐
831           gion;
832
833         - invert  - amend selection by inverting selection of elements in se‐
834           lection region.
835
836       No matter how you activate selection editing  it  starts  in  "append".
837       One  can switch type of operation (in the order given above) via "Ctrl-
838       G" key.
839
840       Almost all normal mode keys work in visual mode, but instead of accept‐
841       ing selectors they operate on selected items.
842
843       Enter  save selection and go back to normal mode not moving cursor.
844
845       av     leave  visual mode if in amending mode (restores previous selec‐
846              tion), otherwise switch to amending selection mode.
847
848       gv     restore previous visual selection.
849
850       v, V, Ctrl-C or Escape
851              leave visual mode if not in amending mode, otherwise  switch  to
852              normal visual selection.
853
854       Ctrl-G switch  type of amending by round robin scheme: append -> remove
855              -> invert.
856
857       :      enter command line mode.  Selection is cleared  on  leaving  the
858              mode.
859
860       o      switch active selection bound.
861
862       O      switch active selection bound.
863
864       gu, u  make names of selected files lowercase.
865
866       gU, U  make names of selected files uppercase.
867
868       cl     change target of symbolic link(s).
869
870       cw     same as running :rename command without arguments.
871

View Mode

873       This mode tries to imitate the less program.  List of builtin shortcuts
874       can be found below.  Shortcuts can be customized using :qmap, :qnoremap
875       and :qunmap command-line commands.
876
877       Shift-Tab, Tab, q, Q, ZZ
878              return to normal mode.
879
880       [count]e, [count]Ctrl-E, [count]j, [count]Ctrl-N, [count]Enter
881              scroll forward one line (or [count] lines).
882
883       [count]y, [count]Ctrl-Y, [count]k, [count]Ctrl-K, [count]Ctrl-P
884              scroll backward one line (or [count] lines).
885
886       [count]f, [count]Ctrl-F, [count]Ctrl-V, [count]Space
887              scroll forward one window (or [count] lines).
888
889       [count]b, [count]Ctrl-B, [count]Alt-V
890              scroll backward one window (or [count] lines).
891
892       [count]z
893              scroll forward one window (and set window to [count]).
894
895       [count]w
896              scroll backward one window (and set window to [count]).
897
898       [count]Alt-Space
899              scroll forward one window, but don't stop at end-of-file.
900
901       [count]d, [count]Ctrl-D
902              scroll forward one half-window (and set half-window to [count]).
903
904       [count]u, [count]Ctrl-U
905              scroll   backward   one  half-window  (and  set  half-window  to
906              [count]).
907
908       r, Ctrl-R, Ctrl-L
909              repaint screen.
910
911       R      reload view preserving scroll position.
912
913       F      toggle automatic forwarding.   Roughly  equivalent  to  periodic
914              file reload and scrolling to the bottom.  The behaviour is simi‐
915              lar to `tail -F` or F key in less.
916
917       a      switch to the next viewer.  Does nothing for preview constructed
918              via %q macro.
919
920       A      switch  to  the  previous viewer.  Does nothing for preview con‐
921              structed via %q macro.
922
923       i      toggle raw mode (ignoring of defined viewers).  Does nothing for
924              preview constructed via %q macro.
925
926       [count]/pattern
927              search forward for ([count]‐th) matching line.
928
929       [count]?pattern
930              search backward for ([count]‐th) matching line.
931
932       [count]n
933              repeat previous search (for [count]‐th occurrence).
934
935       [count]N
936              repeat  previous search in reverse direction (for [count]‐th oc‐
937              currence).
938
939       [count]g, [count]<, [count]Alt-<
940              scroll to the first line of the file (or line [count]).
941
942       [count]G, [count]>, [count]Alt->
943              scroll to the last line of the file (or line [count]).
944
945       [count]p, [count]%
946              scroll to the beginning of the file (or N percent into file).
947
948       v      invoke an editor to edit the current  file  being  viewed.   The
949              command for editing is taken from the 'vicmd' or 'vixcmd' option
950              value and extended with middle line number prepended by  a  plus
951              sign and name of the current file.
952
953       All  "Ctrl-W  x" keys work the same was as in Normal mode.  Active mode
954       is automatically changed on navigating among windows.   When  less-like
955       mode  activated  on  file preview is left using one by "Ctrl-W x" keys,
956       its state is stored until another file is displayed using preview (it's
957       possible  to leave the mode, hide preview pane, do something else, then
958       get back to the file and show preview pane again with previously stored
959       state in it).
960

Command line Mode

962       These keys are available in all submodes of the command line mode: com‐
963       mand, search, prompt and filtering.
964
965       Down, Up, Left, Right, Home, End and Delete are extended keys and  they
966       are  not available if vifm is compiled with --disable-extended-keys op‐
967       tion.
968
969       Esc, Ctrl-C
970              leave command line mode,  cancels  input.   Cancelled  input  is
971              saved into appropriate history and can be recalled later.
972
973       Ctrl-M, Enter
974              execute command and leave command line mode.
975
976       Ctrl-I, Tab
977              complete command or its argument.
978
979       Shift-Tab
980              complete in reverse order.
981
982       Ctrl-_ stop completion and return original input.
983
984       Ctrl-B, Left
985              move cursor to the left.
986
987       Ctrl-F, Right
988              move cursor to the right.
989
990       Ctrl-A, Home
991              go to line beginning.
992
993       Ctrl-E, End
994              go to line end.
995
996       Alt-B  go to the beginning of previous word.
997
998       Alt-F  go to the end of next word.
999
1000       Ctrl-U remove  characters  from  cursor  position till the beginning of
1001              line.
1002
1003       Ctrl-K remove characters from cursor position till the end of line.
1004
1005       Ctrl-H, Backspace
1006              remove character before the cursor.
1007
1008       Ctrl-D, Delete
1009              remove character under the cursor.
1010
1011       Ctrl-W remove characters from cursor position  till  the  beginning  of
1012              previous word.
1013
1014       Alt-D  remove  characters  from  cursor  position till the beginning of
1015              next word.
1016
1017       Ctrl-T swap the order of current and previous character and move cursor
1018              forward  or,  if  cursor past the end of line, swap the order of
1019              two last characters in the line.
1020
1021       Alt-.  insert last part of previous command to current cursor position.
1022              Each next call will insert last part of older command.
1023
1024       Ctrl-G edit command-line content in external editor.  See "Command line
1025              editing" section for details.
1026
1027       Ctrl-N recall more recent command-line from history.
1028
1029       Ctrl-P recall older command-line from history.
1030
1031       Up     recall more recent command-line from history, that begins as the
1032              current command-line.
1033
1034       Down   recall  older command-line from history, that begins as the cur‐
1035              rent command-line.
1036
1037       Ctrl-] trigger abbreviation expansion.
1038
1039       Ctrl-R =
1040              insert result of evaluating an expression.  Expression is to  be
1041              entered  via  nested  command-line  prompt  (where this key does
1042              nothing).  Expansion of an erroneous expression is empty.
1043

Fast navigation

1045       In order to streamline navigation through directory tree, you can enter
1046       a special form of command-line mode from search or local filter prompt.
1047       Once activated, pressing Enter opens currently selected  directory  and
1048       clears  the  prompt  in anticipation of the next component of the path.
1049       If entry under the cursor is a file, it is opened and the mode is  fin‐
1050       ished.
1051
1052       This  behaviour  is embedded in a command-line mode, but doesn't update
1053       input histories nor expands abbreviations and  redefines  some  of  the
1054       mode's  mappings  for the purpose of faster navigation through the file
1055       system rather than command-line editing.  When on,  prompt  gets  "nav"
1056       prefix.
1057
1058       You can enable this behaviour on search by default via a mapping like:
1059
1060           nnoremap / /<c-y>
1061
1062
1063       Ctrl-Y enter  navigation  mode.  Works only for search and local filter
1064              started from a normal mode and  only  when  'incsearch'  is  set
1065              ('wrapscan' is also nice to have set for search).
1066
1067       Ctrl-Y return to a regular command-line mode.
1068
1069       Enter, Right
1070              either  enter  a  directory under the cursor without leaving the
1071              mode and clear the prompt or  leave  the  mode  for  files.   If
1072              'navoptions'  specifies  "open:all"  a  file under the cursor is
1073              opened after leaving the mode.
1074
1075       Ctrl-O, Left
1076              go to parent directory.
1077
1078       Ctrl-J leave the mode without undoing cursor position or filter state.
1079
1080       Ctrl-N, Down
1081              move view cursor down.
1082
1083       Ctrl-P, Up
1084              move view cursor up.
1085
1086       Page Down
1087              scroll view down.
1088
1089       Page Up
1090              scroll view up.
1091
1092       Home   move view cursor to the first item.
1093
1094       End    move view cursor to the last item.
1095

Pasting special values

1097       The shortcuts listed below insert specified values into current  cursor
1098       position.  Last key of every shortcut references value that it inserts:
1099         - c - [c]urrent file
1100         - d - [d]irectory path
1101         - e - [e]xtension of a file name
1102         - r - [r]oot part of a file name
1103         - t - [t]ail part of directory path
1104
1105         - a - [a]utomatic filter
1106         - m - [m]anual filter
1107         - = - local filter, which is bound to "=" in normal mode
1108
1109       Values related to filelist in current pane are available through Ctrl-X
1110       prefix, while values from the other pane have  doubled  Ctrl-X  key  as
1111       their  prefix  (doubled Ctrl-X is presumably easier to type than upper‐
1112       case letters; it's still easy to remap the keys to correspond to  names
1113       of similar macros).
1114
1115       Ctrl-X c
1116              name of the current file of the active pane.
1117
1118       Ctrl-X d
1119              path to the current directory of the active pane.
1120
1121       Ctrl-X e
1122              extension of the current file of the active pane.
1123
1124       Ctrl-X r
1125              name root of current file of the active pane.
1126
1127       Ctrl-X t
1128              the  last  component of path to the current directory of the ac‐
1129              tive pane.
1130
1131       Ctrl-X Ctrl-X c
1132              name of the current file of the inactive pane.
1133
1134       Ctrl-X Ctrl-X d
1135              path to the current directory of the inactive pane.
1136
1137       Ctrl-X Ctrl-X e
1138              extension of the current file of the inactive pane.
1139
1140       Ctrl-X Ctrl-X r
1141              name root of current file of the inactive pane.
1142
1143       Ctrl-X Ctrl-X t
1144              the last component of path to the current directory of the inac‐
1145              tive pane.
1146
1147
1148       Ctrl-X a
1149              value of implicit permanent filter (old name "automatic") of the
1150              active pane.
1151
1152       Ctrl-X m
1153              value of explicit permanent filter (old name  "manual")  of  the
1154              active pane.
1155
1156       Ctrl-X =
1157              value of local filter of the active pane.
1158
1159
1160       Ctrl-X /
1161              last pattern from search history.
1162

Command line editing

1164       vifm provides a facility to edit several kinds of data, that is usually
1165       edited in command-line mode, in external editor (using  command  speci‐
1166       fied  by 'vicmd' or 'vixcmd' option).  This has at least two advantages
1167       over built-in command-line mode:
1168         - one can use full power of Vim to edit text;
1169         - finding and reusing history entries becomes possible.
1170
1171       The facility is supported by four input submodes of the command-line:
1172         - command;
1173         - forward search;
1174         - backward search;
1175         - file rename (see description of cw and cW normal mode keys).
1176
1177       Editing command-line using external editor is activated by  the  Ctrl-G
1178       shortcut.   It's  also  possible  to do almost the same from Normal and
1179       Visual modes using q:, q/ and q? commands.
1180
1181       Temporary file created for the purpose of editing the line has the fol‐
1182       lowing structure:
1183
1184         1. First line, which is either empty or contains text already entered
1185            in command-line.
1186
1187         2. 2nd and all other lines with history items starting with the  most
1188            recent  one.   Altering this lines in any way won't change history
1189            items stored by vifm.
1190
1191       After editing application is finished the first line  of  the  file  is
1192       taken  as  the  result  of operation, when the application returns zero
1193       exit code.  If the application returns an error (see :cquit command  in
1194       Vim), all the edits made to the file are ignored, but the initial value
1195       of the first line is saved in appropriate history.
1196

More Mode

1198       This is the mode that appears when status bar content is so big that it
1199       doesn't  fit  on the screen.  One can identify the mode by "-- More --"
1200       message at the bottom.
1201
1202       The following keys are handled in this mode:
1203
1204
1205       Enter, Ctrl-J, j or Down
1206              scroll one line down.
1207
1208       Backspace, k or Up
1209              scroll one line up.
1210
1211
1212       d      scroll one page (half of a screen) down.
1213
1214       u      scroll one page (half of a screen) up.
1215
1216
1217       Space, f or PageDown
1218              scroll down a screen.
1219
1220       b or PageUp
1221              scroll up a screen.
1222
1223
1224       G      scroll to the bottom.
1225
1226       g      scroll to the top.
1227
1228
1229       q, Escape or Ctrl-C
1230              quit the mode.
1231
1232       :      switch to command-line mode.
1233

Commands

1235       Commands are executed with :command_name<Enter>
1236
1237       Commented out lines should start with  the  double  quote  symbol  ("),
1238       which  may be preceded by whitespace characters intermixed with colons.
1239       Inline comments can be added at the end of the line after double  quote
1240       symbol,  only  last  line of a multi-line command can contain such com‐
1241       ment.  Not all commands support inline comments as  their  syntax  con‐
1242       flicts  with  names of registers and fields where double quotes are al‐
1243       lowed.
1244
1245       Most of the commands have two forms: complete and the short one.  Exam‐
1246       ple:
1247
1248         :noh[lsearch]
1249
1250       This  means  the  complete  command is nohlsearch, and the short one is
1251       noh.
1252
1253       Most of command-line commands completely reset selection in the current
1254       view.  However, there are several exceptions:
1255
1256         - `:invert s` most likely leaves some files selected;
1257
1258         - :view command;
1259
1260         - :normal command (when it doesn't leave command-line mode);
1261
1262         - :if  and :else commands don't affect selection on successful execu‐
1263           tion.
1264
1265       '|' can be used to separate commands, so you can give multiple commands
1266       in  one  line.   If you want to use '|' in an argument, precede it with
1267       '\'.
1268
1269       These commands see '|' as part of their arguments even  when  it's  es‐
1270       caped:
1271
1272           :[range]!
1273           :amap
1274           :anoremap
1275           :autocmd
1276           :cabbrev
1277           :cmap
1278           :cnoreabbrev
1279           :cnoremap
1280           :command
1281           :dmap
1282           :dnoremap
1283           :filetype
1284           :fileviewer
1285           :filextype
1286           :keepsel
1287           :map
1288           :mmap
1289           :mnoremap
1290           :nmap
1291           :nnoremap
1292           :noremap
1293           :normal
1294           :qmap
1295           :qnoremap
1296           :vmap
1297           :vnoremap
1298           :wincmd
1299           :windo
1300           :winrun
1301
1302       To  be able to use another command after one of these, wrap it with the
1303       :execute command.  An example:
1304
1305         if filetype('.') == 'reg' | execute '!!echo regular file' | endif
1306
1307       :[count]
1308
1309       :number
1310              move to the file number.
1311              :12 would move to the 12th file in the list.
1312              :0 move to the top of the list.
1313              :$ move to the bottom of the list.
1314
1315       :[count]command
1316              The  only  builtin  :[count]command  are  :[count]d[elete]   and
1317              :[count]y[ank].
1318
1319       :d3    would  delete  three files starting at the current file position
1320              moving down.
1321
1322       :3d    would delete one file at the third line in the list.
1323
1324       :command [args]
1325
1326       :[range]!program
1327              execute command via shell.  Accepts macros.
1328
1329       :[range]!command &
1330
1331       same as above, but the command is run in the  background  using  vifm's
1332       means.
1333
1334       Programs  that  write  to stderr create error dialogs showing errors of
1335       the command.
1336
1337       Note the space before ampersand symbol, if you omit it, command will be
1338       run in the background using job control of your shell.
1339
1340       Accepts macros.
1341
1342                                                :!!
1343
1344       :[range]!!command
1345              same as :!, but pauses before returning.
1346
1347       :!!    repeat the last command.
1348
1349                                                :alink
1350
1351       :[range]alink[!?]
1352              create absolute symbolic links to files in directory of inactive
1353              view.  With "?"  prompts for destination file names in  an  edi‐
1354              tor.  "!" forces overwrite.
1355
1356       :[range]alink[!] path
1357              create  absolute  symbolic links to files in directory specified
1358              by the path (absolute  or  relative  to  directory  of  inactive
1359              view).
1360
1361       :[range]alink[!] name1 name2...
1362              create  absolute  symbolic  links of files in directory of other
1363              view giving each next link a corresponding name from  the  argu‐
1364              ment list.
1365
1366       :[range]alink[!?] -skip ...
1367              see "-skip parameter" section below.
1368
1369                                                :apropos
1370
1371       :apropos keyword...
1372              create a menu of items returned by the apropos command.  Select‐
1373              ing an item in the menu opens corresponding man  page.   By  de‐
1374              fault  the  command  relies  on  the external "apropos" utility,
1375              which can be customized by altering value  of  the  'aproposprg'
1376              option.  See "Menus and dialogs" section for controls.
1377
1378                                                :autocmd
1379
1380       :au[tocmd] {event} {pat} {cmd}
1381              register autocommand for the {event}, which can be:
1382                - DirEnter - triggered after directory is changed
1383              Event name is case insensitive.
1384
1385              {pat}  is  a  comma-separated  list  of modified globs patterns,
1386              which can contain tilde or environment variables.  All paths use
1387              slash  ('/') as directory separator.  The pattern can start with
1388              a '!', which negates it.  Patterns that do not  contain  slashes
1389              are  matched  against the last item of the path only (e.g. "dir"
1390              in "/path/dir").  Literal comma can be entered by  doubling  it.
1391              Two modifications to globs matching are as follows:
1392                -  *  - never matches a slash (i.e., can signify single direc‐
1393              tory level)
1394                - ** - matches any character (i.e., can match  path  of  arbi‐
1395              trary depth)
1396
1397              {cmd} is a :command or several of them separated with '|'.
1398
1399              Examples of patterns:
1400                - conf.d      - matches conf.d directory anywhere
1401                - *.d         - matches directories ending with ".d" anywhere
1402                - **.git      - matches something.git, but not .git anywhere
1403                - **/.git/**  - matches /path/.git/objects, but not /path/.git
1404                -  **/.git/**/ - matches /path/.git/ only (because of trailing
1405              slash)
1406                -  /etc/*       -  matches  /etc/conf.d/,  /etc/X11,  but  not
1407              /etc/X11/fs
1408                - /etc/**/*.d - matches /etc/conf.d, /etc/X11/conf.d, etc.
1409                - /etc/**/*   - matches /etc/ itself and any file below it
1410                - /etc/**/**  - matches /etc/ itself and any file below it
1411
1412       :au[tocmd] [{event}] [{pat}]
1413              list  those autocommands that match given event-pattern combina‐
1414              tion.
1415              {event} and {pat} can be omitted to list all  autocommands.   To
1416              list  any autocommands for specific pattern one can use * place‐
1417              holder in place of {event}.
1418
1419       :au[tocmd]! [{event}] [{pat}]
1420              remove autocommands that match given event-pattern  combination.
1421              Syntax is the same as for listing above.
1422
1423       :apropos
1424              repeat last :apropos command.
1425
1426                                                :bmark
1427
1428       :bmark tag1 [tag2 [tag3...]]
1429              bookmark current directory with specified tags.
1430
1431       :bmark! path tag1 [tag2 [tag3...]]
1432              same  as :bmark, but allows bookmarking specific path instead of
1433              current directory.  This is for use in vifmrc and for  bookmark‐
1434              ing files.
1435
1436              Path  can contain macros that expand to single path (%c, %C, %d,
1437              %D) or those that can expand to multiple paths, but contain only
1438              one  (%f, %F, %rx).  The latter is done for convenience on using
1439              the command interactively.  Complex macros that  include  spaces
1440              (e.g. "%c:gs/ /_") should be escaped.
1441
1442                                                :bmarks
1443
1444       :bmarks
1445              display all bookmarks in a menu.
1446
1447       :bmarks [tag1 [tag2...]]
1448              display  menu  of  bookmarks  that  include all of the specified
1449              tags.  See "Menus and dialogs" section for controls.
1450
1451                                                :bmgo
1452
1453       :bmgo [tag1 [tag2...]]
1454              when there are more than one match acts  exactly  like  :bmarks,
1455              otherwise  navigates  to  single match immediately (and fails if
1456              there is no match).
1457
1458                                                :cabbrev
1459
1460       :ca[bbrev]
1461              display menu of command-line mode abbreviations.  See "Menus and
1462              dialogs" section for controls.
1463
1464       :ca[bbrev] lhs-prefix
1465              display  command-line  mode  abbreviations  which left-hand side
1466              starts with specified prefix.
1467
1468       :ca[bbrev] lhs rhs
1469              register new or overwrites existing  abbreviation  for  command-
1470              line mode.  rhs can contain spaces and any special sequences ac‐
1471              cepted in rhs of mappings (see "Mappings" section  below).   Ab‐
1472              breviations are expanded non-recursively.
1473
1474                                                :cnoreabbrev
1475
1476       :cnorea[bbrev]
1477              display menu of command-line mode abbreviations.  See "Menus and
1478              dialogs" section for controls.
1479
1480       :cnorea[bbrev] lhs-prefix
1481              display command-line mode  abbreviations  which  left-hand  side
1482              starts with specified prefix.
1483
1484       :cnorea[bbrev] lhs rhs
1485              same  as :cabbrev, but mappings in rhs are ignored during expan‐
1486              sion.
1487
1488                                                :cd
1489
1490       :cd or :cd ~ or :cd $HOME
1491              change to home directory.
1492
1493       :cd -  go to the last visited directory.
1494
1495       :cd ~/dir
1496              change directory to ~/dir.
1497
1498       :cd /curr/dir /other/dir
1499              change directory of the current pane to /curr/dir and  directory
1500              of  the other pane to /other/dir.  Relative paths are assumed to
1501              be relative to directory of current view.  Command won't fail if
1502              one  of directories is invalid.  All forms of the command accept
1503              macros.
1504
1505       :cd! /dir
1506              same as :cd /dir /dir.
1507
1508                                                :cds
1509
1510       :cds[!] pattern string
1511              navigate to path obtained by substituting first match in current
1512              path.   Arguments  can include slashes, but starting first argu‐
1513              ment with a separator will activate below form of  the  command.
1514              Specifying "!"  changes directory of both panes.
1515
1516       Available flags:
1517
1518         - i  -  ignore case (the 'ignorecase' and 'smartcase' options are not
1519           used)
1520
1521         - I - don't ignore case (the 'ignorecase' and 'smartcase' options are
1522           not used)
1523
1524       :cds[!]/pattern/string/[flags]
1525              same as above, but with :substitute-like syntax.  Other punctua‐
1526              tion characters can be used as separators.
1527
1528                                                :change
1529
1530       :c[hange]
1531              show a dialog to alter properties of files.
1532
1533                                                :chmod
1534
1535       :[range]chmod
1536              display file attributes (permission on *nix  and  properties  on
1537              Windows) change dialog.
1538
1539       :[range]chmod[!] arg...
1540              only for *nix
1541              change permissions for files.  See `man 1 chmod` for arg format.
1542              "!" means set permissions recursively.
1543
1544                                                :chown
1545
1546       :[range]chown
1547              only for *nix
1548              same as co key in normal mode.
1549
1550       :[range]chown [user][:][group]
1551              only for *nix
1552              change owner and/or group of files.  Operates on directories re‐
1553              cursively.
1554
1555                                                :clone
1556
1557       :[range]clone[!?]
1558              clones  files  in current directory.  With "?" vifm will open vi
1559              to edit file names.  "!" forces overwrite.  Macros are expanded.
1560
1561       :[range]clone[!] path
1562              clones files to directory specified with the path  (absolute  or
1563              relative  to  current directory).  "!" forces overwrite.  Macros
1564              are expanded.
1565
1566       :[range]clone[!] name1 name2...
1567              clones files in current directory giving each next clone a  cor‐
1568              responding  name  from the argument list.  "!" forces overwrite.
1569              Macros are expanded.
1570
1571                                                :colorscheme
1572
1573       :colo[rscheme]?
1574              print current color scheme name on the status bar.
1575
1576       :colo[rscheme]
1577              display a menu with a list of available color schemes.  You  can
1578              choose primary color scheme here.  It is used for view if no di‐
1579              rectory specific colorscheme fits current path.  It's also  used
1580              to set border color (except view titles) and colors in menus and
1581              dialogs.  See "Menus and dialogs" section for controls.
1582
1583       :colo[rscheme] color_scheme_name
1584              change primary color scheme to color_scheme_name.   In  case  of
1585              errors  (e.g.  some colors are not supported by terminal) either
1586              nothing is changed or color scheme is reset to builtin colors to
1587              ensure that TUI is left in a usable state.
1588
1589       :colo[rscheme] color_scheme_name directory
1590              associate  directory with the color scheme.  The directory argu‐
1591              ment can be either absolute or relative path  when  :colorscheme
1592              command  is  executed from command line, but mandatory should be
1593              an absolute path when the command is executed in scripts  loaded
1594              at startup (until vifm is completely loaded).
1595
1596       :colo[rscheme] color_scheme_name color_scheme_name...
1597              loads  the first color scheme in the order given that exists and
1598              is supported by the terminal.  If none matches, current one  re‐
1599              mains unchanged.  For example:
1600
1601                " use a separate color scheme for panes which are inside FUSE mounts
1602                execute 'colorscheme in-fuse' &fusehome
1603
1604                                                :comclear
1605
1606       :comc[lear]
1607              remove all user defined commands.
1608
1609                                                :command
1610
1611       :com[mand]
1612              display  a  menu of user commands.  See "Menus and dialogs" sec‐
1613              tion for controls.
1614
1615       :com[mand] prefix
1616              display user defined commands that start with the prefix.
1617
1618       :com[mand] name action[ &]
1619              set or redefine a user command.
1620              Use :com[mand]! to overwrite a previously  set  command  of  the
1621              same name.  Builtin commands can't be redefined.
1622              User  commands  must  start  with an upper or lower case letter.
1623              Command name can't contain special symbols except for  a  single
1624              trailing  '?'  or  '!'.   Numbers are allowed provided that they
1625              don't cause parsing ambiguity (no command name prefix that  pre‐
1626              cedes  a  digit  can  match  an existing command unless it has a
1627              digit in the same place), for example:
1628                " good
1629                :command mp3 command
1630                " good
1631                :command mp4 command
1632                :command mp3! command
1633                :command mp4? command
1634                " bad
1635                :command mp command
1636                :command mp44 command
1637                " good
1638                :command mp4c command
1639
1640              User commands are run in a shell by default (see below for  syn‐
1641              tax  of  other options).  To run a command in the background you
1642              must mark it as a background command by adding "  &"  after  the
1643              command's action (e.g., `:com rm rm %f &`).
1644              User  commands  of  all kinds have macros expanded in them.  See
1645              "Command macros" section for more information.
1646
1647       :com[mand] name /pattern
1648              set search pattern.
1649
1650       :com[mand] name =pattern
1651              set local filter value.
1652
1653       :com[mand] name filter{:filter args}
1654              set file name filter (see :filter command description).  For ex‐
1655              ample:
1656
1657                " display only audio files
1658                :command onlyaudio filter/.+.\(mp3|wav|mp3|flac|ogg|m4a|wma|ape\)$/i
1659                " display everything except audio files
1660                :command noaudio filter!/.+.\(mp3|wav|mp3|flac|ogg|m4a|wma|ape\)$/i
1661
1662       :com[mand] name :commands
1663              set  kind  of  an alias for internal commands (like in a shell).
1664              Passes range given to alias to an aliased  command,  so  running
1665              :%cp after
1666                :command cp :copy %a
1667              equals
1668                :%copy
1669
1670                                                :compare
1671
1672       :compare [byname | bysize | bycontents |
1673                 listall | listunique | listdups |
1674                 ofboth | ofone |
1675                 groupids | grouppaths |
1676                 skipempty | withicase | withrcase |
1677                  showidentical  |  showdifferent  | showuniqueleft | showuni‐
1678              queright]...
1679              compare files in one or two views according  to  the  arguments.
1680              The default is "bycontents listall ofboth grouppaths showidenti‐
1681              cal showdifferent showuniqueleft showuniqueright".  See "Compare
1682              views"  section below for details.  Diff structure is incompati‐
1683              ble with alternative representations, so values of 'lsview'  and
1684              'millerview' options are ignored.
1685
1686       :compare! (showidentical | showdifferent | showuniqueleft |
1687                   showuniqueright)...   this  invocation form works only when
1688              compare view is active and results in redoing  of  the  previous
1689              :compare with toggled state of the passed in options.
1690
1691                                                :copen
1692
1693       :cope[n]
1694              reopens  the  last  visible menu that has navigation to files by
1695              default, if any.
1696
1697                                                :copy
1698
1699       :[range]co[py][!?][ &]
1700              copy files to directory of other view.   With  "?"  prompts  for
1701              destination file names in an editor.  "!" forces overwrite.
1702
1703       :[range]co[py][!] path[ &]
1704              copy  files  to  directory  specified with the path (absolute or
1705              relative to directory of other view).  "!" forces overwrite.
1706
1707       :[range]co[py][!] name1 name2...[ &]
1708              copy files to directory of other view giving each  next  file  a
1709              corresponding  name  from  the  argument list.  "!" forces over‐
1710              write.
1711
1712       :[range]co[py][!?] -skip ...[ &]
1713              see "-skip parameter" section below.
1714
1715                                                :cquit
1716
1717       :cq[uit][!]
1718              same  as  :quit,  but  also  aborts   directory   choosing   via
1719              --choose-dir  (empties  output  file)  and returns non-zero exit
1720              code.
1721
1722                                                :cunabbrev
1723
1724       :cuna[bbrev] lhs
1725              unregister command-line mode abbreviation by its lhs.
1726
1727       :cuna[bbrev] rhs
1728              unregister command-line mode abbreviation by its  rhs,  so  that
1729              abbreviation could be removed even after expansion.
1730
1731                                                :delbmarks
1732
1733       :delbmarks
1734              remove bookmarks from current directory.
1735
1736       :delbmarks tag1 [tag2 [tag3...]]
1737              remove set of bookmarks that include all of the specified tags.
1738
1739       :delbmarks!
1740              remove all bookmarks.
1741
1742       :delbmarks! path1 [path2 [path3...]]
1743              remove bookmarks of listed paths.
1744
1745                                                :delcommand
1746
1747       :delc[ommand] user_command
1748              remove user defined command named user_command.
1749
1750                                                :delete
1751
1752       :[range]d[elete][!][ &]
1753              delete  selected  file  or  files.   "!"  means complete removal
1754              (omitting trash).
1755
1756       :[range]d[elete][!] [reg] [count][ &]
1757              delete selected or [count] files to the reg register.  "!" means
1758              complete removal (omitting trash).
1759
1760                                                :delmarks
1761
1762       :delm[arks]!
1763              delete all marks.
1764
1765       :delm[arks] marks ...
1766              delete  specified  marks,  each  argument is treated as a set of
1767              marks.
1768
1769                                                :delsession
1770
1771       :delsession
1772              delete specified session if it was stored previously.   Deleting
1773              current session doesn't detach it.
1774
1775                                                :display
1776
1777       :di[splay]
1778              display menu with registers content.
1779
1780       :di[splay] list ...
1781              display  the  contents  of the numbered and named registers that
1782              are mentioned in list (for example "az to display "", "a and  "z
1783              content).
1784
1785                                                :dirs
1786
1787       :dirs  display directory stack in a menu.  See "Menus and dialogs" sec‐
1788              tion for controls.
1789
1790                                                :echo
1791
1792       :ec[ho] [<expr>...]
1793              evaluate each argument as an expression and  output  them  sepa‐
1794              rated  with  a space.  See help on :let command for a definition
1795              of <expr>.
1796
1797                                                :edit
1798
1799       :[range]e[dit] [file...]
1800              open selected or passed file(s) in editor.  Macros and  environ‐
1801              ment variables are expanded.
1802
1803                                                :else
1804
1805       :el[se]
1806              execute  commands until next matching :endif if all other condi‐
1807              tions didn't match.  See also help on :if and :endif commands.
1808
1809                                                :elseif
1810
1811       :elsei[f] {expr1}
1812              execute commands until next matching :elseif, :else or :endif if
1813              conditions  of  previous :if and :elseif branches were evaluated
1814              to zero.  See also help on :if and :endif commands.
1815
1816                                                :empty
1817
1818       :empty permanently remove files from all existing non-empty  trash  di‐
1819              rectories (see "Trash directory" section below).  Trash directo‐
1820              ries which are specified via %r and/or %u also get deleted  com‐
1821              pletely.   Also remove all operations from undolist that have no
1822              sense after :empty and remove all records  about  files  located
1823              inside  directories from all registers.  Removal is performed as
1824              background task with undetermined amount  of  work  and  can  be
1825              checked via :jobs menu.
1826
1827                                                :endif
1828
1829       :en[dif]
1830              end conditional block.  See also help on :if and :else commands.
1831
1832                                                :execute
1833
1834       :exe[cute] [<expr>...]
1835              evaluate  each  argument as an expression and join results sepa‐
1836              rated by a space to get a single string which is  then  executed
1837              as a command-line command.  See help on :let command for a defi‐
1838              nition of <expr>.
1839
1840                                                :exit
1841
1842       :exi[t][!]
1843              same as :quit.
1844
1845                                                :file
1846
1847       :f[ile][ &]
1848              display menu of programs set for the file type  of  the  current
1849              file.   "  &"  forces  running associated program in background.
1850              See "Menus and dialogs" section for controls.
1851
1852       :f[ile] arg[ &]
1853              run associated command that begins with the arg skipping opening
1854              menu.  " &" forces running associated program in background.
1855
1856                                                :filetype
1857
1858       :filet[ype] pattern-list [{descr}]def_prog[ &],[{descr}]prog2[ &],...
1859              associate  given  program list to each of the patterns.  Associ‐
1860              ated program (command) is used by handlers of l and  Enter  keys
1861              (and  also in the :file menu).  If you need to insert comma into
1862              command just double it (",,").  Space followed by  an  ampersand
1863              as two last characters of a command means running of the command
1864              in the background.  Optional description can be  given  to  each
1865              command  to  ease  understanding  of what command will do in the
1866              :file menu.  Vifm will try the rest of the programs for an asso‐
1867              ciation  when  the  default  isn't  found.   When  program entry
1868              doesn't contain any of vifm macros, name of current file is  ap‐
1869              pended  as  if program entry ended with %c macro on *nix and %"c
1870              on Windows.  On Windows path to  executables  containing  spaces
1871              can  (and  should be for correct work with such paths) be double
1872              quoted.  See "Patterns" section below for pattern definition and
1873              "Selection" section for how selection is handled.  See also "Au‐
1874              tomatic FUSE mounts" section below.  Example  for  zip  archives
1875              and several actions:
1876
1877                filetype *.zip,*.jar,*.war,*.ear
1878                       \ {Mount with fuse-zip}
1879                       \ FUSE_MOUNT|fuse-zip %SOURCE_FILE %DESTINATION_DIR,
1880                       \ {View contents}
1881                       \ zip -sf %c | less,
1882                       \ {Extract here}
1883                       \ tar -xf %c,
1884
1885              Note  that  on  OS X when `open` is used to call an app, vifm is
1886              unable to check whether that app is actually available.   So  if
1887              automatic  skipping  of programs that aren't there is desirable,
1888              `open` should be replaced with an actual command.
1889
1890       :filet[ype] filename
1891              list (in menu mode) currently  registered  patterns  that  match
1892              specified file name.  Same as ":filextype filename".
1893
1894                                                :filextype
1895
1896       :filex[type] pattern-list [{ description }] def_program,program2,...
1897              same as :filetype, but this command is ignored if not running in
1898              X.  In X :filextype is equal to :filetype.  See "Patterns"  sec‐
1899              tion  below  for  pattern definition and "Selection" section for
1900              how selection is handled.  See also "Automatic FUSE mounts" sec‐
1901              tion below.
1902
1903              For  example,  consider  the following settings (the order might
1904              seem strange, but it's for the demonstration purpose):
1905
1906                filetype *.html,*.htm
1907                        \ {View in lynx}
1908                        \ lynx
1909                filextype *.html,*.htm
1910                        \ {Open with dwb}
1911                        \ dwb %f %i &,
1912                filetype *.html,*.htm
1913                        \ {View in links}
1914                        \ links
1915                filextype *.html,*.htm
1916                        \ {Open with firefox}
1917                        \ firefox %f &,
1918                        \ {Open with uzbl}
1919                        \ uzbl-browser %f %i &,
1920
1921              If you're using vifm inside a terminal emulator that is  running
1922              in graphical environment (when X is used on *nix; always on Win‐
1923              dows), vifm attempts to run application in this order:
1924
1925              1. lynx
1926              2. dwb
1927              3. links
1928              4. firefox
1929              5. uzbl
1930
1931              If there is no graphical environment  (checked  by  presence  of
1932              non-empty  $DISPLAY  or $WAYLAND_DISPLAY environment variable on
1933              *nix; never happens on Windows), the list will look like:
1934
1935              1. lynx
1936              2. links
1937
1938              Just as if all :filextype commands were not there.
1939
1940              The purpose of such differentiation is to allow comfortable  use
1941              of vifm with same settings in desktop environment/through remote
1942              connection (SSH)/in native console.
1943
1944              Note that on OS X $DISPLAY isn't defined unless you  define  it,
1945              so  :filextype  should  be used only if you set $DISPLAY in some
1946              way.
1947
1948       :filext[ype] filename
1949              list (in menu mode) currently  registered  patterns  that  match
1950              specified file name.  Same as ":filetype filename".
1951
1952                                                :fileviewer
1953
1954       :filev[iewer] pattern-list command1,command2,...
1955              register  specified  list of commands as viewers for each of the
1956              patterns.  Viewer is a command which output is captured and dis‐
1957              played in one of the panes of vifm after pressing "e" or running
1958              :view command.  When the command doesn't  contain  any  of  vifm
1959              macros,  name  of  current  file is appended as if command ended
1960              with %c macro.  Comma escaping and missing  commands  processing
1961              rules  as  for  :filetype apply to this command.  See "Patterns"
1962              section below for pattern definition.  Supports Lua handlers.
1963
1964              Example for zip archives:
1965
1966                fileviewer *.zip,*.jar,*.war,*.ear zip -sf %c, echo "No zip to preview:"
1967
1968       :filev[iewer] filename
1969              list (in menu mode) currently  registered  patterns  that  match
1970              specified filename.
1971
1972                                                :filter
1973
1974       :filter[!] {pattern}
1975              filter  files  matching  the  pattern out of directory listings.
1976              '!' controls state of filter  inversion  after  updating  filter
1977              value  (see  also  'cpoptions'  description).  Filter is matched
1978              case sensitively on *nix and case insensitively on Windows.  See
1979              "File Filters" and "Patterns" sections.
1980
1981              Example:
1982
1983                " filter all files ending in .o from the filelist.
1984                :filter /.o$/
1985
1986
1987       :filter[!] {empty-pattern}
1988              same as above, but use last search pattern as pattern value.
1989
1990              Example:
1991
1992                :filter //I
1993
1994
1995       :filter
1996              reset filter (set it to an empty string) and show all files.
1997
1998       :filter!
1999              same as :invert.
2000
2001       :filter?
2002              show information on local, name and auto filters.
2003
2004                                                :find
2005
2006       :[range]fin[d] pattern
2007              display results of find command in the menu.  Searches among se‐
2008              lected files if any.  Accepts macros.  By  default  the  command
2009              relies  on  the external "find" utility, which can be customized
2010              by altering value of the 'findprg' option.
2011
2012       :[range]fin[d] -opt...
2013              same as :find  above,  but  user  defines  all  find  arguments.
2014              Searches among selected files if any.
2015
2016       :[range]fin[d] path -opt...
2017              same  as  :find above, but user defines all find arguments.  Ig‐
2018              nores selection and range.
2019
2020       :[range]fin[d]
2021              repeat last :find command.
2022
2023                                                :finish
2024
2025       :fini[sh]
2026              stop sourcing a script. Can only be used in a vifm script  file.
2027              This is a quick way to skip the rest of the file.
2028
2029                                                :goto
2030
2031       :go[to]
2032              change  directory  if necessary and put specified path under the
2033              cursor.  The path should be existing non-root path.  Macros  and
2034              environment variables are expanded.
2035
2036                                                :grep
2037
2038       :[range]gr[ep][!] pattern
2039              will  show  results of grep command in the menu.  Add "!" to re‐
2040              quest inversion of search (look for lines that do not match pat‐
2041              tern).  Searches among selected files if any and no range given.
2042              Ignores binary files by default.  By default the command  relies
2043              on  the  external "grep" utility, which can be customized by al‐
2044              tering value of the 'grepprg' option.
2045
2046       :[range]gr[ep][!] -opt...
2047              same as :grep above, but user defines all grep arguments,  which
2048              are not escaped.  Searches among selected files if any.
2049
2050       :[range]gr[ep][!]
2051              repeat  last  :grep command.  "!" of this command inverts "!" in
2052              repeated command.
2053
2054                                                :help
2055
2056       :h[elp]
2057              show the help file.
2058
2059       :h[elp] argument
2060              is the same as using ':h argument' in vim.  Use vifm-<something>
2061              to  get  help  on vifm (tab completion works).  This form of the
2062              command doesn't work when 'vimhelp' option is off.
2063
2064                                                :hideui
2065
2066       :hideui
2067              hide interface to show previous commands' output.
2068
2069                                                :highlight
2070
2071       :hi[ghlight]
2072              display information about all highlight groups active at the mo‐
2073              ment.
2074
2075       :hi[ghlight] clear
2076              reset all highlighting to builtin defaults and removed all file‐
2077              name-specific rules.
2078
2079       :hi[ghlight] clear ( {pat1,pat2,...} | /regexp/ )
2080              remove specified rule.
2081
2082       :hi[ghlight] ( group-name | {pat1,pat2,...} | /regexp/ )
2083              display information on given highlight group or file  name  pat‐
2084              tern of color scheme used in the active view.
2085
2086       :hi[ghlight]   (   group-name   |   {pat1,pat2,...}  |  /regexp/[iI]  )
2087       cterm=style | ctermfg=color | ctermbg=color | gui=style | guifg=color |
2088       guibg=color
2089              set style (cterm, gui), foreground (ctermfg, guifg) and/or back‐
2090              ground (ctermbg, guibg) parameters of highlight  group  or  file
2091              name pattern for color scheme used in the active view.
2092
2093       All style values as well as color names are case insensitive.
2094
2095       Available style values (some of them can be combined):
2096        - bold
2097        - underline
2098        - reverse or inverse
2099        - standout
2100        - italic (on unsupported systems becomes reverse)
2101        -  combine - add attributes of current group to attributes of the par‐
2102       ent in group hierarchy (see below) instead of replacing them
2103        - none
2104
2105       Available group-name values:
2106        - Win - color of all windows (views, dialogs, menus) and default color
2107       for their content (e.g. regular files in views)
2108        - AuxWin - color of auxiliary areas of windows
2109        - OtherWin - color of inactive pane
2110        - Border - color of vertical parts of the border
2111        - TabLine - tab line color (for 'tabscope' set to "global")
2112        -  TabLineSel  - color of the tip of selected tab (regardless of 'tab‐
2113       scope')
2114        - TopLine - top line color of the other pane
2115        - TopLineSel - top line color of the current pane
2116        - CmdLine - the command line/status bar color
2117        - ErrorMsg - color of error messages in the status bar
2118        - StatusLine - color of the line above the status bar
2119        - JobLine - color of job line that appears above the status line
2120        - WildMenu - color of the wild menu items
2121        - SuggestBox - color of key suggestion box
2122        - CurrLine - line at cursor position in active view
2123        - OtherLine - line at cursor position in inactive view
2124        - OddLine - color of every second entry line in a pane
2125        - LineNr - line number column of views
2126        - Selected - color of selected files
2127        - Directory - color of directories
2128        - Link - color of symbolic links in the views
2129        - BrokenLink - color of broken symbolic links
2130        - HardLink - color of regular files with more than one hard link
2131        - Socket - color of sockets
2132        - Device - color of block and character devices
2133        - Executable - color of executable files
2134        - Fifo - color of fifo pipes
2135        - CmpMismatch - color of mismatched files in  side-by-side  comparison
2136       by path
2137        -  CmpUnmatched  - comparison file entry that has no pair in the other
2138       pane
2139        - CmpBlank - entry placeholder in a compare view, paired  with  CmpUn‐
2140       matched
2141        -  User1..User20  -  20  colors  which can be used via %* 'statusline'
2142       macro
2143
2144       Available colors:
2145        - -1 or default or none - default or transparent
2146        - black   and lightblack
2147        - red     and lightred
2148        - green   and lightgreen
2149        - yellow  and lightyellow
2150        - blue    and lightblue
2151        - magenta and lightmagenta
2152        - cyan    and lightcyan
2153        - white   and lightwhite
2154        - 0-255 - corresponding colors from 256-color palette (for ctermfg and
2155       ctermbg)
2156        - #rrggbb - direct ("gui", "true", 24-bit) color in hex-notation, each
2157       of the three compontents are in the range 0x00 to 0xff (for  guifg  and
2158       guibg)
2159
2160       Light versions of colors are regular colors with bold attribute set au‐
2161       tomatically in terminals that have less than 16 colors.   So  order  of
2162       arguments  of  :highlight  command  is important and it's better to put
2163       "cterm" in front of others to prevent it  from  overwriting  attributes
2164       set by "ctermfg" or "ctermbg" arguments.
2165
2166       For  convenience of color scheme authors xterm-like names for 256 color
2167       palette   is   also   supported.    The   mapping   is    taken    from
2168       http://vim.wikia.com/wiki/Xterm256_color_names_for_console_Vim
2169       Duplicated entries were altered by adding an underscore followed by nu‐
2170       merical suffix.
2171
2172         0 Black                  86 Aquamarine1           172 Orange3
2173         1 Red                    87 DarkSlateGray2        173 LightSalmon3_2
2174         2 Green                  88 DarkRed_2             174 LightPink3
2175         3 Yellow                 89 DeepPink4_2           175 Pink3
2176         4 Blue                   90 DarkMagenta           176 Plum3
2177         5 Magenta                91 DarkMagenta_2         177 Violet
2178         6 Cyan                   92 DarkViolet            178 Gold3_2
2179         7 White                  93 Purple                179 LightGoldenrod3
2180         8 LightBlack             94 Orange4_2             180 Tan
2181         9 LightRed               95 LightPink4            181 MistyRose3
2182        10 LightGreen             96 Plum4                 182 Thistle3
2183        11 LightYellow            97 MediumPurple3         183 Plum2
2184        12 LightBlue              98 MediumPurple3_2       184 Yellow3_2
2185        13 LightMagenta           99 SlateBlue1            185 Khaki3
2186        14 LightCyan             100 Yellow4               186 LightGoldenrod2
2187        15 LightWhite            101 Wheat4                187 LightYellow3
2188        16 Grey0                 102 Grey53                188 Grey84
2189        17 NavyBlue              103 LightSlateGrey        189 LightSteelBlue1
2190        18 DarkBlue              104 MediumPurple          190 Yellow2
2191        19 Blue3                 105 LightSlateBlue        191 DarkOliveGreen1
2192        20 Blue3_2                106  Yellow4_2              192  DarkOliveG‐
2193       reen1_2
2194        21 Blue1                 107 DarkOliveGreen3       193 DarkSeaGreen1_2
2195        22 DarkGreen             108 DarkSeaGreen          194 Honeydew2
2196        23 DeepSkyBlue4          109 LightSkyBlue3         195 LightCyan1
2197        24 DeepSkyBlue4_2        110 LightSkyBlue3_2       196 Red1
2198        25 DeepSkyBlue4_3        111 SkyBlue2              197 DeepPink2
2199        26 DodgerBlue3           112 Chartreuse2_2         198 DeepPink1
2200        27 DodgerBlue2           113 DarkOliveGreen3_2     199 DeepPink1_2
2201        28 Green4                114 PaleGreen3_2          200 Magenta2_2
2202        29 SpringGreen4          115 DarkSeaGreen3         201 Magenta1
2203        30 Turquoise4            116 DarkSlateGray3        202 OrangeRed1
2204        31 DeepSkyBlue3          117 SkyBlue1              203 IndianRed1
2205        32 DeepSkyBlue3_2        118 Chartreuse1           204 IndianRed1_2
2206        33 DodgerBlue1           119 LightGreen_2          205 HotPink
2207        34 Green3                120 LightGreen_3          206 HotPink_2
2208        35 SpringGreen3          121 PaleGreen1            207 MediumOrchid1_2
2209        36 DarkCyan              122 Aquamarine1_2         208 DarkOrange
2210        37 LightSeaGreen         123 DarkSlateGray1        209 Salmon1
2211        38 DeepSkyBlue2          124 Red3                  210 LightCoral
2212        39 DeepSkyBlue1          125 DeepPink4_3           211 PaleVioletRed1
2213        40 Green3_2              126 MediumVioletRed       212 Orchid2
2214        41 SpringGreen3_2        127 Magenta3              213 Orchid1
2215        42 SpringGreen2          128 DarkViolet_2          214 Orange1
2216        43 Cyan3                 129 Purple_2              215 SandyBrown
2217        44 DarkTurquoise         130 DarkOrange3           216 LightSalmon1
2218        45 Turquoise2            131 IndianRed             217 LightPink1
2219        46 Green1                132 HotPink3              218 Pink1
2220        47 SpringGreen2_2        133 MediumOrchid3         219 Plum1
2221        48 SpringGreen1          134 MediumOrchid          220 Gold1
2222        49  MediumSpringGreen      135  MediumPurple2         221 LightGolden‐
2223       rod2_2
2224        50 Cyan2                 136  DarkGoldenrod          222  LightGolden‐
2225       rod2_3
2226        51 Cyan1                 137 LightSalmon3          223 NavajoWhite1
2227        52 DarkRed               138 RosyBrown             224 MistyRose1
2228        53 DeepPink4             139 Grey63                225 Thistle1
2229        54 Purple4               140 MediumPurple2_2       226 Yellow1
2230        55 Purple4_2             141 MediumPurple1         227 LightGoldenrod1
2231        56 Purple3               142 Gold3                 228 Khaki1
2232        57 BlueViolet            143 DarkKhaki             229 Wheat1
2233        58 Orange4               144 NavajoWhite3          230 Cornsilk1
2234        59 Grey37                145 Grey69                231 Grey100
2235        60 MediumPurple4         146 LightSteelBlue3       232 Grey3
2236        61 SlateBlue3            147 LightSteelBlue        233 Grey7
2237        62 SlateBlue3_2          148 Yellow3               234 Grey11
2238        63 RoyalBlue1            149 DarkOliveGreen3_3     235 Grey15
2239        64 Chartreuse4           150 DarkSeaGreen3_2       236 Grey19
2240        65 DarkSeaGreen4         151 DarkSeaGreen2         237 Grey23
2241        66 PaleTurquoise4        152 LightCyan3            238 Grey27
2242        67 SteelBlue             153 LightSkyBlue1         239 Grey30
2243        68 SteelBlue3            154 GreenYellow           240 Grey35
2244        69 CornflowerBlue        155 DarkOliveGreen2       241 Grey39
2245        70 Chartreuse3           156 PaleGreen1_2          242 Grey42
2246        71 DarkSeaGreen4_2       157 DarkSeaGreen2_2       243 Grey46
2247        72 CadetBlue             158 DarkSeaGreen1         244 Grey50
2248        73 CadetBlue_2           159 PaleTurquoise1        245 Grey54
2249        74 SkyBlue3              160 Red3_2                246 Grey58
2250        75 SteelBlue1            161 DeepPink3             247 Grey62
2251        76 Chartreuse3_2         162 DeepPink3_2           248 Grey66
2252        77 PaleGreen3            163 Magenta3_2            249 Grey70
2253        78 SeaGreen3             164 Magenta3_3            250 Grey74
2254        79 Aquamarine3           165 Magenta2              251 Grey78
2255        80 MediumTurquoise       166 DarkOrange3_2         252 Grey82
2256        81 SteelBlue1_2          167 IndianRed_2           253 Grey85
2257        82 Chartreuse2           168 HotPink3_2            254 Grey89
2258        83 SeaGreen2             169 HotPink2              255 Grey93
2259        84 SeaGreen1             170 Orchid
2260        85 SeaGreen1_2           171 MediumOrchid1
2261
2262       There  are two colors (foreground and background) and only one bold at‐
2263       tribute.  Thus single bold attribute affects both colors when "reverse"
2264       attribute  is  used  in vifm run inside terminal emulator.  At the same
2265       time linux native console can handle boldness of foreground  and  back‐
2266       ground  colors  independently, but for consistency with terminal emula‐
2267       tors this is available only implicitly by using light versions of  col‐
2268       ors.  This behaviour might be changed in the future.
2269
2270       Although  vifm  supports 256 colors in a sense they are supported by UI
2271       drawing library, whether you will be able to use all of them highly de‐
2272       pends  on  your  terminal.  To set up terminal properly, make sure that
2273       $TERM in the environment you run vifm is set to name of 256-color  ter‐
2274       minal   (on   *nixes  it  can  also  be  set  via  X  resources),  e.g.
2275       xterm-256color.  One can find list of available terminal names by list‐
2276       ing  /usr/lib/terminfo/.   Number  of colors supported by terminal with
2277       current settings can be checked via "tput colors" command.
2278
2279       In order to use 24-bit colors one needs a terminal that supports  them,
2280       corresponding  terminfo  record  (probably  ends  in  "-direct" like in
2281       "xterm-direct") and $TERM pointing to it.   When  vifm  detects  direct
2282       color  support  "cterm*"  values  are  ignored for groups which have at
2283       least one of "gui*" values set, otherwise they are used after translat‐
2284       ing via a builtin palette.
2285
2286       Here  is  the hierarchy of highlight groups, which you need to know for
2287       using transparency:
2288         JobLine
2289         SuggestBox
2290         StatusLine
2291           WildMenu
2292           User1..User20
2293         Border
2294         CmdLine
2295           ErrorMsg
2296         Win
2297           OtherWin
2298             AuxWin
2299               OddLine
2300                 File name specific highlights
2301                   Directory
2302                   Link
2303                   BrokenLink
2304                   HardLink
2305                   Socket
2306                   Device
2307                   Fifo
2308                   Executable
2309                     CmpMismatch
2310                     CmpUnmatched
2311                     CmpBlank
2312                       Selected
2313                         CurrLine
2314                           LineNr (in active pane)
2315                         OtherLine
2316                           LineNr (in inactive pane)
2317         TopLine
2318           TopLineSel
2319             TabLineSel (for pane tabs)
2320               User1..User20
2321         TabLine
2322           TabLineSel
2323             User1..User20
2324
2325       "none" means default terminal color for highlight groups at  the  first
2326       level of the hierarchy and transparency for all others.
2327
2328       Here file name specific highlights mean those configured via globs ({})
2329       or regular expressions (//).  At most one of them is applied  per  file
2330       entry,  namely  the first that matches file name, hence order of :high‐
2331       light commands might be important in certain cases.
2332
2333                                                :history
2334
2335       :his[tory]
2336              display a menu with list of visited directories.  See "Menus and
2337              dialogs" section for controls.
2338
2339       :his[tory] x
2340              x can be:
2341                d[ir]     or . show directory history.
2342                c[md]     or : show command line history.
2343                s[earch]   or  /  show  search history and search forward on l
2344              key.
2345                f[search] or / show search history and  search  forward  on  l
2346              key.
2347                b[search]  or  ?  show search history and search backward on l
2348              key.
2349                i[nput]   or @ show prompt history (e.g. on  one  file  renam‐
2350              ing).
2351                fi[lter]   or  = show local filter history (see description of
2352              the "=" normal mode command).
2353                e[xprreg]      show expression register history (see  descrip‐
2354              tion of Ctrl+R = in command-line mode).
2355              See "Menus and dialogs" section for controls.
2356
2357                                                :histnext
2358
2359       :histnext
2360              same  as  <c-i>.   The main use case for this command is to work
2361              around the common pain point of <tab> and <c-i> being  the  same
2362              ASCII  character: one could alter the terminal emulator settings
2363              to emit, for example, the `F1` keycode when Ctrl-I  is  pressed,
2364              then  `:noremap <f1> :histnext<cr>` in vifm, add "t" flag to the
2365              'cpoptions', and thus have both <c-i> and <tab> working  as  ex‐
2366              pected.
2367
2368                                                :histprev
2369
2370       :histprev
2371              same as <c-o>.
2372
2373                                                :if
2374
2375       :if {expr1}
2376              start  conditional  block.   Commands  are  executed  until next
2377              matching :elseif, :else or :endif command if  {expr1}  evaluates
2378              to non-zero, otherwise they are ignored.  See also help on :else
2379              and :endif commands.
2380
2381              Example:
2382
2383                if $TERM == 'screen.linux'
2384                    highlight CurrLine ctermfg=lightwhite ctermbg=lightblack
2385                elseif $TERM == 'tmux'
2386                    highlight CurrLine cterm=reverse ctermfg=black ctermbg=white
2387                else
2388                    highlight CurrLine cterm=bold,reverse ctermfg=black ctermbg=white
2389                endif
2390
2391                                                :invert
2392
2393       :invert [f]
2394              invert file name filter.
2395
2396       :invert? [f]
2397              show current filter state.
2398
2399       :invert s
2400              invert selection.
2401
2402       :invert o
2403              invert sorting order of the primary sorting key.
2404
2405       :invert? o
2406              show sorting order of the primary sorting key.
2407
2408                                                :jobs
2409
2410       :jobs  display menu of current backgrounded processes.  See "Menus  and
2411              dialogs" section for controls.
2412
2413                                                :keepsel
2414
2415       :keepsel [command...]
2416              preserve  selection  during some :command by default.  Note that
2417              this doesn't save and restore selection to preserve it no matter
2418              what,  but  precludes  its  clearing at the end of a command and
2419              thus won't help if selection is cleared explicitly during opera‐
2420              tion.
2421
2422              Example:
2423
2424                :keepsel view
2425
2426                                                :let
2427
2428       :let $ENV_VAR = <expr>
2429              set an environment variable.  Warning: setting environment vari‐
2430              able to an empty string on Windows removes it.
2431
2432       :let $ENV_VAR .= <expr>
2433              append value to environment variable.
2434
2435       :let &[l:|g:]opt = <expr>
2436              sets option value.
2437
2438       :let &[l:|g:]opt .= <expr>
2439              append value to string option.
2440
2441       :let &[l:|g:]opt += <expr>
2442              increasing option value, adding sub-values.
2443
2444       :let &[l:|g:]opt -= <expr>
2445              decreasing option value, removing sub-values.
2446
2447       Where <expr> could be a single-quoted string, double-quoted string,  an
2448       environment  variable,  function call or a concatanation of any of them
2449       in any order using the '.' operator.  Any whitespace is ignored.
2450
2451                                                :locate
2452
2453       :locate filename
2454              use "locate" command to create a menu of filenames.  Selecting a
2455              file  from the menu will reload the current file list in vifm to
2456              show the selected file.  By default the command  relies  on  the
2457              external "locate" utility (it's assumed that its database is al‐
2458              ready built), which can be customized by altering value  of  the
2459              'locateprg'  option.   See  "Menus and dialogs" section for con‐
2460              trols.
2461
2462       :locate
2463              repeat last :locate command.
2464
2465                                                :ls
2466
2467       :ls    lists windows of active terminal multiplexer (only when terminal
2468              multiplexer  is  used).  This is achieved by issuing proper com‐
2469              mand for active terminal multiplexer, thus the list is not  han‐
2470              dled by vifm.
2471
2472                                                :lstrash
2473
2474       :lstrash
2475              display a menu with list of files in trash.  Each element of the
2476              list is original path of a deleted file, thus the list can  con‐
2477              tain duplicates.  See "Menus and dialogs" section for controls.
2478
2479                                                :mark
2480
2481       :[range]ma[rk][?] x [/full/path] [filename]
2482              Set  mark  x (a-zA-Z0-9) at /full/path and filename.  By default
2483              current directory is being used.  If no filename was  given  and
2484              /full/path  is  current  directory  then last file in [range] is
2485              used.  Using of macros is allowed.  Question mark will stop com‐
2486              mand from overwriting existing marks.
2487
2488                                                :marks
2489
2490       :marks create  a pop-up menu of marks.  See "Menus and dialogs" section
2491              for controls.
2492
2493       :marks list ...
2494              display the contents of the marks that are mentioned in list.
2495
2496                                                :media
2497
2498       :media only for *nix
2499              display media management menu.  See "Menus and dialogs"  section
2500              for controls.  See also 'mediaprg' option.
2501
2502                                                :messages
2503
2504       :mes[sages]
2505              shows previously given messages (up to 50).
2506
2507                                                :mkdir
2508
2509       :[line]mkdir[!] dir ...
2510              create  directories  at specified paths.  The [line] can be used
2511              to pick node in a tree-view.  "!" means make parent  directories
2512              as needed.  Macros are expanded.
2513
2514                                                :move
2515
2516       :[range]m[ove][!?][ &]
2517              move  files  to  directory  of other view.  With "?" prompts for
2518              destination file names in an editor.  "!" forces overwrite.
2519
2520       :[range]m[ove][!] path[ &]
2521              move files to directory specified with  the  path  (absolute  or
2522              relative to directory of other view).  "!" forces overwrite.
2523
2524       :[range]m[ove][!] name1 name2...[ &]
2525              move  files  to  directory of other view giving each next file a
2526              corresponding name from the argument  list.   "!"  forces  over‐
2527              write.
2528
2529       :[range]m[ove][!?] -skip ...[ &]
2530              see "-skip parameter" section below.
2531
2532                                                :nohlsearch
2533
2534       :noh[lsearch]
2535              clear selection in current pane.
2536
2537                                                :normal
2538
2539       :norm[al][!] commands
2540              execute normal mode commands.  If "!" is used, user defined map‐
2541              pings are ignored.  Unfinished last command  is  aborted  as  if
2542              <esc>  or  <c-c>  was typed.  A ":" should be completed as well.
2543              Commands can't start with a space, so put a count of 1 (one) be‐
2544              fore it.
2545
2546                                                :only
2547
2548       :on[ly]
2549              switch to a one window view.
2550
2551                                                :plugin
2552
2553       :plugin load
2554              loads all plugins.  To be used in configuration file to manually
2555              load plugins at an earlier point.  The  plugins  can  be  loaded
2556              only once, additional calls will do nothing.
2557
2558
2559       :plugin blacklist {plugin}
2560              adds {plugin} to the list of plugins to be ignored.
2561
2562       :plugin whitelist {plugin}
2563              adds {plugin} to the list of plugins to be loaded while ignoring
2564              all other plugins.  This list should normally be empty.
2565
2566                                                :plugins
2567
2568       :plugins
2569              open plugins menu.  See "Menus and  dialogs"  section  for  con‐
2570              trols.
2571
2572                                                :popd
2573
2574       :popd  remove pane directories from stack.
2575
2576                                                :pushd
2577
2578       :pushd[!] /curr/dir [/other/dir]
2579              add  pane  directories  to  stack and process arguments like :cd
2580              command.
2581
2582       :pushd exchange the top two items of the directory stack.
2583
2584                                                :put
2585
2586       :[line]pu[t][!] [reg] [ &]
2587              put files from specified register (" by  default)  into  current
2588              directory.   The [line] can be used to pick node in a tree-view.
2589              "!" moves files "!" moves files from their original location in‐
2590              stead  of  copying  them.  During this operation no confirmation
2591              dialogs will be shown, all checks are performed beforehand.
2592
2593                                                :pwd
2594
2595       :pw[d] show the present working directory.
2596
2597                                                :qall
2598
2599       :qa[ll][!]
2600              exit vifm (add ! to skip saving changes and checking for  active
2601              backgrounded commands).
2602
2603                                                :quit
2604
2605       :q[uit][!]
2606              if  there is more than one tab, close the current one, otherwise
2607              exit vifm (add ! to skip saving state and  checking  for  active
2608              backgrounded commands).
2609
2610                                                :redraw
2611
2612       :redr[aw]
2613              redraw the screen immediately.
2614
2615                                                :regedit
2616
2617       :rege[dit] [{reg}]
2618              edit  register contents using external editor. If {reg} is omit‐
2619              ted, unnamed register will be edited by default.   Edited  paths
2620              are  normalized (no extra `.`, `..`, `/`, etc.) and all relative
2621              paths are treated as starting in the directory  of  the  current
2622              view.
2623
2624                                                :registers
2625
2626       :reg[isters]
2627              display menu with registers content.
2628
2629       :reg[isters] list ...
2630              display  the  contents  of the numbered and named registers that
2631              are mentioned in list (for example "az to display "", "a and  "z
2632              content).
2633
2634                                                :regular
2635
2636       :regular
2637
2638       switch to regular view leaving custom view.
2639                                                       :rename
2640
2641       :[range]rename[!]
2642              rename  files  by editing their names in an editor.  "!" renames
2643              files recursively in subdirectories.   See  "External  Renaming"
2644              section.
2645
2646       :[range]rename name1 name2...
2647              rename each of selected files to a corresponding name.
2648
2649                                                :restart
2650
2651       :restart
2652              free  a  lot  of  things  (histories,  commands,  etc.),  reread
2653              vifminfo, vifmrc and session  files  and  run  startup  commands
2654              passed  in  the  argument  list, thus losing all unsaved changes
2655              (e.g. recent history or keys  mapped  after  starting  this  in‐
2656              stance).  Session that wasn't yet stored gets reset.
2657
2658              While many things get reset, some basic UI state and current lo‐
2659              cations are preserved, including tabs.
2660
2661       :restart full
2662              variation of :restart that makes no  attempt  to  preserve  any‐
2663              thing.
2664
2665                                                :restore
2666
2667       :[range]restore
2668              restore  file  from trash directory, doesn't work outside one of
2669              trash directories.  See "Trash directory" section below.
2670
2671                                                :rlink
2672
2673       :[range]rlink[!?]
2674              create relative symbolic links to files in  directory  of  other
2675              view.  With "?" prompts for destination file names in an editor.
2676              "!" forces overwrite.
2677
2678       :[range]rlink[!] path
2679              create relative symbolic links of files in  directory  specified
2680              with the path (absolute or relative to directory of other view).
2681              "!" forces overwrite.
2682
2683       :[range]rlink[!] name1 name2...
2684              create relative symbolic links of files in  directory  of  other
2685              view  giving  each next link a corresponding name from the argu‐
2686              ment list.  "!" forces overwrite.
2687
2688       :[range]rlink[!?] -skip ...[ &]
2689              see "-skip parameter" section below.
2690
2691                                                :screen
2692
2693       :screen
2694              toggle whether to use the terminal multiplexer or not.
2695              A terminal multiplexer uses pseudo terminals to  allow  multiple
2696              windows  to be used in the console or in a single xterm.  Start‐
2697              ing vifm from  terminal  multiplexer  with  appropriate  support
2698              turned  on  will  cause  vifm to open a new terminal multiplexer
2699              window for each new file edited or program launched from vifm.
2700              This requires screen version 3.9.9 or newer for  the  screen  -X
2701              argument or tmux (1.8 version or newer is recommended).
2702
2703       :screen!
2704              enable integration with terminal multiplexers.
2705
2706       :screen?
2707              display  whether  integration  with terminal multiplexers is en‐
2708              abled.
2709
2710       Note: the command is called screen for historical  reasons  (when  tmux
2711       wasn't  yet  supported) and might be changed in future releases, or get
2712       an alias.
2713
2714                                                :select
2715
2716       :[range]select
2717              select files in the given range (current file  if  no  range  is
2718              given).
2719
2720       :select {pattern}
2721              select  files  that match specified pattern.  Possible {pattern}
2722              forms are described in "Patterns" section below.  Trailing slash
2723              for  directories is taken into account, so `:select! */ | invert
2724              s` selects only files.
2725
2726       :select //[iI]
2727              same as item above, but reuses last search pattern.
2728
2729       :select !{external command}
2730              select files from the list supplied by external command.   Files
2731              are matched by full paths, relative paths are converted to abso‐
2732              lute ones beforehand.
2733
2734       :[range]select! [{pattern}]
2735              same as above, but resets previously selected items before  pro‐
2736              ceeding.
2737
2738                                                :session
2739
2740       :session?
2741              print name of the current session.
2742
2743       :session
2744              detach current session without saving it.  Resets v:session.
2745
2746       :session name
2747              create  or load and switch to a session with the specified name.
2748              Name can't contain slashes.  Session active  at  the  moment  is
2749              saved  before  the  switch.  Session is also automatically saved
2750              when quiting the application in usual ways.  Sets v:session.
2751
2752       :session -
2753              switch to a previous session if it still exists (wasn't  removed
2754              or detached from without saving).
2755
2756                                                :set
2757
2758       :se[t] display all options that differ from their default value.
2759
2760       :se[t] all
2761              display all options.
2762
2763       :se[t] opt1=val1 opt2='val2' opt3="val3" ...
2764              sets given options.  For local options both values are set.
2765              You can use following syntax:
2766               - for all options - option, option? and option&
2767               - for boolean options - nooption, invoption and option!
2768               - for integer options - option=x, option+=x and option-=x
2769               - for string options - option=x and option+=x
2770               -  for string list options - option=x, option+=x, option-=x and
2771              option^=x
2772               - for enumeration options - option=x, option+=x and option-=x
2773               - for set options -  option=x,  option+=x,  option-=x  and  op‐
2774              tion^=x
2775               -  for charset options - option=x, option+=x, option-=x and op‐
2776              tion^=x
2777
2778              the meaning:
2779               - option - turn option on (for boolean) or print its value (for
2780              all others)
2781               - nooption - turn option off
2782               - invoption - invert option state
2783               - option! - invert option state
2784               - option? - print option value
2785               - option& - reset option to its default value
2786               - option=x or option:x - set option to x
2787               - option+=x - add/append x to option
2788               - option-=x - remove (or subtract) x from option
2789               - option^=x - toggle x presence among values of the option
2790
2791              Option  name  can  be  prepended  and  appended by any number of
2792              whitespace characters.
2793
2794                                                :setglobal
2795
2796       :setg[lobal]
2797              display all global options that differ from their default value.
2798
2799       :setg[lobal] all
2800              display all global options.
2801
2802       :setg[lobal] opt1=val1 opt2='val2' opt3="val3" ...
2803              same as :set, but changes/prints only global options  or  global
2804              values  of  local  options.   Changes to the latter might be not
2805              visible until directory is changed.
2806
2807                                                :setlocal
2808
2809       :setl[ocal]
2810              display all local options that differ from their default value.
2811
2812       :setl[ocal] all
2813              display all local options.
2814
2815       :setl[ocal] opt1=val1 opt2='val2' opt3="val3" ...
2816              same as :set, but changes/prints only local values of local  op‐
2817              tions.
2818
2819                                                :shell
2820
2821       :sh[ell][!]
2822              start  a  shell  in  current directory.  "!" suppresses spawning
2823              dedicated window of terminal multiplexer for a shell.   To  make
2824              vifm  adaptive  to  environment  it uses $SHELL if it's defined,
2825              otherwise 'shell' value is used.
2826
2827
2828                                                :siblnext
2829
2830       :[count]siblnext[!]
2831
2832              change directory to [count]th next sibling directory after  cur‐
2833              rent  path  using  value  of global sort option of current pane.
2834              "!" enables wrapping.
2835
2836              For example, say, you're at /boot and root listing  starts  like
2837              this:
2838
2839                  bin/
2840                  boot/
2841                  dev/
2842                  ...
2843
2844              Issuing :siblnext will navigate to /dev.
2845
2846
2847                                                :siblprev
2848
2849       :[count]siblprev[!]
2850              same as :siblnext, but in the opposite direction.
2851
2852                                                :sort
2853
2854       :sor[t]
2855              display dialog with different sorting methods, where one can se‐
2856              lect the primary sorting key.   When  'viewcolumns'  options  is
2857              empty  and  'lsview'  is  off, changing primary sorting key will
2858              also affect view look (in particular the second  column  of  the
2859              view will be changed).  See "Menus and dialogs" section for con‐
2860              trols.
2861
2862                                                :source
2863
2864       :so[urce] file
2865              read command-line commands from the file.
2866
2867                                                :split
2868
2869       :sp[lit]
2870              switch to a two window horizontal view.
2871
2872       :sp[lit]!
2873              toggle horizontal window splitting.
2874
2875       :sp[lit] path
2876              splits the window horizontally to show  both  file  directories.
2877              Also changes other pane to path (absolute or relative to current
2878              directory of active pane).
2879
2880                                                :stop
2881
2882       :st[op]
2883              suspend vifm (same as pressing Ctrl-Z).  Does  nothing  if  this
2884              instance  isn't running in a shell.  The command exists to allow
2885              mapping to the action of Ctrl-Z.
2886
2887                                                :substitute
2888
2889       :[range]s[ubstitute]/pattern/string/[flags]
2890              for each file in range replace a match of pattern with string.
2891
2892       String can contain \0...\9 to link to capture groups (\0 -  all  match,
2893       \1 - first group, etc.).
2894
2895       Pattern is stored in search history.
2896
2897       Available flags:
2898
2899         - i  -  ignore case (the 'ignorecase' and 'smartcase' options are not
2900           used)
2901
2902         - I - don't ignore case (the 'ignorecase' and 'smartcase' options are
2903           not used)
2904
2905         - g - substitute all matches in each file name (each g toggles this)
2906
2907       :[range]s[ubstitute]/pattern
2908              substitute pattern with an empty string.
2909
2910       :[range]s[ubstitute]//string/[flags]
2911              use last pattern from search history.
2912
2913       :[range]s[ubstitute]
2914              repeat previous substitution command.
2915
2916                                                :sync
2917
2918       :sync [relative path]
2919              change  the  other pane to the current pane directory or to some
2920              path relative to the current directory.   Using  macros  is  al‐
2921              lowed.
2922
2923       :sync! change the other pane to the current pane directory and synchro‐
2924              nize cursor position.  If current pane displays custom  list  of
2925              files,  position  before  entering it is used (current one might
2926              not make any sense).
2927
2928
2929       :sync! [location | cursorpos | localopts | filters | filelist | tree  |
2930       all]...
2931              change  enumerated  properties of the other pane to match corre‐
2932              sponding properties of the current  pane.   Arguments  have  the
2933              following meanings:
2934
2935                - location - current directory of the pane;
2936
2937                - cursorpos - cursor position (doesn't make sense without "lo‐
2938                  cation");
2939
2940                - localopts - all local options;
2941
2942                - filters - all filters;
2943
2944                - filelist - list of files for  custom  view  (implies  "loca‐
2945                  tion");
2946
2947                - tree - tree structure for tree view (implies "location");
2948
2949                - all - all of the above.
2950
2951                                                :tabclose
2952
2953       :tabc[lose]
2954              close  current  tab,  unless  it's  the only one open at current
2955              scope.
2956
2957                                                :tabmove
2958
2959       :tabm[ove] [N]
2960              without the argument or with `$` as the  argument,  current  tab
2961              becomes  the  last tab.  With the argument, current tab is moved
2962              after the tab with the specified number.  Argument of `0`  moves
2963              current tab to the first position.
2964
2965                                                :tabname
2966
2967       :tabname [name]
2968              set,  update or reset (when no argument is provided) name of the
2969              current tab.
2970
2971                                                :tabnew
2972
2973       :tabnew [path]
2974              create new tab.  Accepts optional path for the new tab.   Macros
2975              and environment variables are expanded.
2976
2977                                                :tabnext
2978
2979       :tabn[ext]
2980              switch to the next tab (wrapping around).
2981
2982       :tabn[ext] {n}
2983              go to the tab number {n}.  Tab numeration starts with 1.
2984
2985                                                :tabonly
2986
2987       :tabo[nly]
2988              close  all  tabs  but the current one.  Closes pane tabs only at
2989              the active side.
2990
2991                                                :tabprevious
2992
2993       :tabp[revious]
2994              switch to the previous tab (wrapping around).
2995
2996       :tabp[revious] {n}
2997              go to the {n}-th previous tab.  Note that :tabnext  handles  its
2998              argument differently.
2999
3000                                                :touch
3001
3002       :[line]touch file...
3003              create files at specified paths.  Aborts on errors.  Doesn't up‐
3004              date time of existing files.  The [line] can  be  used  to  pick
3005              node in a tree-view.  Macros are expanded.
3006
3007                                                :tr
3008
3009       :[range]tr/pattern/string/
3010              for each file in range transliterate the characters which appear
3011              in pattern to  the  corresponding  character  in  string.   When
3012              string  is shorter than pattern, it's padded with its last char‐
3013              acter.
3014
3015                                                :trashes
3016
3017       :trashes
3018              lists all valid trash directories in a menu.  Only non-empty and
3019              writable  trash directories are shown.  This is exactly the list
3020              of directories that are cleared when :empty command is executed.
3021
3022       :trashes?
3023              same as :trashes, but also displays size of  each  trash  direc‐
3024              tory.
3025
3026                                                :tree
3027
3028       :tree  turn  pane  into  tree  view with current directory as its root.
3029              The tree view is implemented on top of a custom view, but is au‐
3030              tomatically  kept  in  sync with file system state and considers
3031              all the filters.  Thus the structure  corresponds  to  what  one
3032              would  see  on  visiting the directories manually.  As a special
3033              case for trees built out of  custom  view  file-system  tracking
3034              isn't performed.
3035
3036              To leave tree view go up from its root or use gh at any level of
3037              the tree.  Any command that changes directory will also  do,  in
3038              particular, `:cd ..`.
3039
3040              Tree structure is incompatible with alternative representations,
3041              so values of 'lsview' and 'millerview' options are ignored.
3042
3043              The "depth" argument specifies nesting level on which loading of
3044              subdirectories won't happen (they will be folded).  Values start
3045              at 1.
3046
3047       :tree! toggle current view in and out of tree mode.
3048
3049                                                :undolist
3050
3051       :undol[ist]
3052              display list of latest changes.  Use "!" to see actual commands.
3053              See "Menus and dialogs" section for controls.
3054
3055                                                :unlet
3056
3057       :unl[et][!] $ENV_VAR1 $ENV_VAR2 ...
3058              remove  environment variables. Add ! to omit displaying of warn‐
3059              ings about nonexistent variables.
3060
3061                                                :unselect
3062
3063       :[range]unselect
3064              unselect files in the given range (current file if no  range  is
3065              given).
3066
3067       :unselect {pattern}
3068              unselect files that match specified pattern.  Possible {pattern}
3069              forms are described in "Patterns" section below.  Trailing slash
3070              for  directories  is taken into account, so `:unselect */` unse‐
3071              lects directories.
3072
3073       :unselect !{external command}
3074              unselect files from  the  list  supplied  by  external  command.
3075              Files are matched by full paths, relative paths are converted to
3076              absolute ones beforehand.
3077
3078       :unselect //[iI]
3079              same as item above, but reuses last search pattern.
3080
3081                                                :version
3082
3083       :ve[rsion]
3084              show menu with version information.
3085
3086                                                :vifm
3087
3088       :vifm  same as :version.
3089
3090                                                :view
3091
3092       :vie[w]
3093              toggle on and off the quick file view (preview  of  file's  con‐
3094              tents).  See also 'quickview' option.
3095
3096       :vie[w]!
3097              turn on quick file view if it's off.
3098
3099                                                :volumes
3100
3101       :volumes
3102              only for MS-Windows
3103              display  menu  with volume list.  Hitting l (or Enter) key opens
3104              appropriate volume in the current pane.  See "Menus and dialogs"
3105              section for controls.
3106
3107                                                :vsplit
3108
3109       :vs[plit]
3110              switch to a two window vertical view.
3111
3112       :vs[plit]!
3113              toggle window vertical splitting.
3114
3115       :vs[plit] path
3116              split  the window vertically to show both file directories.  And
3117              changes other pane to path (absolute or relative to current  di‐
3118              rectory of active pane).
3119
3120                                                :wincmd
3121
3122       :[count]winc[md] {arg}
3123              same as running Ctrl-W [count] {arg}.
3124
3125                                                :windo
3126
3127       :windo [command...]
3128              execute command for each pane (same as :winrun % command).
3129
3130                                                :winrun
3131
3132       :winrun type [command...]
3133              execute  command  for pane(s), which is determined by type argu‐
3134              ment:
3135                - ^ - top-left pane
3136                - $ - bottom-right pane
3137                - % - all panes
3138                - . - current pane
3139                - , - other pane
3140
3141                                                :write
3142
3143       :w[rite]
3144              write current state to vifminfo and session files (if a  session
3145              is active).
3146
3147                                                :wq
3148
3149       :wq[!] same  as  :quit,  but  ! disables only the check of backgrounded
3150              commands, while state of the application is  always  written.
3151              :wqall
3152
3153       :wqa[ll][!]
3154              same  as  :qall,  but  ! disables only the check of backgrounded
3155              commands, while state of the application is always written.
3156
3157                                                :xall
3158
3159       :xa[ll][!]
3160              same as :qall.
3161
3162                                                :xit
3163
3164       :x[it][!]
3165              same as :quit.
3166
3167                                                :yank
3168
3169       :[range]y[ank] [reg] [count]
3170              will yank files to the reg register.
3171
3172                                                :map lhs rhs
3173
3174       :map lhs rhs
3175              map lhs key sequence to rhs in normal and visual modes.
3176
3177       :map! lhs rhs
3178              map lhs key sequence to rhs in command line mode.
3179
3180
3181                                        :amap :cmap :dmap  :mmap  :nmap  :qmap
3182       :vmap
3183
3184       :amap lhs rhs
3185              map lhs to rhs in navigation mode.
3186
3187       :cm[ap] lhs rhs
3188              map lhs to rhs in command line mode.
3189
3190       :dm[ap] lhs rhs
3191              map lhs to rhs in dialog modes.
3192
3193       :mm[ap] lhs rhs
3194              map lhs to rhs in menu mode.
3195
3196       :nm[ap] lhs rhs
3197              map lhs to rhs in normal mode.
3198
3199       :qm[ap] lhs rhs
3200              map lhs to rhs in view mode.
3201
3202       :vm[ap] lhs rhs
3203              map lhs to rhs in visual mode.
3204
3205
3206                                                :*map
3207
3208       :amap  list all maps in navigation mode.
3209
3210       :cm[ap]
3211              list all maps in command line mode.
3212
3213       :dm[ap]
3214              list all maps in dialog modes.
3215
3216       :mm[ap]
3217              list all maps in menu mode.
3218
3219       :nm[ap]
3220              list all maps in normal mode.
3221
3222       :qm[ap]
3223              list all maps in view mode.
3224
3225       :vm[ap]
3226              list all maps in visual mode.
3227
3228                                                :*map beginning
3229
3230       :amap beginning
3231              list all maps in navigation mode that start with the beginning.
3232
3233       :cm[ap] beginning
3234              list  all  maps  in command line mode that start with the begin‐
3235              ning.
3236
3237       :dm[ap] beginning
3238              list all maps in dialog modes that start with the beginning.
3239
3240       :mm[ap] beginning
3241              list all maps in menu mode that start with the beginning.
3242
3243       :nm[ap] beginning
3244              list all maps in normal mode that start with the beginning.
3245
3246       :qm[ap] beginning
3247              list all maps in view mode that start with the beginning.
3248
3249       :vm[ap] beginning
3250              list all maps in visual mode that start with the beginning.
3251
3252                                                :noremap
3253
3254       :no[remap] lhs rhs
3255              map the key sequence lhs to rhs for normal and visual modes, but
3256              don't expand user mappings in rhs.
3257
3258       :no[remap]! lhs rhs
3259              map the key sequence lhs to rhs for command line mode, but don't
3260              expand user mappings in rhs.
3261
3262             :anoremap  :cnoremap  :dnoremap  :mnoremap  :nnoremap   :qnoremap
3263       :vnoremap
3264
3265       :anoremap lhs rhs
3266              map  the  key sequence lhs to rhs for navigation mode, but don't
3267              expand user mappings in rhs.
3268
3269       :cno[remap] lhs rhs
3270              map the key sequence lhs to rhs for command line mode, but don't
3271              expand user mappings in rhs.
3272
3273       :dn[oremap] lhs rhs
3274              map  the key sequence lhs to rhs for dialog modes, but don't ex‐
3275              pand user mappings in rhs.
3276
3277       :mn[oremap] lhs rhs
3278              map the key sequence lhs to rhs for menu mode, but don't  expand
3279              user mappings in rhs.
3280
3281       :nn[oremap] lhs rhs
3282              map  the  key sequence lhs to rhs for normal mode, but don't ex‐
3283              pand user mappings in rhs.
3284
3285       :qn[oremap] lhs rhs
3286              map the key sequence lhs to rhs for view mode, but don't  expand
3287              user mappings in rhs.
3288
3289       :vn[oremap] lhs rhs
3290              map  the  key sequence lhs to rhs for visual mode, but don't ex‐
3291              pand user mappings in rhs.
3292
3293                                                :unmap
3294
3295       :unm[ap] lhs
3296              remove user mapping of lhs from normal and visual modes.
3297
3298       :unm[ap]! lhs
3299              remove user mapping of lhs from command line mode.
3300
3301                          :aunmap  :cunmap  :dunmap  :munmap  :nunmap  :qunmap
3302       :vunmap
3303
3304       :aunmap lhs
3305              remove user mapping of lhs from navigation mode.
3306
3307       :cu[nmap] lhs
3308              remove user mapping of lhs from command line mode.
3309
3310       :du[nmap] lhs
3311              remove user mapping of lhs from dialog modes.
3312
3313       :mu[nmap] lhs
3314              remove user mapping of lhs from menu mode.
3315
3316       :nun[map] lhs
3317              remove user mapping of lhs from normal mode.
3318
3319       :qun[map] lhs
3320              remove user mapping of lhs from view mode.
3321
3322       :vu[nmap] lhs
3323              remove user mapping of lhs from visual mode.
3324

Ranges

3326       The ranges implemented include:
3327         2,3 - from second to third file in the list (including it)
3328         % - the entire directory.
3329         . - the current position in the filelist.
3330         $ - the end of the filelist.
3331         't - the mark position t.
3332
3333       Examples:
3334
3335         :%delete
3336
3337       would delete all files in the directory.
3338
3339         :2,4delete
3340
3341       would delete the files in the list positions 2 through 4.
3342
3343         :.,$delete
3344
3345       would  delete  the  files  from  the current position to the end of the
3346       filelist.
3347
3348         :3delete4
3349
3350       would delete the files in the list positions 3, 4, 5, 6.
3351
3352       If a backward range is given :4,2delete - an query message is given and
3353       user can chose what to do next.
3354
3355       The builtin commands that accept a range are :d[elete] and :y[ank].
3356

:command parameters

3358       Some  of  the  command-line  commands  accept parameters in the form of
3359       `-paramname`.  Arguments of such commands can be split into two groups:
3360       parameters  and positional arguments.  Items from the two groups cannot
3361       be interleaved and parameters always come first.  List of parameters is
3362       terminated  implicitly  by the first argument that doesn't start with a
3363       dash ("-") or explicitly via "--" separator (needs to be a separate ar‐
3364       gument),  which  is just discarded.  These strict rules allow arbitrary
3365       positional arguments, such as file names that start with a dash.
3366
3367
3368       -skip parameter
3369              This parameter makes :copy, :move, :alink and  :rlink  automati‐
3370              cally  skip  source  files that already exist at the destination
3371              rather than refusing to perform the operation.
3372

Command macros

3374       The command macros may be used in user commands.
3375
3376       %a     User arguments.  When user arguments contain  macros,  they  are
3377              expanded before preforming substitution of %a.
3378
3379       %c %"c The current file under the cursor.
3380
3381       %C %"C The current file under the cursor in the other directory.
3382
3383       %f %"f All  of  the selected files or the current file, but see "Selec‐
3384              tion" section below.
3385
3386       %F %"F Same as %f, %"f, but for the inactive pane.
3387
3388       %l %"l List of selected files.  Unlike %f from above, this is only  for
3389              explicit  selection  (i.e.,  not via a range) and is empty if no
3390              files are selected.
3391
3392       %L %"L Same as %l, %"l, but for the inactive pane.
3393
3394       %b %"b Same as %f %F.
3395
3396       %d %"d Full path to current directory.
3397
3398       %D %"D Full path to other file list directory.
3399
3400       %rx %"rx
3401              Full paths to files in the register {x}.   In  case  of  invalid
3402              symbol in place of {x}, it's processed with the rest of the line
3403              and default register is used.
3404
3405       %m     Show command output in a menu.
3406
3407       %M     Same as %m, but l (or Enter) key is handled like for :locate and
3408              :find commands.
3409
3410       %u     Process  command output as list of paths and compose custom view
3411              out of it.
3412
3413       %U     Same as %u, but implies less list updates inside vifm, which  is
3414              absence of sorting at the moment.
3415
3416       %Iu    Same  as  %u, but gives up terminal before running external com‐
3417              mand.
3418
3419       %IU    Same as %U, but gives up terminal before running  external  com‐
3420              mand.
3421
3422       %S     Show command output in the status bar.
3423
3424       %q     Redirect  command  output  to  quick view, which is activated if
3425              disabled.
3426
3427       %s     Execute command in horizontally split window of active  terminal
3428              multiplexer (ignored if not running inside one).
3429
3430       %v     Same as %s, but splits vertically.
3431
3432       %n     Forbid use of terminal multiplexer to run the command.
3433
3434       %N     Do  not  detach  viewer  from terminal session (keeps `/dev/tty`
3435              available) or process group (keeps the command  in  the  set  of
3436              foreground clients of the terminal).
3437
3438       %i     Run in background and suppress error dialogs, but collect errors
3439              internally for viewing via :jobs menu.
3440
3441       %Pl    Pipe list of files to standard input of a command.
3442
3443       %Pz    Same as %Pl, but separates paths by null ('\0') character.
3444
3445       %pc    Marks the end of the main command and the beginning of the clear
3446              command  for graphical preview, which is invoked on closing pre‐
3447              view of a file.
3448
3449       %pd    Marks a preview command as one that directly  communicates  with
3450              the  terminal.   Beware that this is for things like sixel which
3451              are self-contained sequences that depend only on current  cursor
3452              position, using this with anything else is likely to mangle ter‐
3453              minal state.
3454
3455       %pu    Uncached preview.  Intended to be used for  commands  that  just
3456              send file path somewhere for preview.
3457
3458       The following dimensions and coordinates are in characters:
3459
3460       %px    x coordinate of top-left corner of preview area.
3461
3462       %py    y coordinate of top-left corner of preview area.
3463
3464       %pw    width of preview area.
3465
3466       %ph    height of preview area.
3467
3468
3469       Use %% if you need to put a percent sign in your command.
3470
3471       Note  that  %i,  %Iu, %IU, %m, %M, %n, %q, %s, %S, %u, %U and %v macros
3472       are mutually exclusive.  Only the last one of them on the command  will
3473       take effect.
3474
3475       Note  that  %Pl  and  %Pz are mutually exclusive.  Only the last one of
3476       them on the command will take effect.
3477
3478       You can use file name modifiers after %c, %C, %f, %F,  %b,  %d  and  %D
3479       macros.  Supported modifiers are:
3480
3481         - :p           - full path
3482
3483         - :u             -   UNC   name   of   path   (e.g.   "\\server"   in
3484           "\\server\share"), Windows only.  Expands to current computer  name
3485           for not UNC paths.
3486
3487         - :~           - relative to the home directory
3488
3489         - :.           - relative to current directory
3490
3491         - :h           - head of the file name
3492
3493         - :t           - tail of the file name
3494
3495         - :r           - root of the file name (without last extension)
3496
3497         - :e           - extension of the file name (last one)
3498
3499         - :s?pat?sub?   -  substitute  the  first occurrence of pat with sub.
3500           You can use any character for '?', but it must not occur in pat  or
3501           sub.
3502
3503         - :gs?pat?sub? - like :s, but substitutes all occurrences of pat with
3504           sub.
3505
3506       See ':h filename-modifiers' in Vim's documentation for the detailed de‐
3507       scription.
3508
3509       Using  %x means expand corresponding macro escaping all characters that
3510       have special meaning.  And %"x means using of double quotes and  escape
3511       only  backslash  and  double  quote characters, which is more useful on
3512       Windows systems.
3513
3514       Position and quantity (if there is any) of %m, %M, %S or %s  macros  in
3515       the command is unimportant.  All their occurrences are removed from the
3516       resulting command.
3517
3518       %c and %f macros are expanded to file names only, when %C  and  %F  are
3519       expanded to full paths.  %f and %F follow this in %b too.
3520
3521       :com move mv %f %D
3522              set  the  :move command to move all of the files selected in the
3523              current directory to the other directory.
3524
3525       The %a macro is replaced with any arguments given to an alias  command.
3526       All arguments are considered optional.
3527              :com  lsl !!ls -l %a - set the lsl command to execute ls -l with
3528              or without an argument.
3529
3530       :lsl<Enter>
3531              will list the directory contents of the current directory.
3532
3533       :lsl filename<Enter>
3534              will list only the given filename.
3535
3536       The macros can also be used in directly executing commands.   ":!mv  %f
3537       %D" would move the current directory selected files to the other direc‐
3538       tory.
3539
3540       Appending & to the end of a command causes it to  be  executed  in  the
3541       background.   Typically  you want to run two kinds of external commands
3542       in the background:
3543
3544         - GUI applications that doesn't fork thus block vifm (:!sxiv %f &);
3545
3546         - console tools that do not work with terminal (:!mv %f %D &).
3547
3548       You don't want to run terminal commands, which require  terminal  input
3549       or output something in background because they will mess up vifm's TUI.
3550       Anyway, if you did run such a command, you can use Ctrl-L key to update
3551       vifm's TUI.
3552
3553       Rewriting  the example command with macros given above with background‐
3554       ing:
3555
3556       %m, %M, %s, %S, %u and %U macros cannot  be  combined  with  background
3557       mark (" &") as it doesn't make much sense.
3558

Command backgrounding

3560       Copy  and move operation can take a lot of time to proceed.  That's why
3561       vifm supports backgrounding of this  two  operations.   To  run  :copy,
3562       :move  or :delete command in the background just add " &" at the end of
3563       a command.
3564
3565       For each background operation a new thread is created.   Job  cancella‐
3566       tion can be requested in the :jobs menu via dd shortcut.
3567
3568       You  can  see  if  command  is  still running in the :jobs menu.  Back‐
3569       grounded commands have progress instead of process id at the  line  be‐
3570       ginning.
3571
3572       Background operations cannot be undone.
3573

Cancellation

3575       Note that cancellation works somewhat different on Windows platform due
3576       to different mechanism of break signal  propagation.   One  also  might
3577       need to use Ctrl-Break shortcut instead of Ctrl-C.
3578
3579       There are two types of operations that can be cancelled:
3580
3581         - file system operations;
3582
3583         - mounting  with  FUSE  (but  not  unmounting as it can cause loss of
3584           data);
3585
3586         - calls of external applications.
3587
3588       Note that vifm never terminates applications, it  sends  SIGINT  signal
3589       and lets the application quit normally.
3590
3591       When one of set of operations is cancelled (e.g. copying of 5th file of
3592       10 files), further operations are cancelled too.   In  this  case  undo
3593       history will contain only actually performed operations.
3594
3595       Cancelled  operations are indicated by "(cancelled)" suffix appended to
3596       information message on status bar.
3597
3598       File system operations
3599
3600       Currently the following commands  can  be  cancelled:  :alink,  :chmod,
3601       :chown,  :clone,  :copy,  :delete,  :mkdir,  :move,  :restore,  :rlink,
3602       :touch.  File putting (on p/P key) can be cancelled as well.  It's  not
3603       hard to see that these are mainly long-running operations.
3604
3605       Cancelling  commands when they are repeated for undo/redo operations is
3606       allowed for convenience, but is not recommended  as  further  undo/redo
3607       operations  might  get  blocked  by side-effects of partially cancelled
3608       group of operations.
3609
3610       These commands can't be cancelled: :empty, :rename, :substitute, :tr.
3611
3612       Mounting with FUSE
3613
3614       It's not considered to be an error, so only notification on the  status
3615       bar is shown.
3616
3617       External application calls
3618
3619       Each  of this operations can be cancelled: :apropos, :find, :grep, :lo‐
3620       cate.
3621

Selection

3623       If there is a selection, it's stashed before proceeding further  unless
3624       file  under the cursor is part of that selection.  This means that when
3625       macros are expanded for :filetype or :filextype programs, `%f` and `%F`
3626       become  equivalent to `%c` and `%C` respectively if current file is not
3627       selected.  So you run selection by running one of selected files,  oth‐
3628       erwise  you're  running  a single file even if there are other selected
3629       entries.
3630
3631       When running a selection it must not include broken symbolic links, has
3632       to  be consistent and set of file handlers must be compatible.  Consis‐
3633       tency means that selection contains either only directories  (including
3634       links to them) or only files, but not their mix.
3635
3636       Compatibility is a more sophisticated check, but it's defined in a nat‐
3637       ural way so that you get what you'd expect.  The  following  properties
3638       of selection are taken into account while checking it for compatibility
3639       and deciding how to handle it:
3640
3641
3642         1. If there any files for which handler isn't defined, then all files
3643            are opened using 'vicmd' or 'vixcmd'.
3644
3645
3646         2. If all handlers match the following criteria:
3647             - backgrounded
3648             - include `%c` and/or `%C`
3649             - include neither `%f` nor `%F`
3650            then each file is executed independently of the rest.
3651
3652
3653         3. If  all  handlers are equal, the common handler is executed.  This
3654            handler might ignore selection and process  only  file  under  the
3655            cursor.
3656
3657
3658         4. Otherwise,  an error is reported, because handlers differ and they
3659            don't support parallel execution.
3660

Patterns

3662       :highlight, :filetype, :filextype, :fileviewer commands and  'classify'
3663       option  support globs, regular expressions and mime types to match file
3664       names or their paths.
3665
3666       There are six possible ways to write a single pattern:
3667
3668         1. [!]{comma-separated-name-globs}
3669
3670         2. [!]{{comma-separated-path-globs}}
3671
3672         3. [!]/name-regular-expression/[iI]
3673
3674         4. [!]//path-regular-expression//[iI]
3675
3676         5. [!]<comma-separated-mime-type-globs>
3677
3678         6. undecorated-pattern
3679
3680       First five forms can include leading exclamation mark that negates pat‐
3681       tern matching.
3682
3683       The  last  form is implicitly refers to one of others.  :highlight does
3684       not accept undecorated form, while :filetype, :filextype,  :fileviewer,
3685       :select, :unselect and 'classify' treat it as list of name globs.
3686
3687       Path  patterns receive absolute path of the file that includes its name
3688       component as well.
3689
3690       To combine several patterns (AND them), make sure you're using  one  of
3691       the first five forms and write patterns one after another, like this:
3692         <text/plain>{*.vifm}
3693       Mind that if you make a mistake the whole string will be treated as the
3694       sixth form.
3695
3696       :filetype, :filextype and :fileviewer commands  accept  comma-separated
3697       list of patterns instead of a single pattern, thus effectively handling
3698       OR operation on them:
3699         <text/plain>{*.vifm},<application/pdf>{*.pdf}
3700       Forms that accept comma-separated lists of patterns also  process  them
3701       as lists of alternatives.
3702
3703       Patterns with regular expressions
3704
3705       Regular  expression  patterns  are case insensitive by default, see de‐
3706       scription of commands, which might override default behaviour.
3707
3708       Flags of regular expressions mean the following:
3709         - "i" makes filter case insensitive;
3710         - "I" makes filter case sensitive.  They  can  be  repeated  multiple
3711       times,  but  the later one takes precedence (e.g.  "iiiI" is equivalent
3712       to "I" and "IiIi" is the same as "i").
3713
3714       There are no implicit `^` or `$`, so make sure to specify them  explic‐
3715       itly if the pattern should match the whole name or path.
3716
3717       Patterns with globs
3718
3719       "Globs"  section below provides short overview of globs and some impor‐
3720       tant points that one needs to know about them.
3721
3722       Patterns with mime-types
3723
3724       Mime type matching is essentially globs matching applied to  mime  type
3725       of  a  file instead of its name/path.  Note: mime types aren't detected
3726       on Windows.
3727
3728       Examples
3729
3730       Associate `evince` to PDF-files only inside `/home/user/downloads/` di‐
3731       rectory (excluding its subdirectories):
3732
3733         :filextype //^/home/user/downloads/[^/]*.pdf$// evince %f
3734
3735

Regular expressions

3737       All  regular  expressions  are  modern/extended.  See `man 7 regex` for
3738       more details on what's supported.
3739
3740       The following special sequences are additionally parsed:
3741        - `\c` forces matching ignoring case of letters
3742        - `\C` forces matching respecting case of letters
3743
3744       `\c` and `\C` have the highest priority in determining whether case  is
3745       matched  or  not  and  exist  to override 'ignorecase', 'smartcase' and
3746       `i`/`I` flags when necessary.
3747
3748       If multiple sequences are present, the one which  appears  later  takes
3749       precedence.
3750
3751       Note  that unlike in Vim character classes are affected by settings and
3752       sequences that control case sensitivity in regular expressions.
3753

Globs

3755       Globs are always case insensitive as it makes sense in general case.
3756
3757       `*`, `?`, `[` and `]` are treated as special symbols  in  the  pattern.
3758       E.g.
3759
3760         :filetype * less %c
3761
3762       matches all files.  One can use character classes for escaping, so
3763
3764         :filetype [*] less %c
3765
3766       matches  only  one file name, the one which contains only asterisk sym‐
3767       bol.
3768
3769       `*` means any number of any characters (possibly an  empty  substring),
3770       with one exception: asterisk at the pattern beginning doesn't match dot
3771       in the first position.  E.g.
3772
3773         :fileviewer *.zip,*.jar zip -sf %c
3774
3775       associates using of `zip` program to preview all files  with  `zip`  or
3776       `jar`  extensions as listing of their content, but `.file.zip` won't be
3777       matched.
3778
3779       `?` means any character at this position.  E.g.
3780
3781         :fileviewer ?.out file %c
3782
3783       calls `file` tool for all files which have exactly one character before
3784       their extension (e.g. a.out, b.out).
3785
3786       Square brackets designate character class, which means that whole char‐
3787       acter class matches against any of characters listed in it.  For  exam‐
3788       ple
3789
3790         :fileviewer *.[ch] highlight -O xterm256 -s dante --syntax c %c
3791
3792       makes vifm call `highlight` program to colorize source and header files
3793       in C language for a 256-color terminal.  Equal command would be
3794
3795         :fileviewer *.c,*.h highlight -O xterm256 -s dante --syntax c %c
3796
3797
3798       Inside square brackets `^` or `!` can be used for symbol class negotia‐
3799       tion  and  the  `-`  symbol  to set a range.  `^` and `!` should appear
3800       right after the opening square bracket.  For example
3801
3802         :filetype *.[!d]/ inspect_dir
3803
3804       associates `inspect_dir` as additional handler for all directories that
3805       have one character extension unless it's "d" letter.  And
3806
3807         :filetype [0-9].jpg sxiv
3808
3809       associates  `sxiv` picture viewer only for JPEG-files that contain sin‐
3810       gle digit in their name.
3811
3812       If you need to include literal comma, which is normally separates  mul‐
3813       tiple globs, double it.
3814

:set options

3816       Local options
3817              These are kind of options that are local to a specific view.  So
3818              you can set ascending sorting order for left pane and descending
3819              order for right pane.
3820
3821              In  addition  to being local to views, each such option also has
3822              two values:
3823
3824                - local to current directory (value  associated  with  current
3825                  location);
3826
3827                - global  to  current  directory  (value  associated  with the
3828                  pane).
3829
3830              The idea is that current directory can be made a  temporary  ex‐
3831              ception  to  regular  configuration of the view, until directory
3832              change.  Use :setlocal for that.  :setglobal changes view  value
3833              not  affecting  settings  until  directory change.  :set applies
3834              changes immediately to all values.
3835
3836
3837       'aproposprg'
3838              type: string
3839              default: "apropos %a"
3840              Specifies format for an external command to be  invoked  by  the
3841              :apropos command.  The format supports expanding of macros, spe‐
3842              cific for a particular *prg option, and %% sequence for  insert‐
3843              ing  percent  sign literally.  This option should include the %a
3844              macro to specify placement of arguments passed to  the  :apropos
3845              command.   If the macro is not used, it will be implicitly added
3846              after a space to the value of this option.
3847
3848       'autocd'
3849              type: boolean
3850              default: false
3851              When enabled unknown command-line commands  are  interpreted  as
3852              implicit  invocation  of  :cd with one argument and no escaping.
3853              Tilde is expanded, but not macros or environment variables.
3854
3855       'autochpos'
3856              type: boolean
3857              default: true
3858              When disabled vifm will set cursor to the first line in the view
3859              after  :cd and :pushd commands instead of saved cursor position.
3860              Disabling this will also make vifm clear information about  cur‐
3861              sor position in the view history on :cd and :pushd commands (and
3862              on startup if 'autochpos' is disabled in the vifmrc).  l key  in
3863              the  ":history ." and ":trashes" menus are treated like :cd com‐
3864              mand.  This option also affects marks so that  navigating  to  a
3865              mark doesn't restore cursor position.
3866
3867              When this option is enabled, more fine grained control over cur‐
3868              sor position is available via 'histcursor' option.
3869
3870       'columns' 'co'
3871              type: integer
3872              default: terminal width on startup
3873              Terminal width in characters.
3874
3875       'caseoptions'
3876              type: charset
3877              default: ""
3878              This option gives additional control over  case  sensitivity  by
3879              allowing  overriding  default behaviour to either always be case
3880              sensitive or always be case insensitive.  Possible  values  form
3881              pairs  of  lower  and upper case letters that configure specific
3882              aspect of behaviour:
3883                p - always ignore case of paths during completion.
3884                P - always match case of paths during completion.
3885                g - always ignore case of characters for f/F/;/,.
3886                G - always match case of characters for f/F/;/,.
3887
3888              At most one item of each pair takes affect, if both or more  are
3889              present,  only  the  last one matters.  When none of pair's ele‐
3890              ments are present, the behaviour is default (depends on  operat‐
3891              ing system for path completion and on values of 'ignorecase' and
3892              'smartcase' options for file navigation).
3893
3894       'cdpath' 'cd'
3895              type: string list
3896              default: value of $CDPATH with commas instead of colons
3897              Specifies locations to check on changing directory with relative
3898              path  that  doesn't  start  with "./" or "../".  When non-empty,
3899              current directory is examined after directories  listed  in  the
3900              option.
3901
3902              This option doesn't affect completion of :cd command.
3903
3904              Example:
3905
3906                set cdpath=~
3907
3908              This  way  ":cd  bin"  will  switch to "~/bin" even if directory
3909              named "bin" exists in current directory, while ":cd ./bin"  com‐
3910              mand will ignore value of 'cdpath'.
3911
3912       'chaselinks'
3913              type: boolean
3914              default: false
3915              When  enabled path of view is always resolved to real path (with
3916              all symbolic links expanded).
3917
3918       'classify'
3919              type: string list
3920              default: ":dir:/"
3921              Specifies file name prefixes and suffixes depending on file type
3922              or name.  The format is either of:
3923                - [{prefix}]:{filetype}:[{suffix}]
3924                - [{prefix}]::{pattern}::[{suffix}]
3925              Possible  {pattern}  forms  are  described in "Patterns" section
3926              above.
3927
3928              Priority rules:
3929                - file name patterns have priority over type patterns
3930                - file name patterns are matched  in  left-to-right  order  of
3931              their appearance in this option
3932
3933              Either {prefix} or {suffix} or both can be omitted (which is the
3934              default for all unspecified file types), this means empty  {pre‐
3935              fix}  and/or  {suffix}.  {prefix} and {suffix} should consist of
3936              at most eight characters.  Elements  are  separated  by  commas.
3937              Neither  prefixes  nor  suffixes are part of file names, so they
3938              don't affect commands which operate on file names  in  any  way.
3939              Comma  (',')  character can be inserted by doubling it.  List of
3940              file type names can be found in the  description  of  filetype()
3941              function.
3942
3943       'confirm' 'cf'
3944              type: set
3945              default: delete,permdelete
3946              Defines which operations require confirmation:
3947               - delete     - moving files to trash (on d or :delete);
3948               -  permdelete  -  permanent deletion of files (on D or :delete!
3949              command or on undo/redo operation).
3950
3951       'cpoptions' 'cpo'
3952              type: charset
3953              default: "fst"
3954              Contains a sequence of single-character flags.   Each  flag  en‐
3955              ables behaviour of older versions of vifm.  Flags:
3956               - f - when included, running :filter command results in not in‐
3957              verted (matching files are filtered out)  and  :filter!  in  in‐
3958              verted  (matching  files are left) filter, when omitted, meaning
3959              of the exclamation mark changes to the opposite;
3960               - s - when included, yy, dd and DD normal mode commands act  on
3961              selection, otherwise they operate on current file only;
3962               -  t  - when included, <tab> (thus <c-i>) behave as <space> and
3963              switches active pane, otherwise <tab> and <c-i>  go  forward  in
3964              the view history.  It's possible to make both <tab> and <c-i> to
3965              work as expected by setting up the terminal to emit a custom se‐
3966              quence when <c-i> is pressed; see :histnext for details.
3967
3968       'cvoptions'
3969              type: set
3970              default:
3971              Specifies  whether entering/leaving custom views triggers events
3972              that normally happen on entering/leaving directories:
3973               - autocmds    - trigger autocommands on entering/leaving custom
3974              views;
3975               -  localopts   - reset local options on entering/leaving custom
3976              views;
3977               - localfilter - reset local filter on  entering/leaving  custom
3978              views.
3979
3980       'deleteprg'
3981              type: string
3982              default: ""
3983              Specifies  program to run on files that are permanently removed.
3984              When empty, files are removed as usual, otherwise  this  command
3985              is  invoked  on each file by appending its name.  If the command
3986              doesn't remove files, they will remain on the file system.
3987
3988       'dirsize'
3989              type: enumeration
3990              default: size
3991              Controls how size of directories is  displayed  in  file  views.
3992              The following values are possible:
3993               -  size   - size of directory (i.e., size used to store list of
3994              files)
3995               - nitems - number of entries in the directory (excluding .  and
3996              ..)
3997
3998              Size  obtained via ga/gA overwrites this setting so seeing count
3999              of files and occasionally size of directories is possible.
4000
4001       'dotdirs'
4002              type: set
4003              default: nonrootparent,treeleafsparent
4004              Controls displaying of dot directories.   The  following  values
4005              are possible:
4006               - rootparent      - show "../" in root directory of file system
4007               -  nonrootparent   - show "../" in non-root directories of file
4008              system
4009               - treeleafsparent - show "../" in  empty  directories  of  tree
4010              view
4011
4012              Note  that  empty directories always contain "../" entry regard‐
4013              less of value of this option.  "../" disappears at the moment at
4014              least one file is created.
4015
4016       'dotfiles'
4017              type: boolean
4018              default: false
4019              Whether dot files are shown in the view.  Can be controlled with
4020              z* bindings.
4021
4022       'fastrun'
4023              type: boolean
4024              default: false
4025              With this option turned on you can run  partially  entered  com‐
4026              mands  with unambiguous beginning using :! (e.g. :!Te instead of
4027              :!Terminal or :!Te<tab>).
4028
4029       'fillchars' 'fcs'
4030              type: string list
4031              default: ""
4032              Sets characters used to fill borders.
4033
4034                item         default    used for
4035                vborder:c    ' '        left, middle and right  vertical  bor‐
4036              ders
4037                hborder:c    ''         middle horizontal border
4038
4039              A null string for vborder is equivalent to a space.
4040
4041              A null string for hborder omits the horizontal border.
4042
4043              Example:
4044
4045                set fillchars=vborder:".",hborder:""
4046
4047       'findprg'
4048              type: string
4049              default:  "find %s %a -print , -type d \( ! -readable -o ! -exe‐
4050              cutable \) -prune"
4051              Specifies format for an external command to be  invoked  by  the
4052              :find command.  The format supports expansion of macros specific
4053              for this particular option and %% sequence for inserting percent
4054              sign literally.  The macros are:
4055
4056                macro   value/meaning
4057                 %s     literal arguments of :find or
4058                        list of paths to search in
4059
4060                 %A     empty or
4061                        literal arguments of :find
4062                 %a     empty or
4063                        literal arguments of :find or
4064                        predicate followed by escaped arguments of :find
4065                 %p     empty or
4066                        literal arguments of :find or
4067                        escaped arguments (parameters) of :find
4068
4069                 %u      redirect  output  to custom view instead of showing a
4070              menu
4071                 %U     redirect output to unsorted  custom  view  instead  of
4072              showing a menu
4073
4074              Predicate in %a is "-name" on *nix and "-iname" on Windows.
4075
4076              If both %u and %U are specified, %U is chosen.
4077
4078              Some macros can be added implicitly:
4079               - if %s isn't present, it's appended
4080               - if neither of %a, %A and %p is present, %a is appended
4081               - if neither of %s, %a, %A and %p is present, %s and %a are ap‐
4082              pended in this order
4083
4084              The macros slightly change their meaning depending on format  of
4085              :find's arguments:
4086               -  if the first argument points to an existing directory, %s is
4087              assigned all arguments while %a, %A and %p are left empty
4088               - otherwise:
4089                  - %s is assigned a dot (".") meaning  current  directory  or
4090              list of selected file names, if any
4091                  -  %a,  %A  and %p are assigned literal arguments when first
4092              argument starts with a dash ("-"), otherwise %a gets an  escaped
4093              version  of  the  arguments with a predicate and %p contains es‐
4094              caped version of the arguments
4095
4096              Starting with Windows Server 2003 a `where`  command  is  avail‐
4097              able.  One can configure vifm to use it in the following way:
4098
4099                  set findprg="where /R %s %A"
4100
4101              As  the  syntax of this command is rather limited, one can't use
4102              :find command with selection of more than one item  because  the
4103              command ignores all directory paths except for the last one.
4104
4105              When  using  find  port  on  Windows, another option is to setup
4106              'findprg' like this:
4107
4108                  set findprg="find %s %a"
4109
4110
4111       'followlinks'
4112              type: boolean
4113              default: true
4114              Follow links on l or Enter.  That  is  navigate  to  destination
4115              file  instead  of  treating  the link as if it were target file.
4116              Doesn't affects links to directories, which are  always  entered
4117              (use gf key for directories).
4118
4119       'fusehome'
4120              type: string
4121              default: "($XDG_DATA_HOME/vifm | $VIFM)/fuse/"
4122              Directory  to  be  used as a root dir for FUSE mounts.  Value of
4123              the option can contain  environment  variables  (in  form  "$en‐
4124              vname"), which will be expanded (prepend it with a slash to pre‐
4125              vent expansion).  The value should expand to an absolute path.
4126
4127              If you change this option, vifm won't remount anything.  It  af‐
4128              fects  future  mounts only.  See "Automatic FUSE mounts" section
4129              below for more information.
4130
4131       'gdefault' 'gd'
4132              type: boolean
4133              default: false
4134              When on, 'g' flag is on for :substitute by default.
4135
4136       'grepprg'
4137              type: string
4138              default: "grep -n -H -I -r %i %a %s"
4139              Specifies format for an external command to be  invoked  by  the
4140              :grep  command.   The  format supports expanding of macros, spe‐
4141              cific for a particular *prg option, and %% sequence for  insert‐
4142              ing  percent  sign literally.  This option should include the %i
4143              macro to specify placement of "-v" string when inversion of  re‐
4144              sults is requested, %a or %A macro to specify placement of argu‐
4145              ments passed to the :grep command and the %s  macro  to  specify
4146              placement  of list of files to search in.  If some of the macros
4147              are not used, they will be implicitly added after a space to the
4148              value  of  the  'grepprg' option in the following order: %i, %a,
4149              %s.  Note that when neither %a nor %A  are  specified,  it's  %a
4150              which is added implicitly.
4151
4152              Optional  %u  or %U macro could be used (if both specified %U is
4153              chosen) to force redirection to custom or unsorted  custom  view
4154              respectively.
4155
4156              See  'findprg'  option  for description of difference between %a
4157              and %A.
4158
4159              Example of setup to use ack (http://beyondgrep.com/) instead  of
4160              grep:
4161
4162                set grepprg='ack -H -r %i %a %s'
4163
4164              or   The   Silver  Searcher  (https://github.com/ggreer/the_sil
4165              ver_searcher):
4166
4167                set grepprg='ag --line-numbers %i %a %s'
4168
4169
4170
4171       'histcursor'
4172              type: set
4173              default: startup,dirmark,direnter
4174              Defines situations when cursor should be moved according to  di‐
4175              rectory history:
4176               - startup  - on loading file lists during startup
4177               -  dirmark   -  after navigating to a mark that doesn't specify
4178              file
4179               - direnter - on opening directory from a file list
4180
4181              This option has no effect when 'autochpos' is disabled.
4182
4183              Note that the list is not exhaustive and there are other  situa‐
4184              tions when cursor is positioned automatically.
4185
4186       'history' 'hi'
4187              type: integer
4188              default: 15
4189              Maximum number of stored items in all histories.
4190
4191       'hlsearch' 'hls'
4192              type: boolean
4193              default: true
4194              Automatically select files that are search matches.
4195
4196       'iec'  type: boolean
4197              default: false
4198              Use  KiB,  MiB,  ... suffixes instead of K, M, ... when printing
4199              size in human-friendly format.
4200
4201       'ignorecase' 'ic'
4202              type: boolean
4203              default: false
4204              Ignore case in search patterns (:substitute, / and ?  commands),
4205              local  filter (but not the rest of filters) and other things de‐
4206              tailed in the description of 'caseoptions'.
4207
4208       'incsearch' 'is'
4209              type: boolean
4210              default: false
4211              When this option is set, search and view update for local filter
4212              is  be performed starting from initial cursor position each time
4213              search pattern is changed.
4214
4215       'iooptions'
4216              type: set
4217              default: datasync
4218              Controls details of file operations.  The following  values  are
4219              available:
4220               -  datasync  - periodically synchronize writes on copying files
4221              when 'syscalls' is set.
4222                            (This makes copying last as long as  it  takes  to
4223              actually write
4224                            data to the medium, which is slower than you might
4225              expect;
4226                            however, this also prevents system hanging due  to
4227              filling memory
4228                            with file-system cache.)
4229               -  fastfilecloning - perform fast file cloning (copy-on-write),
4230              when available (available on Linux and btrfs file system).
4231
4232       'laststatus' 'ls'
4233              type: boolean
4234              default: true
4235              Controls if status bar is visible.
4236
4237       'lines'
4238              type: integer
4239              default: terminal height on startup
4240              Terminal height in lines.
4241
4242       'locateprg'
4243              type: string
4244              default: "locate %a"
4245              Specifies format for an external command to be  invoked  by  the
4246              :locate  command.  The format supports expanding of macros, spe‐
4247              cific for a particular *prg option, and %% sequence for  insert‐
4248              ing  percent  sign literally.  This option should include the %a
4249              macro to specify placement of arguments passed  to  the  :locate
4250              command.   If the macro is not used, it will be implicitly added
4251              after a space to the value of this option.
4252
4253              Optional %u or %U macro could be used (if both specified  %U  is
4254              chosen)  to  force redirection to custom or unsorted custom view
4255              respectively.
4256
4257       'mediaprg'
4258              type: string
4259              default: path to bundled script that supports udevil, udisks and
4260              udisks2
4261                       (using  udisks2  requires  python  with dbus module in‐
4262              stalled)
4263                       OS X: path points to a python script that uses diskutil
4264              {only for *nix}
4265              Specifies command to be used to manage media devices.   Used  by
4266              :media command.
4267
4268              The command can be passed the following parameters:
4269               - list           -- list media
4270               - mount {device} -- mount a device
4271               - unmount {path} -- unmount given mount point
4272
4273              The  output  of  `list`  subcommand is parsed in search of lines
4274              that start with one of the following prefixes:
4275               - device=      - specifies device path (e.g., "/dev/sde")
4276               - label=       - specifies optional device label (e.g., "Memory
4277              card")
4278               -  info=         -  specifies arbitrary text to display next to
4279              device (by
4280                                default "[label]" is used, if  label  is  pro‐
4281              vided)
4282               -  mount-point= - specifies a mount point (can be absent or ap‐
4283              pear more than once)
4284
4285              All other lines are ignored.  Each `device=` starts a  new  sec‐
4286              tion describing a device which should include two other possible
4287              prefixes.
4288
4289              `list` subcommand is assumed to always succeed, while exit  code
4290              of  `mount`  and  `unmount`  is  taken into account to determine
4291              whether operation was performed successfully.
4292
4293       'lsoptions'
4294              type: string list
4295              default: ""
4296              scope: local
4297
4298              Configures ls-like view.
4299
4300                item          used for
4301                columncount   fixed number of columns to display or 0
4302                transposed    filling view grid  by  columns  rather  than  by
4303              lines
4304
4305
4306       'lsview'
4307              type: boolean
4308              default: false
4309              scope: local
4310              When  this  option  is  set, directory view will be displayed in
4311              multiple columns with file names similar to output  of  `ls  -x`
4312              command.   See  "ls-like view" section below for format descrip‐
4313              tion.  This option has no effect if 'millerview' is on.
4314
4315       'milleroptions'
4316              type: string list
4317              default: "lsize:1,csize:1,rsize:1,rpreview:dirs"
4318              scope: local
4319
4320              Configures miller view.
4321
4322                item          default  used for
4323                lsize:num     0        left column
4324                csize:num     1        center column (can't be disabled)
4325                rsize:num     0        right column
4326                rpreview:str  dirs     right column
4327
4328              *size specifies ratios of columns.  Each ratio is in  the  range
4329              from  0  to 100 and values are adjusted to fit the limits.  Zero
4330              disables a column, but central (main) column can't be disabled.
4331
4332              rpreview specifies what file-system objects should be  previewed
4333              in  the right column and takes three values: dirs (only directo‐
4334              ries), files (only files) or all.  Neither value enables preview
4335              of parent directory ("..").
4336
4337              Example  of  two-column mode which is useful in combination with
4338              :view command:
4339
4340                set milleroptions=lsize:1,csize:2
4341
4342
4343       'millerview'
4344              type: boolean
4345              default: false
4346              scope: local
4347              When this option is set, directory view  will  be  displayed  in
4348              multiple cascading columns.  Ignores 'lsview'.
4349
4350       'mintimeoutlen'
4351              type: integer
4352              default: 150
4353              The  fracture of 'timeoutlen' in milliseconds that is waited be‐
4354              tween subsequent input polls, which affects various asynchronous
4355              operations  (detecting  changes  made  by external applications,
4356              monitoring background jobs, redrawing UI).  There are no  strict
4357              guarantees,  however  the  higher this value is, the less is CPU
4358              load in idle mode.
4359
4360       'mouse'
4361              type: charset
4362              default: ""
4363
4364              Contains a sequence of single-character flags:
4365               - a - all supported modes (a shorthand for all the rest and fu‐
4366              ture additions)
4367               - c - command-line mode (includes navigation mode)
4368               - m - menu mode
4369               - n - normal mode
4370               - q - view mode
4371               - v - visual mode
4372
4373       'navoptions'
4374              type: string list
4375              default: "open:dirs"
4376
4377              Configures behaviour of navigation mode.
4378
4379                item      default
4380                open:str  dirs
4381
4382              The  "open"  item  specifies  what file-system objects should be
4383              opened on Enter and can take two values: dirs (only directories)
4384              or all.
4385
4386       'number' 'nu'
4387              type: boolean
4388              default: false
4389              scope: local
4390              Print  line  number in front of each file name when 'lsview' op‐
4391              tion is turned off.  Use 'numberwidth' to control width of  line
4392              number.  Also see 'relativenumber'.
4393
4394       'numberwidth' 'nuw'
4395              type: integer
4396              default: 4
4397              scope: local
4398              Minimal number of characters for line number field.
4399
4400       'previewoptions'
4401              type: string list
4402              default: "graphicsdelay:50000"
4403
4404              Tweaks how previewing is done (in quick view, miller view's col‐
4405              umn and view mode).
4406
4407                item               default  meaning
4408                graphicsdelay:num  0        delay before drawing graphics (mi‐
4409              croseconds)
4410                hardgraphicsclear  unset    redraw screen to get rid of graph‐
4411              ics
4412                maxtreedepth:num   0        max number of  levels  in  preview
4413              tree
4414                toptreestats       unset    show file counts before the tree
4415
4416              graphicsdelay is needed if terminal requires some timeout before
4417              it can draw graphics (otherwise it gets lost).
4418
4419              hardgraphicsclear seems to be necessary  to  get  rid  of  sixel
4420              graphics  in  some  terminals, where it otherwise lingers.  This
4421              can cause flicker on the screen due to erasure followed  by  re‐
4422              drawing.
4423
4424              0  for maxtreedepth means "unlimited", 1 will only show selected
4425              directory, 2 adds its children, and so forth.
4426
4427              Default value is used when item is missing from the option.
4428
4429       'previewprg'
4430              type: string
4431              default: ""
4432              scope: local
4433
4434              External command to be used instead of preview programs  config‐
4435              ured via :fileviewer command.
4436
4437              Example:
4438
4439                " always show git log in preview of files inside some repository
4440                au DirEnter '~/git-repo/**/*' setl previewprg='git log --color -- %c 2>&1'
4441
4442       'quickview'
4443              type: boolean
4444              default: false
4445              Whether quick view (:view) is currently active or not.
4446
4447       'relativenumber' 'rnu'
4448              type: boolean
4449              default: false
4450              scope: local
4451              Print  relative  line  number  in  front  of each file name when
4452              'lsview' option is turned off.   Use  'numberwidth'  to  control
4453              width  of  line  number.   Various  combinations of 'number' and
4454              'relativenumber' lead to such results:
4455
4456                                      nonumber               number
4457
4458                  norelativenumber   | first                |   1 first
4459                                     | second               |   2 second
4460                                     | third                |   3 third
4461
4462                    relativenumber   |   1 first            |   1 first
4463                                     |   0 second           |2    second
4464                                     |   1 third            |   1 third
4465
4466
4467       'rulerformat' 'ruf'
4468              type: string
4469              default: "%l/%S "
4470              Determines the content of the ruler.  Its minimal  width  is  13
4471              characters  and  it's  right aligned.  Following macros are sup‐
4472              ported:
4473               %=  - separation point between left and right aligned halves of
4474              the line
4475               %l  - file number
4476               %L   -  total  number  of files in view (including filtered out
4477              ones)
4478               %x  - number of files excluded by filters
4479               %0- - old name for %x macro
4480               %P  - percentage through file list (All, Top, xx% or Bot),  al‐
4481              ways 3 in length
4482               %S  - number of displayed files
4483               %=  - separation point between left and right align items
4484               %%  - literal percent sign
4485               %[  - designates beginning of an optional block
4486               %]  - designates end of an optional block
4487
4488              Percent  sign  can  be followed by optional minimum field width.
4489              Add '-' before minimum field width if you want field to be right
4490              aligned.
4491
4492              Optional  blocks are ignored unless at least one macro inside of
4493              them is expanded to a non-empty value.
4494
4495              Example:
4496
4497                set rulerformat='%2l-%S%[ +%x%]'
4498
4499       'runexec'
4500              type: boolean
4501              default: false
4502              Run executable file on Enter, l or Right Arrow  key.   Behaviour
4503              of the last two depends on the value of the 'lsview' option.
4504
4505       'scrollbind' 'scb'
4506              type: boolean
4507              default: false
4508              When  this  option  is  set, vifm will try to keep difference of
4509              scrolling positions of two windows constant.
4510
4511       'scrolloff' 'so'
4512              type: integer
4513              default: 0
4514              Minimal number of screen lines to keep above and below the  cur‐
4515              sor.   If you want cursor line to always be in the middle of the
4516              view (except at the beginning or end of the file list), set this
4517              option to some large value (e.g. 999).
4518
4519       'sessionoptions' 'ssop'
4520              sessionoptions ssop
4521              type: set
4522              default: tui,state,tabs,savedirs,dhistory
4523              An  equivalent of 'vifminfo' for sessions, uses the same values.
4524              When both options include the same value, data from session file
4525              has  higher  priority (data from vifminfo isn't necessarily com‐
4526              pletely discarded, instead it's merged with the state of a  ses‐
4527              sion  the  same  way  state  of  multiple instances is merged on
4528              exit).
4529
4530       'shell' 'sh'
4531              type: string
4532              default: $SHELL or "/bin/sh" or "cmd" (on MS-Windows)
4533              Full path to the shell to use to run external commands.  On *nix
4534              a shell argument can be supplied.
4535
4536       'shellcmdflag' 'shcf'
4537              type: string
4538              default: "-c" or "/C" (for cmd.exe on MS-Windows)
4539              Command-line  option  used  to  pass a command to 'shell'.  It's
4540              used in contexts where command comes from the user.
4541
4542              Note that using this option to force  interactive  mode  of  the
4543              shell  is  most  likely a BAD IDEA.  In general interactive host
4544              and interactive child shell can't share the same  terminal  ses‐
4545              sion.   You can't even run such a shell in background.  Consider
4546              writing a wrapper for your shell that preloads aliases and  com‐
4547              mands  without  making the shell interactive and ending up using
4548              it in a way it was not meant to be used.
4549
4550              Note that this option is ignored when 'shell' is set  to  Power‐
4551              Shell due to the internal use of `-encodedCommand`.
4552
4553       'shortmess' 'shm'
4554              type: charset
4555              default: "p"
4556              Contains  a  sequence  of single-character flags.  Each flag en‐
4557              ables shortening of some message displayed by vifm in  the  TUI.
4558              Flags:
4559               -  L  - display only last directory in tab line instead of full
4560              path.
4561               - M - shorten titles in windows of terminal  multiplexers  cre‐
4562              ated by vifm down to file name instead of using full path.
4563               -  T  -  truncate status bar messages in the middle if they are
4564              too long to fit on the command line.  "..." will appear  in  the
4565              middle.
4566               - p - use tilde shortening in view titles.
4567
4568
4569       'showtabline' 'stal'
4570              type: enumeration
4571              default: multiple
4572              Specifies when tab line should be displayed.  Possible values:
4573               - never    - never display tab line
4574               -  multiple  -  show  tab line only when there are at least two
4575              tabs
4576               - always   - display tab line always
4577
4578              Alternatively 0, 1 and 2 Vim-like values  are also accepted  and
4579              correspond to "never", "multiple" and "always" respectively.
4580
4581
4582       'sizefmt'
4583              type: string list
4584              default: "units:iec"
4585              Configures the way size is formatted in human-friendly way.
4586
4587                  item          value         meaning
4588                  units:         iec            Use 1024 byte units (K or KiB,
4589              etc.).
4590                                              See 'iec' option.
4591                                si            Use 1000 byte units (KB, etc.).
4592                  precision:    i > 0         How many fraction digits to con‐
4593              sider.
4594                                {not  set}     Precision of 1 for integer part
4595              < 10,
4596                                              0 otherwise (provides old behav‐
4597              iour).
4598                  space          {present}      Insert  space before unit sym‐
4599              bols.
4600                                              This is the default.
4601                  nospace       {present}     Do not insert space before  unit
4602              symbols.
4603
4604              Numbers are rounded from zero.  Trailing zeros are dropped.
4605
4606              Example:
4607
4608                set sizefmt=units:iec,precision:2,nospace
4609
4610
4611       'slowfs'
4612              type: string list
4613              default: ""
4614              only for *nix
4615              A  list of mounter fs name beginnings (first column in /etc/mtab
4616              or /proc/mounts) or paths prefixes for fs/directories that  work
4617              too  slow  for  you.   This option can be used to stop vifm from
4618              making some requests to particular kinds of  file  systems  that
4619              can  slow  down file browsing.  Currently this means don't check
4620              if directory has changed, skip check if target of symbolic links
4621              exists,  assume  that link target located on slow fs to be a di‐
4622              rectory (allows entering directories and navigating to files via
4623              gf).  If you set the option to "*", it means all the systems are
4624              considered slow (useful for cygwin, where all the  checks  might
4625              render vifm very slow if there are network mounts).
4626
4627              Example for autofs root /mnt/autofs:
4628
4629                set slowfs+=/mnt/autofs
4630
4631       'smartcase' 'scs'
4632              type: boolean
4633              default: false
4634              Overrides  the  ignorecase option if a pattern contains at least
4635              one upper case character.  Only used when 'ignorecase' option is
4636              enabled.
4637
4638       'sort' type: string list
4639              default: +name on *nix and +iname on Windows
4640              scope: local
4641              Sets  list of sorting keys (first item is primary key, second is
4642              secondary key, etc.):
4643                 [+-]ext     - extension of files and directories
4644                 [+-]fileext - extension of files only
4645                 [+-]name    - name (including extension)
4646                 [+-]iname   - name (including extension, ignores case)
4647                 [+-]type                -              file              type
4648              (dir/reg/exe/link/char/block/sock/fifo)
4649                 [+-]dir     - directory grouping (directory < file)
4650                 [+-]gid     - group id (*nix only)
4651                 [+-]gname   - group name (*nix only)
4652                 [+-]mode    - file type derived from its mode (*nix only)
4653                 [+-]perms   - permissions string (*nix only)
4654                 [+-]uid     - owner id (*nix only)
4655                 [+-]uname   - owner name (*nix only)
4656                 [+-]nlinks  - number of hard links (*nix only)
4657                 [+-]inode   - inode number (*nix only)
4658                 [+-]size    - size
4659                 [+-]nitems  - number of items in a directory (zero for files)
4660                 [+-]groups  - groups extracted via regexps from 'sortgroups'
4661                 [+-]target   -  symbolic  link  target  (empty for other file
4662              types)
4663                 [+-]atime   - time accessed (e.g., read, executed)
4664                 [+-]ctime   - time changed (changes in metadata, like mode)
4665                 [+-]mtime   - time modified (when file contents is changed)
4666
4667              Note: look for st_atime, st_ctime and st_mtime in "man  2  stat"
4668              for more information on time keys.
4669
4670              '+'  means ascending sort for this key, and '-' means descending
4671              sort.
4672
4673              "dir" key is somewhat similar in this regard but it's added  im‐
4674              plicitly:  when "dir" is not specified, sorting behaves as if it
4675              was the first key in the list.  That's why if one wants  sorting
4676              algorithm to mix directories and files, "dir" should be appended
4677              to sorting option, for example like this:
4678
4679                set sort+=dir
4680
4681              or
4682
4683                set sort=-size,dir
4684
4685              Value of the option is checked to include dir  key  and  default
4686              sorting key (name on *nix, iname on Windows).  Here is what hap‐
4687              pens if one of them is missing:
4688
4689                - type key is added at the beginning;
4690
4691                - default key is added at the end;
4692
4693              all other keys are left untouched (at most they are moved).
4694
4695              This option also changes view columns according to primary sort‐
4696              ing key set, unless 'viewcolumns' option is not empty.
4697
4698       'sortnumbers'
4699              type: boolean
4700              default: false
4701              scope: local
4702              Natural sort of (version) numbers within text.
4703
4704       'sortgroups'
4705              type: string
4706              default: ""
4707              scope: local
4708              Sets  comma-separated list of regular expressions for group type
4709              of sorting.  Double the comma to insert it literally.
4710
4711              The regular expressions are used to extract substrings  of  file
4712              names  to serve as keys for sorting.  It is essentially a way to
4713              ignore uninteresting parts of file names during sorting by name.
4714
4715              Each expression should contain at least one group or  its  value
4716              will  be  considered  to  be always empty.  Also, only the first
4717              match of regular expression is processed.
4718
4719              The first group divides list of files into sub-groups,  each  of
4720              which  is then sorted by substrings extracted using second regu‐
4721              lar expression and so on recursively.
4722
4723              Example:
4724                set sortgroups=-(todo|done).*
4725              this would group files with "-done" in  their  names  and  files
4726              with "-todo" separately.  On ascending sorting, group containing
4727              "-done" would appear before the other one.
4728
4729       'sortorder'
4730              type: enumeration
4731              default: ascending
4732              Sets sort order for primary key: ascending, descending.
4733
4734       'statusline' 'stl'
4735              type: string
4736              default: ""
4737              Determines the content of the status line (the line right  above
4738              command-line).   Empty string means use same format like in pre‐
4739              vious versions.  Following macros are supported:
4740
4741              - %N - line break (increases height of the status  line  accord‐
4742                ingly), ignores %[ %] blocks
4743
4744              - %t - file name (considering value of the 'classify' option)
4745
4746              - %T - symbolic link target (empty for other filetypes)
4747
4748              - %f - file name relative to current directory (considers 'clas‐
4749                sify')
4750
4751              - %A - file attributes (permissions on  *nix  or  properties  on
4752                Windows)
4753
4754              - %o  -  file permissions in octal form on *nix (nothing on Win‐
4755                dows)
4756
4757              - %u - user name or uid (if it cannot be resolved)
4758
4759              - %g - group name or gid (if it cannot be resolved)
4760
4761              - %s - file size in human readable format
4762
4763              - %E - size of selected files in human readable format, same  as
4764                %s  when no files are selected, except that it will never show
4765                size of ../ in visual mode, since it cannot be selected
4766
4767              - %d - file modification date (uses 'timefmt' option)
4768
4769              - %D - path of the other pane for single-pane layout
4770
4771              - %a - amount of free space available on current FS
4772
4773              - %c - size of current FS
4774
4775              - %z - short tips/tricks/hints that chosen  randomly  after  one
4776                minute period
4777
4778              - %{<expr>}  - evaluate arbitrary vifm expression '<expr>', e.g.
4779                '&sort'
4780
4781              - %* - resets or applies one of User1..User20 highlight  groups;
4782                reset  happens  when width field is 0 or not specified, one of
4783                the groups gets picked when width field is in the range from 1
4784                to 20
4785
4786              - all 'rulerformat' macros
4787
4788              Percent  sign  can  be followed by optional minimum field width.
4789              Add '-' before minimum field width if you want field to be right
4790              aligned.
4791
4792              On  Windows  file  properties include the following flags (upper
4793              case means flag is on):
4794               A - archive
4795               H - hidden
4796               I - content isn't indexed
4797               R - readonly
4798               S - system
4799               C - compressed
4800               D - directory
4801               E - encrypted
4802               P - reparse point (e.g. symbolic link)
4803               Z - sparse file
4804
4805              Example without colors:
4806
4807                set statusline="  %t%= %A %10u:%-7g %15s %20d %{&sort} "
4808
4809              Example with colors:
4810
4811               highlight User1 ctermbg=yellow
4812               highlight User2 ctermbg=blue ctermfg=white cterm=bold
4813               set statusline="%1* %-26t %2* %= %1* %A %2* %7u:%-7g %1* %-5s %2* %d "
4814
4815
4816       'suggestoptions'
4817              type: string list
4818              default:
4819              Controls when, for what and how suggestions are displayed.   The
4820              following values are available:
4821               - normal          - in normal mode;
4822               - visual          - in visual mode;
4823               - view            - in view mode;
4824               - otherpane       - use other pane to display suggestions, when
4825              available;
4826               - delay[:num]     - display suggestions after a small delay (to
4827              do not annoy if you just want to type a fast shortcut consisting
4828              of multiple keys), num specifies the delay in  ms  (500  by  de‐
4829              fault), 'timeoutlen' at most;
4830               - keys            - include shortcuts (commands and selectors);
4831               - foldsubkeys     - fold multiple keys with common prefix;
4832               - marks           - include marks;
4833               -  registers[:num] - include registers, at most num files (5 by
4834              default).
4835
4836       'syncregs'
4837              type: string
4838              default: ""
4839              Specifies identifier of group of instances that share  registers
4840              among  each other.  When several instances of vifm have this op‐
4841              tion set to identical value, they automatically synchronize con‐
4842              tents of their registers on operations which use them.
4843
4844       'syscalls'
4845              type: boolean
4846              default: false
4847              When  disabled,  vifm will rely on external applications to per‐
4848              form file-system operations, otherwise system calls are used in‐
4849              stead  (much faster and supports progress tracking).  The option
4850              should eventually be removed.  Mostly *nix-like systems are  af‐
4851              fected.
4852
4853       'tablabel'
4854              type: string
4855              default: ""
4856              When non-empty and 'tabline' isn't set, determines format of the
4857              main part of a single tab's label.
4858
4859              When empty, tab label is set to either tab name for  named  tabs
4860              or to view title (usually current path) for unnamed tabs.
4861
4862              The  following  macros  can  appear in the format (see below for
4863              what a flag is):
4864
4865              - %C       - flag of a current tab
4866
4867              - %N       - number of the tab
4868
4869              - %T       - flag of a tree mode
4870
4871              - %c       - description of a custom view
4872
4873              - %n       - name of the tab
4874
4875              - %p       - path of the view (handles filename modifiers)
4876
4877              - %t       - title of the view (affected by 'shortmess' flags)
4878
4879              - %%       - literal percent sign
4880
4881              - %[       - designates beginning of an optional block
4882
4883              - %]       - designates end of an optional block
4884
4885              - %*, %0*  - resets highlighting
4886
4887              - %1*-%20* - applies one of User1..User20 highlight groups
4888
4889              In global tabs the view in bullets above refers to currently ac‐
4890              tive view of that tab.
4891
4892              Flag  macros  are a special kind of macros that always expand to
4893              an empty value and are meant to be used inside  optional  blocks
4894              to control their visibility.
4895
4896              Optional  blocks are ignored unless at least one macro inside of
4897              them is expanded to a non-empty value or is a set flag macro.
4898
4899                " %[(%n)%]        -- optional name of the tab
4900                " %[              -- optional description of the view
4901                "   %[%T{tree}%]  -- mark of tree mode
4902                "   %[{%c}%]      -- description of custom view
4903                "   @             -- just an extra separator before the path
4904                ' %]
4905                " %p:t            -- tail part of view's location
4906                set tablabel=%[(%n)%]%[%[%T{tree}%]%[{%c}%]@%]%p:t
4907
4908       'tabline' 'tal'
4909              type: string
4910              default: ""
4911              When non-empty, determines format of the tab  line.   Note  that
4912              mouse clicks won't be handled when this option is non-empty.
4913
4914              The following macros can appear in the format:
4915
4916              - %*, %0*  - resets highlighting
4917
4918              - %1*-%20* - applies one of User1..User20 highlight groups
4919
4920       'tabprefix'
4921              type: string
4922              default: "[%N:"
4923              Determines  prefix  of a tab's label.  Formatting is done as for
4924              'tablabel' option.
4925
4926       'tabscope'
4927              type: enumeration
4928              default: global
4929              Picks style of tabs, which defines what a single  tab  contains.
4930              Possible values:
4931               -  global - tab describes complete UI of two views and how they
4932              are arranged
4933               - pane   - tab is located "inside" a pane and  manages  it  and
4934              quick view
4935
4936       'tabstop' 'ts'
4937              type: integer
4938              default: value from curses library
4939              Number of spaces that a Tab in the file counts for.
4940
4941       'tabsuffix'
4942              type: string
4943              default: "]"
4944              Determines  suffix  of a tab's label.  Formatting is done as for
4945              'tablabel' option.
4946
4947       'timefmt'
4948              type: string
4949              default: "%m/%d %H:%M"
4950              Format of time in file list.  See "man 1 date" or "man  3  strf‐
4951              time" for details.
4952
4953       'timeoutlen' 'tm'
4954              type: integer
4955              default: 1000
4956              The time in milliseconds that is waited for a mapped key in case
4957              of already typed key sequence is ambiguous.
4958
4959       'title'
4960              type: boolean
4961              default: true when title can be restored, false otherwise
4962              When enabled, title of the terminal  or  terminal  multiplexer's
4963              window  is  updated  according to current location.  Because not
4964              all terminals support setting title, this works only if  `$TERM`
4965              value matches one of the following conditions:
4966               - equals "xterm" or starts with "xterm-"
4967               - equals "rxvt" or starts with "rxvt-"
4968               - equals "screen" or starts with "screen-"
4969               - equals "aterm"
4970               - equals "Eterm"
4971
4972       'trash'
4973              type: boolean
4974              default: true
4975              Use trash directory.  See "Trash directory" section below.
4976
4977       'trashdir'
4978              type: string
4979              default:
4980                on *nix:
4981                  "%r/.vifm-Trash-%u,$XDG_DATA_HOME/vifm/Trash,%r/.vifm-Trash"
4982                  or
4983                  "%r/.vifm-Trash-%u,$VIFM/Trash,%r/.vifm-Trash"
4984                on Windows:
4985                  "%r/.vifm-Trash,$XDG_DATA_HOME/vifm/Trash"
4986                  or
4987                  "%r/.vifm-Trash,$VIFM/vifm/Trash"
4988              List of trash directory path specifications, separated with com‐
4989              mas.  Each list item either defines an absolute  path  to  trash
4990              directory or a path relative to a mount point root when list el‐
4991              ement starts with "%r/".  Value of the option can contain  envi‐
4992              ronment  variables  (of form "$envname"), which will be expanded
4993              (prepend $ with a  slash  to  prevent  expansion).   Environment
4994              variables are expanded when the option is set.
4995
4996              On  *nix,  if  element ends with "%u", the mark is replaced with
4997              real user ID and permissions are set  so  that  only  that  only
4998              owner is able to use it.
4999              Note that even this setup is not completely secure when combined
5000              with "%r/" and it's overall safer to keep files in  home  direc‐
5001              tory, but that implies cost of copying files between partitions.
5002
5003              When  new file gets cut (deleted) vifm traverses each element of
5004              the option in the order of their appearance and uses first trash
5005              directory  that  it  was  able  to  create  or  that  is already
5006              writable.
5007
5008              Default value tries to use trash directory per mount  point  and
5009              falls back to trash common trash directory on failure.
5010
5011              Will  attempt to create the directory if it does not exist.  See
5012              "Trash directory" section below.
5013
5014       'tuioptions' 'to'
5015              type: charset
5016              default: "psv"
5017              Each flag configures some aspect of TUI appearance.   The  flags
5018              are:
5019              p - when included:
5020                *  file  list  inside  a pane gets additional single character
5021              padding on left and right sides;
5022                * quick view and view mode get single character padding.
5023              s - when included, left and right borders (side  borders,  hence
5024              "s" character) are visible.
5025              u  - use Unicode characters in the TUI (Unicode ellipsis instead
5026              of "...").
5027              v - vary width of vertical middle border to equalize view sizes.
5028
5029              Each pane title contains the path of the listed  directory.   If
5030              too large, the path is truncated on the left for the active pane
5031              and on the right for the other pane.  This can be modified with:
5032
5033              l - truncation is always on the left.
5034              r - truncation is always on the right.
5035
5036       'undolevels' 'ul'
5037              type: integer
5038              default: 100
5039              Maximum number of changes that can be undone.   Note  that  here
5040              single  file  operation  is  used as a unit, not operation, i.e.
5041              deletion of 101 files will exceed default limit.
5042
5043       'vicmd'
5044              type: string
5045              default: "vim"
5046              Command used to edit files in various contexts.  Ampersand  sign
5047              at  the  end  (regardless whether it's preceded by space or not)
5048              means backgrounding of command.
5049
5050              Background flag is ignored in certain context where  vifm  waits
5051              for  the  editor  to  finish.  Such contexts include any command
5052              that spawns editor to change list of file names  or  a  command,
5053              with  :rename  being one example.  `-f` is also appended to pre‐
5054              vent forking in such cases, so the command needs to  handle  the
5055              flag.
5056
5057              Additionally  `+{num}` and `+'call cursor()'` arguments are used
5058              to position cursor when location is known.
5059
5060       'viewcolumns'
5061              type: string
5062              default: ""
5063              scope: local
5064              Format string containing list of columns in the view.  When this
5065              option  is  empty, view columns to show are chosen automatically
5066              using sorting keys (see 'sort') as a base.  Value of this option
5067              is  ignored if 'lsview' is set.  See "Column view" section below
5068              for format description.
5069
5070              An example of setting the options for both  panes  (note  :windo
5071              command):
5072
5073                windo set viewcolumns=-{name}..,6{size},11{perms}
5074
5075       'vixcmd'
5076              type: string
5077              default: value of 'vicmd'
5078              Same  as  'vicmd', but takes precedence over it when running in‐
5079              side a graphical environment.
5080
5081       'vifminfo'
5082              type: set
5083              default: bookmarks,bmarks
5084              Controls what will be saved in the $VIFM/vifminfo file.
5085
5086                 bmarks    - named bookmarks (see :bmark command)
5087                 bookmarks - marks, except special ones like '< and '>
5088                 tui       - state of the user interface (sorting,  number  of
5089              windows, quick
5090                             view state, active view)
5091                 dhistory  - directory history
5092                 state     - file name and dot filters and terminal multiplex‐
5093              ers integration
5094                             state
5095                 cs        - primary color scheme
5096                 savedirs  - save last visited directory
5097                 chistory  - command line history
5098                 ehistory  - expression register history (see  description  of
5099              Ctrl+R =
5100                             in command-line mode)
5101                 shistory  - search history (/ and ? commands)
5102                 phistory  - prompt history
5103                 fhistory   -  history of local filter (see description of the
5104              "=" normal mode
5105                             command)
5106                 dirstack  - directory stack overwrites previous stack, unless
5107              stack of
5108                             current instance is empty
5109                 registers - registers content
5110                 tabs      - global or pane tabs
5111                 options   - all options that can be set with the :set command
5112              (obsolete)
5113                 filetypes - associated programs and viewers (obsolete)
5114                 commands  - user defined commands (see :command  description)
5115              (obsolete)
5116
5117       'vimhelp'
5118              type: boolean
5119              default: false
5120              Use vim help format.
5121
5122       'wildmenu' 'wmnu'
5123              type: boolean
5124              default: false
5125              Controls  whether  possible  matches of completion will be shown
5126              above the command line.
5127
5128       'wildstyle'
5129              type: enumeration
5130              default: bar
5131              Picks presentation style of wild menu.  Possible values:
5132               - bar   - one-line with left-to-right cursor
5133               - popup - multi-line with top-to-bottom cursor
5134
5135       'wordchars'
5136              type: string list
5137              default: "1-8,14-31,33-255" (that is all non-whitespace  charac‐
5138              ters)
5139              Specifies  which  characters in command-line mode should be con‐
5140              sidered as part of a word.  Value of the option  is  comma-sepa‐
5141              rated  list of ranges.  If both endpoints of a range match, sin‐
5142              gle endpoint is enough (e.g. "a" = "a-a").  Both  endpoints  are
5143              inclusive.  There are two accepted forms: character representing
5144              itself or number encoding character according  to  ASCII  table.
5145              In case of ambiguous characters (dash, comma, digit) use numeric
5146              form.  Accepted characters are in the range from 0 to 255.   Any
5147              Unicode character with code greater than 255 is considered to be
5148              part of a word.
5149
5150              The option affects Alt-D, Alt-B and Alt-F, but not Ctrl-W.  This
5151              is intentionally to allow two use cases:
5152
5153               - Moving by WORDS and deletion by words.
5154               - Moving by words and deletion by WORDS.
5155
5156              To get the latter use the following mapping:
5157
5158                cnoremap <c-w> <a-b><a-d>
5159
5160              Also used for abbreviations.
5161
5162       'wrap' type: boolean
5163              default: true
5164              Controls whether to wrap text in quick view.
5165
5166       'wrapscan' 'ws'
5167              type: boolean
5168              default: true
5169              Searches wrap around end of the list.
5170

Mappings

5172       A  user  mapping  like `nnoremap lhs rhs` defines a substitution of the
5173       left-hand-side (LHS)  with  the  right-hand-side  (RHS)  in  the  input
5174       stream.   A regular mapping (without "nore" in :command's name) expands
5175       recognized sequences in the RHS, while "*noremap" mapping always inter‐
5176       prets  RHS  as  if  no  user mappings were defined and each key has its
5177       builtin meaning.  In most cases you want to use noremap variant and  if
5178       your RHS includes LHS, only noremap variant will work because recursion
5179       in a mapping is not allowed.
5180
5181       In order to define a mapping determine in which mode you want to  acti‐
5182       vate it and use an appropriate "*noremap" :command (e.g., :nnoremap for
5183       a normal mode mapping).  RHS doesn't have to limit itself to  the  mode
5184       in which the mapping was started and can span multiple modes.
5185
5186       Map arguments
5187
5188       LHS  of  mappings  can  be preceded by arguments which take the form of
5189       special sequences:
5190
5191       <silent>
5192              Postpone UI updates until RHS is completely processed.
5193
5194       <wait> In case of builtin mapping causing conflict for  a  user-defined
5195              mapping  (e.g.,  `t`  builtin to a partially typed `ta` user-de‐
5196              fined mapping), ignore the builtin mapping and  wait  for  input
5197              indefinitely  as  opposed to default behaviour of triggering the
5198              builtin mapping after a delay defined by 'timeoutlen'.  Example:
5199
5200                nnoremap <wait> tw :set wrap!<cr>
5201                nnoremap <wait> tn :set number!<cr>
5202                nnoremap <wait> tr :set relativenumber!<cr>
5203
5204       Special sequences
5205
5206       Since it's not easy to enter special characters there are several  spe‐
5207       cial sequences that can be used in place of them.  They are:
5208
5209       <cr>   Enter key.
5210
5211       <esc>  Escape key.
5212
5213       <space>
5214              Space key.
5215
5216       <lt>   Less-than character (<).
5217
5218       <nop>  provides a way to disable a mapping (by mapping it to <nop>).
5219
5220       <bs>   Backspace key (see key conflict description below).
5221
5222       <tab> <s-tab>
5223              Tabulation and Shift+Tabulation keys.
5224
5225       <home> <end>
5226              Home/End.
5227
5228       <left> <right> <up> <down>
5229              Arrow keys.
5230
5231       <pageup> <pagedown>
5232              PageUp/PageDown.
5233
5234       <del> <delete>
5235              Delete  key.   <del>  and  <delete>  mean  different  codes, but
5236              <delete> is more common.
5237
5238       <insert>
5239              Insert key.
5240
5241       <s-home> <s-end>
5242       <s-left> <s-right> <s-up> <s-down>
5243       <s-pageup> <s-pagedown>
5244       <s-delete> <s-insert>
5245               Shift + one of the keys from above, if terminal  and  its  ter‐
5246               minfo supports it.
5247
5248       <c-a>,<c-b>,...,<c-z>,<c-[>,<c->,<c-]>,<c-^>,<c-_>
5249              Control + some key (see key conflict description below).
5250
5251       <c-@> {only for *nix}
5252              Control + Space.
5253
5254       <a-a>,<a-b>,...,<a-z>
5255       <m-a>,<m-b>,...,<m-z>
5256       <a-0>,<a-1>,...,<a-9> {only for *nix}
5257       <m-0>,<m-1>,...,<m-9> {only for *nix}
5258               Alt + some key.
5259
5260       <a-s-a>,<a-s-b>,...,<a-s-z> {only for *nix}
5261       <s-a-a>,<s-a-b>,...,<s-a-z> {only for *nix}
5262       <m-s-a>,<m-s-b>,...,<m-s-z> {only for *nix}
5263       <s-m-a>,<s-m-b>,...,<s-m-z> {only for *nix}
5264               Alt + Shift + some key.
5265
5266       <a-c-a>,<a-c-b>,...,<a-c-z> {only for *nix}
5267       <m-c-a>,<m-c-b>,...,<m-c-z> {only for *nix}
5268               Alt + Ctrl + some key.
5269
5270       <f0> - <f63>
5271              Functional keys.
5272
5273       <c-f1> - <c-f12> {only for MS-Windows}
5274              functional keys with Control key pressed.
5275
5276       <a-f1> - <a-f12> {only for MS-Windows}
5277              functional keys with Alt key pressed.
5278
5279       <s-f1> - <s-f12> {only for MS-Windows}
5280              functional keys with Shift key pressed.
5281
5282       Note  that  due  to the way terminals process their input, several key‐
5283       board keys might be mapped to single key code, for example:
5284
5285         - <cr> and <c-m>;
5286
5287         - <tab> and <c-i>;
5288
5289         - <c-h> and <bs> and <del>;
5290
5291         - etc.
5292
5293       Most of the time they are defined consistently  and  don't  cause  sur‐
5294       prises,  but  <c-h> and <bs> are treated differently in different envi‐
5295       ronments (although they match each other all the time), that's why they
5296       correspond to different keys in vifm.  As a consequence, if you map <c-
5297       h> or <bs> be sure to repeat the mapping with the other one so that  it
5298       works  in all environments.  Alternatively, provide your mapping in one
5299       form and add one of the following:
5300
5301         " if mappings with <c-h> in the LHS work
5302         map <c-h> <bs>
5303         " if mappings with <bs> in the LHS work
5304         map <bs> <c-h>
5305
5306       Also sometimes neither of them might work and it's <del> key which cor‐
5307       responds to your backspace (don't mind the name).
5308
5309       Whitespace
5310
5311       vifm  removes  whitespace  characters  at the beginning and end of com‐
5312       mands.  That's why you may want to use <space> at the  end  of  rhs  in
5313       mappings.  For example:
5314
5315         cmap <f1> man<space>
5316
5317       will  put  "man " in line when you hit the <f1> key in the command line
5318       mode.
5319

Expression syntax

5321       Supported expressions is a subset of what VimL provides.
5322
5323       Expression syntax summary, from least to most significant:
5324
5325       expr1      expr2
5326                  expr2 || expr2 ..       logical OR
5327
5328       expr2      expr3
5329                  expr3 && expr3 ..       logical AND
5330
5331       expr3      expr4
5332                  expr4 == expr4          equal
5333                  expr4 != expr4          not equal
5334                  expr4 >  expr4          greater than
5335                  expr4 >= expr4          greater than or equal
5336                  expr4 <  expr4          smaller than
5337                  expr4 <= expr4          smaller than or equal
5338
5339       expr4      expr5
5340                  expr5 + expr5 ..        number addition
5341                  expr5 - expr5 ..        number subtraction
5342
5343       expr5      expr6
5344                  expr6 . expr6 ..        string concatenation
5345
5346       expr6      expr7
5347                  - expr6                 unary minus
5348                  + expr6                 unary plus
5349                  ! expr6                 logical NOT
5350
5351       expr7      number                  number constant
5352                  "string"                string constant, \ is special
5353                  'string'                string constant, ' is doubled
5354                  &option                 option value
5355                  $VAR                    environment variable
5356                  v:var                   builtin variable
5357                  function(expr1, ...)    function call
5358                  (expr1)                 nested expression
5359
5360       ".." indicates that the operations in this level can be concatenated.
5361
5362       expr1
5363       -----
5364       expr2 || expr2
5365
5366       Arguments are converted to numbers before evaluation.
5367
5368       Result is non-zero if at least one of arguments is non-zero.
5369
5370       It's right associative and with  short-circuiting,  so  sub-expressions
5371       are  evaluated  from  left to right until result of whole expression is
5372       determined (i.e., until first non-zero) or end of the expression.
5373
5374       expr2
5375       -----
5376       expr3 && expr3
5377
5378       Arguments are converted to numbers before evaluation.
5379
5380       Result is non-zero only if both arguments are non-zero.
5381
5382       It's right associative and with  short-circuiting,  so  sub-expressions
5383       are  evaluated  from  left to right until result of whole expression is
5384       determined (i.e., until first zero) or end of the expression.
5385
5386       expr3
5387       -----
5388       expr4 {cmp} expr4
5389
5390       Compare two expr4 expressions, resulting in a  0  if  it  evaluates  to
5391       false or 1 if it evaluates to true.
5392
5393       equal                   ==
5394       not equal               !=
5395       greater than            >
5396       greater than or equal   >=
5397       smaller than            <
5398       smaller than or equal   <=
5399
5400       Examples:
5401
5402         'a' ==  'a'         == 1
5403         'a' >   'b'         == 1
5404         'a' ==  'b'         == 0
5405         '2' >   'b'         == 0
5406          2  >   'b'         == 1
5407          2  >   '1b'        == 1
5408          2  >   '9b'        == 0
5409         -1  == -'1'         == 1
5410          0  ==  '--1'       == 1
5411
5412       expr4
5413       -----
5414       expr5  +  expr5 ..     number addition expr5 - expr5 ..     number sub‐
5415       traction
5416
5417       Examples:
5418
5419         1 + 3 - 3          == 1
5420         1 + '2'            == 3
5421
5422       expr5
5423       -----
5424       expr6 . expr6 ..     string concatenation
5425
5426       Examples:
5427
5428         'a' . 'b'           == 'ab'
5429         'aaa' . '' . 'c'    == 'aaac'
5430
5431       expr6
5432       -----
5433
5434       - expr6              unary minus
5435       + expr6              unary plus
5436       ! expr6              logical NOT
5437
5438       For '-' the sign of the number is changed.
5439       For '+' the number is unchanged.
5440       For '!' non-zero becomes zero, zero becomes one.
5441
5442       A String will be converted to a Number first.
5443
5444       These operations can be repeated and mixed.  Examples:
5445
5446          --9                == 9
5447         ---9                == -9
5448          -+9                == 9
5449          !-9                == 0
5450          !''                == 1
5451         !'x'                == 0
5452          !!9                == 1
5453
5454       expr7
5455       -----
5456
5457       number               number constant
5458       -----
5459
5460       Decimal number.  Examples:
5461
5462         0                   == 0
5463         0000                == 0
5464         01                  == 1
5465         123                 == 123
5466         10000               == 10000
5467
5468       string
5469       ------
5470       "string"             string constant
5471
5472       Note that double quotes are used.
5473
5474       A string constant accepts these special characters:
5475         \b      backspace <bs>
5476         \e      escape <esc>
5477         \n      newline
5478         \r      return <cr>
5479         \t      tab <tab>
5480         \\      backslash
5481         \"      double quote
5482
5483       Examples:
5484
5485         "\"Hello,\tWorld!\""
5486         "Hi,\nthere!"
5487
5488       literal-string
5489       --------------
5490       'string'             string constant
5491
5492       Note that single quotes are used.
5493
5494       This string is taken as it is.  No backslashes are removed  or  have  a
5495       special  meaning.   The only exception is that two quotes stand for one
5496       quote.
5497
5498       Examples:
5499
5500         'All\slashes\are\saved.'
5501         'This string contains doubled single quotes ''here'''
5502
5503       option
5504       ------
5505       &option               option value (local one is preferred, if  exists)
5506       &g:option              global  option value &l:option             local
5507       option value
5508
5509       Examples:
5510
5511         echo 'Terminal size: '.&columns.'x'.&lines
5512         if &columns > 100
5513
5514       Any valid option name can be used here (note that "all" in  ":set  all"
5515       is a pseudo option).  See ":set options" section above.
5516
5517       environment variable
5518       --------------------
5519       $VAR                  environment variable
5520
5521       The  String value of any environment variable.  When it is not defined,
5522       the result is an empty string.
5523
5524       Examples:
5525
5526         'This is my $PATH env: ' . $PATH
5527         'vifmrc at ' . $MYVIFMRC . ' is used.'
5528
5529       builtin variable
5530       --------------------
5531       v:var                 builtin variable
5532
5533       Information exposed by vifm for use in scripting.
5534
5535       v:count
5536         count passed to : command, 0 by default.  Can be used in mappings  to
5537       passthe count to a different command.
5538       v:count1
5539         same as v:count, but 1 by default.
5540       v:jobcount
5541         number of active jobs (as can be seen in the :jobs menu).
5542       v:session
5543         name of the current session or empty string.
5544       v:servername
5545         See below.
5546
5547       function call
5548       -------------
5549       function(expr1, ...)  function call
5550
5551       See "Functions" section below.
5552
5553       Examples:
5554
5555         "'" . filetype('.') . "'"
5556         filetype('.') == 'reg'
5557
5558       expression nesting
5559       ------------------
5560       (expr1)               nested expression
5561
5562       Groups  any other expression of arbitrary complexity enforcing order in
5563       which operators are applied.
5564
5565

Functions

5567       USAGE                 RESULT      DESCRIPTION
5568
5569       chooseopt({opt})      String      Queries choose parameters  passed  on
5570       startup.
5571       executable({expr})     Integer     Checks whether {expr} command avail‐
5572       able.
5573       expand({expr})        String      Expands special keywords in {expr}.
5574       extcached({cache}, {path}, {extcmd})
5575                             String      Caches output of {extcmd} per {cache}
5576       and
5577                                         {path} combination.
5578       filereadable({path})  Integer     Checks whether {expr} points to a
5579                                         non-directory that can be read.
5580       filetype({fnum} [, {resolve}])
5581                             String      Returns file type from position.
5582       fnameescape({expr})   String      Escapes {expr} for use in a :command.
5583       getpanetype()         String      Returns type of current pane.
5584       has({property})        Integer      Checks  whether instance has {prop‐
5585       erty}.
5586       input({prompt} [, {initial} [, {completion}]])
5587                             String      Prompts user for an input on command-
5588       line.
5589       layoutis({type})       Integer      Checks  whether  layout  is of type
5590       {type}.
5591       paneisat({loc})       Integer     Checks whether  current  pane  is  at
5592       {loc}.
5593       system({command})      String       Executes  shell command and returns
5594       its output.
5595       tabpagenr([{arg}])    Integer     Returns number  of  current  or  last
5596       tab.
5597       term({command})        String       Like  system(), but for interactive
5598       commands.
5599
5600       chooseopt({opt})
5601
5602       Retrieves values of options related to file choosing.  {opt} can be one
5603       of:
5604           files      returns argument of --choose-files or empty string
5605           dir        returns argument of --choose-dir or empty string
5606           cmd        returns argument of --on-choose or empty string
5607           delimiter  returns argument of --delimiter or the default one (\n)
5608
5609       executable({expr})
5610
5611       If {expr} is absolute or relative path, checks whether path destination
5612       exists and refers to an executable, otherwise  checks  whether  command
5613       named  {expr}  is  present  in directories listed in $PATH.  Checks for
5614       various executable extensions on Windows.  Returns  boolean  value  de‐
5615       scribing result of the check.
5616
5617       Example:
5618
5619         " use custom default viewer script if it's available and installed
5620         " in predefined system directory, otherwise try to find it elsewhere
5621         if executable('/usr/local/bin/defviewer')
5622             fileview * /usr/local/bin/defviewer %c
5623         else
5624             if executable('defviewer')
5625                 fileview * defviewer %c
5626             endif
5627         endif
5628
5629       expand({expr})
5630
5631       Expands  environment  variables  and  macros in {expr} (in this order).
5632       Returns a string.  See "Command macros" section above.
5633
5634       Examples:
5635
5636         " percent sign
5637         :echo expand('%%')
5638         " the last part of directory name of the other pane
5639         :echo expand('%D:t')
5640         " $PATH environment variable (same as `:echo $PATH`)
5641         :echo expand('$PATH')
5642         " full path to the current file with backslashes
5643         :echo expand('%c:p:gs!/!\!')
5644
5645       extcached({cache}, {path}, {extcmd})
5646
5647       Caches value of {extcmd} external command automatically updating it  as
5648       necessary  based  on  monitoring change date of a {path}.  The cache is
5649       invalidated when file or its meta-data is updated.  A single  path  can
5650       have multiple caches associated with it.
5651
5652       {path} value is normalized, but symbolic links in it aren't resolved.
5653
5654       Example:
5655
5656         " display number and size of blocks actually used by a file or directory
5657         set statusline+=" Uses: %{ extcached('uses',
5658                                             expand('%c'),
5659                                             expand('stat --format=%%bx%%B %c')) }"
5660
5661       filereadable({path})
5662
5663       Checks  whether  {path}  exists and refers to a non-directory entry and
5664       its permissions allow reading.  Returns boolean value describing result
5665       of the check.
5666
5667       filetype({fnum} [, {resolve}])
5668
5669       The  result  is  a string, which represents file type and is one of the
5670       list:
5671           exe     executables
5672           reg     regular files
5673           link    symbolic links
5674           broken  broken symbolic links (appears only when resolving)
5675           dir     directories
5676           char    character devices
5677           block   block devices
5678           fifo    pipes
5679           sock    *nix domain sockets
5680           ?       unknown file type (should not normally happen) or
5681                   non-file (pseudo-entries in compare view)
5682
5683       The result can also be an empty string in case of invalid argument.
5684
5685       Parameter {fnum} can have following values:
5686           - '.' to get type of file under the cursor in the active pane
5687           - numerical value base 1 to get type of file on specified line num‐
5688       ber
5689
5690       Optional  parameter  {resolve}  is  treated  as a boolean and specifies
5691       whether symbolic links should be resolved.
5692
5693       fnameescape({expr})
5694
5695       Escapes parameter to make it suitable for use as an argument of a :com‐
5696       mand.  List of escaped characters includes %, which is doubled.
5697
5698       Usage example:
5699
5700         " navigate to most recently modified file in current directory
5701         execute 'goto' fnameescape(system('ls -t | head -1'))
5702
5703       getpanetype()
5704
5705       Retrieves string describing type of current pane.  Possible return val‐
5706       ues:
5707           regular      regular file listing of some directory
5708           custom       custom file list (%u)
5709           very-custom  very custom file list (%U)
5710           tree         tree view
5711           compare      compare view
5712
5713       has({property})
5714
5715       Allows examining internal parameters from scripts to  e.g.  figure  out
5716       environment  in which application is running.  Returns 1 if property is
5717       true/present, otherwise 0 is returned.  Currently the following proper‐
5718       ties are supported (anything else will yield 0):
5719           unix  runs in *nix-like environment (including Cygwin)
5720           win   runs on Windows
5721           #*    whether particular Lua handler exists
5722
5723       Usage example:
5724
5725         " skip user/group on Windows
5726         if !has('win')
5727             let $RIGHTS = '%10u:%-7g '
5728         endif
5729
5730         execute 'set' 'statusline="  %t%= %A '.$RIGHTS.'%15E %20d  "'
5731
5732       input({prompt} [, {initial} [, {completion}]])
5733
5734       Creates  a  command-line  prompt to obtain user's input.  Initial value
5735       can be supplied as an optional second parameter, otherwise empty string
5736       is used.
5737
5738       Optional third parameter specifies kind of completion, which can be one
5739       of:
5740           dir   paths to directories
5741           file  paths to files and directories
5742           ""    (empty string, default) no completion
5743
5744       Note that behaviour differs from Vim where executing a mapping like
5745         nnoremap j :echo input('text: ')<cr>input
5746       leaves you in a prompt mode with "input" typed in.  Vifm will wait  for
5747       leaving the prompt and then continue executing the mapping.
5748
5749       Usage example:
5750
5751         nnoremap ,m : let $DIR_NAME = input('mkdir: ', '', 'dir')
5752                    \| if $DIR_NAME != ''
5753                    \|     execute 'mkdir' fnameescape($DIR_NAME)
5754                    \| endif<cr>
5755
5756       layoutis({type})
5757
5758       Checks  whether current interface layout is {type} or not, where {type}
5759       can be:
5760           only    single-pane mode
5761           split   double-pane mode (either vertical or horizontal split)
5762           vsplit  vertical split (left and right panes)
5763           hsplit  horizontal split (top and bottom panes)
5764
5765       Usage example:
5766
5767         " automatically split vertically before enabling preview
5768         :nnoremap w :if layoutis('only') | vsplit | endif | view!<cr>
5769
5770       paneisat({loc})
5771
5772       Checks whether position of active pane in current layout matches one of
5773       the following locations:
5774           top     pane reaches top border
5775           bottom  pane reaches bottom border
5776           left    pane reaches left border
5777           right   pane reaches right border
5778
5779       system({command})
5780
5781       Runs  the command in shell and returns its output (joined standard out‐
5782       put and standard error streams).  All trailing newline  characters  are
5783       stripped  to allow easy appending to command output.  Ctrl-C should in‐
5784       terrupt the command.
5785
5786       Use this function to consume output of external commands that don't re‐
5787       quire  user  interaction  and term() for interactive commands that make
5788       use of terminal and are capable of handling stream redirection.
5789
5790       Usage example:
5791
5792         " command to enter .git/ directory of git-repository (when ran inside one)
5793         command! cdgit :execute 'cd' fnameescape(system('git rev-parse --git-dir'))
5794
5795       tabpagenr([{arg}])
5796
5797       When called without arguments returns number of current tab  page  base
5798       one.
5799
5800       When called with "$" as an argument returns number of the last tab page
5801       base one, which is the same as number of tabs.
5802
5803       term({command})
5804
5805       Same as system() function, but user interface is  shutdown  during  the
5806       execution  of  the  command, which makes sure that external interactive
5807       applications won't affect the way terminal is used by vifm.
5808
5809       Usage example:
5810
5811         " command to change directory by picking it via fzf
5812         command! fzfcd :execute 'cd'
5813                                fnameescape(term('find -type d | fzf 2> /dev/tty'))
5814
5816       When navigating to some path from a menu there is a difference  in  end
5817       location  depending  on  whether path has trailing slash or not.  Files
5818       normally don't have trailing slashes so "file/" won't work and one  can
5819       only  navigate  to  a  file anyway.  On the other hand with directories
5820       there are two options: navigate to a directory or inside of it.  To al‐
5821       low  both  use cases, the first one is used on paths like "dir" and the
5822       second one for "dir/".
5823
5824       Commands
5825
5826       :range navigate to a menu line.
5827
5828       :exi[t][!] :q[uit][!] :x[it][!]
5829              leave menu mode.
5830
5831       :noh[lsearch]
5832              reset search match highlighting.
5833
5834       :w[rite] {dest}
5835              write all menu lines into file specified by {dest}.
5836
5837       General
5838
5839       j, Ctrl-N - move down.
5840       k, Ctrl-P - move up.
5841       Enter, l - select and exit the menu.
5842       Ctrl-L - redraw the menu.
5843
5844       Escape, Ctrl-C, ZZ, ZQ, q - quit.
5845
5846       In all menus
5847
5848       The following set of keys has the same meaning as in normal mode.
5849
5850       Ctrl-B, Ctrl-F
5851       Ctrl-D, Ctrl-U
5852       Ctrl-E, Ctrl-Y
5853       /, ?
5854       n, N
5855       [count]G, [count]gg
5856       H, M, L
5857       zb, zt, zz
5858
5859       zh - scroll menu items [count] characters to the right.
5860       zl - scroll menu items [count] characters to the left.
5861       zH - scroll menu items half of screen width characters to the right.
5862       zL - scroll menu items half of screen width characters to the left.
5863
5864       : - enter command line mode for menus (currently only :exi[t], :q[uit],
5865       :x[it] and :{range} are supported).
5866
5867       b - interpret content of the menu as list of paths and use it to create
5868       custom view in place of previously active  pane.   See  "Custom  views"
5869       section below.
5870       B - same as above, but creates unsorted view.
5871
5872       v  - load menu content into quickfix list of the editor (Vim compatible
5873       by assumption) or if list doesn't  have  separators  after  file  names
5874       (colons) open each line as a file name.
5875
5876
5877       Below  is  description of additional commands and reaction on selection
5878       in some menus and dialogs.
5879
5880       Apropos menu
5881
5882       Selecting menu item runs man on a given topic.  Menu  won't  be  closed
5883       automatically to allow view several pages one by one.
5884
5885       Command-line mode abbreviations menu
5886
5887       Type dd on an abbreviation to remove it.
5888
5889       c  leaves menu preserving file selection and inserts right-hand side of
5890       selected command into command-line.
5891
5892       Color scheme menu
5893
5894       Selecting name of a color scheme applies it the same way as  if  ":col‐
5895       orscheme <name>" was executed on the command-line.
5896
5897       Commands menu
5898
5899       Selecting command executes it with empty arguments (%a).
5900
5901       dd on a command to remove.
5902
5903       Marks menu
5904
5905       Selecting mark navigates to it.
5906
5907       dd on a mark to remove it.
5908
5909       Bookmarks menu
5910
5911       Selecting a bookmark navigates to it.
5912
5913       Type dd on a bookmark to remove it.
5914
5915       gf and e also work to make it more convenient to bookmark files.
5916
5917       Trash (:lstrash) menu
5918
5919       r on a file name to restore it from trash.
5920
5921       dd deletes file under the cursor.
5922
5923       Trashes (:trashes) menu
5924
5925       dd empties selected trash in background.
5926
5927       Directory history and Trashes menus
5928
5929       Selecting  directory  name will change directory of the current view as
5930       if :cd command was used.
5931
5932       Directory stack menu
5933
5934       Selecting directory name will rotate stack to  put  selected  directory
5935       pair at the top of the stack.
5936
5937       File (:file) menu
5938
5939       Commands from vifmrc or typed in command-line are displayed above empty
5940       line.  All commands below empty line are from .desktop files.
5941
5942       c leaves menu preserving file selection and inserts command after :! in
5943       command-line mode.
5944
5945       Grep, find, locate, bookmarks and user menu with navigation (%M macro)
5946
5947       gf  -  navigate  previously  active  view  to  currently selected item.
5948       Leaves menu mode except for grep menu.  Pressing Enter key has the same
5949       effect.
5950
5951       e - open selected path in the editor, stays in menu mode.
5952
5953       c  - leave menu preserving file selection and insert file name after :!
5954       in command-line mode.
5955
5956       User menu without navigation (%m macro)
5957
5958       c leaves menu preserving file selection and inserts whole line after :!
5959       in command-line mode.
5960
5961       Grep menu
5962
5963       Selecting  file  (via Enter or l key) opens it in editor set by 'vicmd'
5964       at given line number.  Menu won't  be  closed  automatically  to  allow
5965       viewing more than one result.
5966
5967       See above for "gf" and "e" keys description.
5968
5969       Command-line history menu
5970
5971       Selecting  an item executes it as command-line command, search query or
5972       local filter.
5973
5974       c leaves menu preserving file selection and inserts line into  command-
5975       line of appropriate kind.
5976
5977       Volumes menu
5978
5979       Selecting  a drive navigates previously active pane to the root of that
5980       drive.
5981
5982       Fileinfo dialog
5983
5984       Enter, q - close dialog
5985
5986       Sort dialog
5987
5988       h, Space - switch ascending/descending.
5989       q - close dialog
5990
5991       One shortcut per sorting key (see the dialog).
5992
5993       Attributes (permissions or properties) dialog
5994
5995       h, Space - check/uncheck.
5996       q - close dialog
5997       r - (*nix only) (un)set all read bits
5998       w - (*nix only) (un)set all write bits
5999       x - (*nix only) (un)set all execute bits
6000       s - (*nix only) (un)set all special (SetUID, SetGID, Sticky) bits
6001       e - (*nix only) (un)set recursion (for directories only)
6002
6003       Item states:
6004
6005       - * - checked flag.
6006
6007       - X - means that it has different value for files in selection.
6008
6009       - d (*nix only) - (only for execute flags) means u-x+X, g-x+X or  o-x+X
6010         argument  for  the  chmod program.  If you're not on OS X and want to
6011         remove execute permission bit from all files, but preserve it for di‐
6012         rectories,  set  all execute flags to 'd' and check 'Set Recursively'
6013         flag.
6014
6015       Jobs menu (:jobs)
6016
6017       dd - request cancellation of job under cursor.  The job  won't  be  re‐
6018       moved from the list, but marked as being cancelled (if cancellation was
6019       successfully requested).  A message will pop up if the job has  already
6020       stopped.   Note  that on Windows cancelling external programs like this
6021       might not work, because their parent shell doesn't have any windows.
6022
6023       e - display errors of selected job if any  were  collected.   They  are
6024       displayed  in a new menu, but you can get back to jobs menu by pressing
6025       h.
6026
6027       r - reload the list of jobs.
6028
6029
6030       Undolist menu
6031
6032       r - reset undo position to group under the cursor.
6033
6034
6035       Media menu
6036
6037       Selecting a device either mounts (if it wasn't mounted  yet)  or  navi‐
6038       gates to its first mount point.
6039
6040       Selecting a mount point navigates to it.
6041
6042       Selecting "not mounted" line causes mounting.
6043
6044       Selecting any other line does nothing.
6045
6046       r - reload the list.
6047
6048       m  -  mount/unmount  device (cursor should be positioned on lines under
6049       device information).
6050
6051       [ - put cursor on the previous device.
6052
6053       ] - put cursor on the next device.
6054
6055
6056       Plugins menu
6057
6058       e - display log messages of selected  plugin  if  any  were  collected.
6059       They  are displayed in a new menu, but you can get back to plugins menu
6060       by pressing h.
6061
6062       gf - navigate previously  active  view  to  the  location  of  selected
6063       plugin.  Leaves menu mode.
6064
6065

Custom views

6067       Definition
6068
6069       Normally  file views contain list of files from a single directory, but
6070       sometimes it's useful to populate them with list of files that  do  not
6071       belong to the same directory, which is what custom views are for.
6072
6073       Presentation
6074
6075       Custom  views are still related to directory they were in before custom
6076       list was loaded.  Path to that directory (original  directory)  can  be
6077       seen in the title of a custom view.
6078
6079       Files in same directory have to be named differently, this doesn't hold
6080       for custom views thus seeing just file names might be rather confusing.
6081       In order to give an idea where files come from and when possible, rela‐
6082       tive paths to original directory of the view  is  displayed,  otherwise
6083       full path is used instead.
6084
6085       Custom views normally don't contain any inexistent files.
6086
6087       Navigation
6088
6089       Custom  views  have  some  differences related to navigation in regular
6090       views.
6091
6092       gf - acts similar to gf on symbolic links and navigates to the file  at
6093       its real
6094            location.
6095
6096       h  -  go  to  closes  parent node in tree view, otherwise return to the
6097       original directory.
6098
6099       gh - return to the original directory.
6100
6101       Opening ".." entry also causes return to the original directory.
6102
6103       History
6104
6105       Custom list exists only while it's visible, once left one can't  return
6106       to it, so there is no appearances of it in any history.
6107
6108       Filters
6109
6110       Only  local  filter  affects content of the view.  This is intentional,
6111       presumably if one loads list, precisely that list should  be  displayed
6112       (except for inexistent paths, which are ignored).
6113
6114       Search
6115
6116       Although  directory  names are visible in listing, they are not search‐
6117       able.  Only file names are taken into account (might be changed in  fu‐
6118       ture, searching whole lines seems quite reasonable).
6119
6120       Sorting
6121
6122       Contrary  to search sorting by name works on whole visible part of file
6123       path.
6124
6125       Highlight
6126
6127       Whole file name is highlighted as one entity, even if there are  direc‐
6128       tory elements.
6129
6130       Updates
6131
6132       Reloads  can  occur,  though  they are not automatic due to files being
6133       scattered among different places.  On a reload,  inexistent  files  are
6134       removed and meta-data of all other files is updated.
6135
6136       Once  custom  view forgets about the file, it won't add it back even if
6137       it's created again.  So not seeing file previously affected by an oper‐
6138       ation, which was undone is normal.
6139
6140       Operations
6141
6142       All  operations that add files are forbidden for custom views.  For ex‐
6143       ample, moving/copying/putting files into a custom  view  doesn't  work,
6144       because it doesn't make much sense.
6145
6146       On  the  other  hand,  operations  that use files of a custom view as a
6147       source (e.g. yanking, copying, moving file from custom view,  deletion)
6148       and operations that modify names are all allowed.
6149

Compare views

6151       Kinds
6152
6153       :compare can produce four different results depending on arguments:
6154        - single compare view (ofone and either listall or listdups);
6155        - single custom view (ofone and listunique);
6156        - two compare views (ofboth and either listall or listdups);
6157        - two custom views (ofboth and listunique).
6158
6159       The  first  two display files of one file system tree.  Here duplicates
6160       are files that have at least one copy in the same tree.  The other  two
6161       kinds  of  operation  compare  two trees, in which duplicates are files
6162       that are found in both trees.
6163
6164       Lists of unique files are presented in custom views because there is no
6165       file  grouping  to  preserve  as all file ids are guaranteed to be dis‐
6166       tinct.
6167
6168       Creation
6169
6170       Arguments passed to :compare form seven categories each  with  its  own
6171       prefix and is responsible for particular property of operation.
6172
6173       Which files to compare:
6174        - ofboth - compares files of two panes against each other;
6175        - ofone  - compares files of the same directory.
6176
6177       How files are compared:
6178        - byname     - by their name only;
6179        - bysize     - only by their size;
6180        -  bycontents  - by data they contain (combination of size and hash of
6181       small chunk of contents is used as first approximation, so don't  worry
6182       too much about large files).
6183
6184       Which files to display:
6185        - listall    - all files;
6186        - listunique - unique files only;
6187        - listdups   - only duplicated files.
6188
6189       How results are grouped (has no effect if "ofone" specified):
6190        -  groupids   - files considered identical are always adjacent in out‐
6191       put;
6192        - grouppaths - file system ordering is preferred  (this  also  enables
6193       displaying identically named files as mismatches).
6194
6195       Which files to omit:
6196        - skipempty - ignore empty files.
6197
6198       Comparison tweaks:
6199        - withicase - ignore case when comparing file names/paths;
6200        - withrcase - respect case when comparing file names/paths.
6201
6202       Which results to show (has no effect for single pane comparison):
6203        - showidentical   - toggle showing of identical files;
6204        - showdifferent   - toggle showing of different files;
6205        - showuniqueleft  - toggle showing of unique top/left files;
6206        - showuniqueright - toggle showing of unique bottom/right files.
6207
6208       Each argument can appear multiple times, the rightmost one of the group
6209       is considered.  Arguments alter default behaviour instead of substitut‐
6210       ing it.
6211
6212       When  neither "withicase" nor "withrcase" is specified, case depends on
6213       the running operating system and the file system on which the files are
6214       located.
6215
6216       Examples
6217
6218       The  defaults  corresponds to probably the most common use case of com‐
6219       paring files in two trees with grouping by paths, so the following  are
6220       equivalent:
6221
6222         :compare
6223         :compare bycontents grouppaths
6224         :compare bycontents listall ofboth grouppaths
6225         :compare showidentical showdifferent showuniqueleft showuniqueright
6226
6227       Another use case is to find duplicates in the current sub-tree:
6228
6229         :compare listdups ofone
6230
6231       The following command lists files that are unique to each pane:
6232
6233         :compare listunique
6234
6235       Look
6236
6237       The  view  can't switch to ls-like view as it's unable to display diff-
6238       like data.
6239
6240       Comparison views have second column displaying id of  the  file,  files
6241       with  same  id are considered to be equal.  The view columns configura‐
6242       tion is predefined.
6243
6244       The status bar displays only the initial result of the  comparison  and
6245       can be out of date.
6246
6247       Behaviour
6248
6249       When  two  views  are  being  compared against each other the following
6250       changes to the regular behaviour apply:
6251        - views are scrolled synchronously (as if 'scrollbind' was set);
6252        - views' cursors are synchronized;
6253        - local filtering is disabled (its results wouldn't be meaningful);
6254        - zd excludes groups of adjacent identical files, 1zd gives usual  be‐
6255       haviour;
6256        - sorting is permanently disabled (ordering is fixed);
6257        - removed files hide their counter pairs;
6258        - exiting one of the views terminates the other immediately;
6259        - renaming files isn't blocked, but isn't taken into account and might
6260       require regeneration of comparison;
6261        - entries which indicate absence of equivalent file have  empty  names
6262       and can be matched as such;
6263        -  when  unique  files  of  both  views are listed custom views can be
6264       empty, this absence of unique files is stated clearly.
6265
6266       One compare view has similar properties (those that are applicable  for
6267       single pane).
6268
6269       Files are gathered in this way:
6270        - recursively starting at current location of the view;
6271        -  dot files are excluded if view hides them at the moment of compari‐
6272       son, file name filters are obeyed as well so you end up comparing  what
6273       you see;
6274        - directories are not taken into account;
6275        - symbolic links to directories are ignored.
6276

Startup

6278       On  startup vifm determines several variables that are used during exe‐
6279       cution.  They are determined in the order they appear below.
6280
6281       On *nix systems $HOME is normally present and used as is.   On  Windows
6282       systems  vifm tries to find correct home directory in the following or‐
6283       der:
6284        - $HOME variable;
6285        - $USERPROFILE variable (on Windows only);
6286        - a combination of $HOMEDRIVE  and  $HOMEPATH  variables  (on  Windows
6287       only).
6288
6289       vifm tries to find correct configuration directory by checking the fol‐
6290       lowing places:
6291        - $VIFM variable;
6292        - parent directory of the executable file (on Windows only);
6293        - $HOME/.vifm directory;
6294        - $APPDATA/Vifm directory (on Windows only);
6295        - $XDG_CONFIG_HOME/vifm directory;
6296        - $HOME/.config/vifm directory.
6297
6298       vifm tries to find correct configuration file by checking the following
6299       places:
6300        - $MYVIFMRC variable;
6301        - vifmrc in parent directory of the executable file (on Windows only);
6302        - $VIFM/vifmrc file.
6303

Configure

6305       See  "Startup"  section  above  for the explanations on $VIFM and $MYV‐
6306       IFMRC.
6307
6308       The vifmrc file  contains  commands  that  will  be  executed  on  vifm
6309       startup.  There are two such files: global and local.  Global one is at
6310       {prefix}/etc/vifm/vifmrc, see $MYVIFMRC variable  description  for  the
6311       search  algorithm  used  to find local vifmrc.  Global vifmrc is loaded
6312       before the local one, so that the later one can redefine anything  con‐
6313       figured globally.
6314
6315       Use vifmrc to set settings, mappings, filetypes etc.  To use multi line
6316       commands precede each next line with a slash (whitespace  before  slash
6317       is ignored, but all spaces at the end of the lines are saved).  For ex‐
6318       ample:
6319
6320         set
6321             \smartcase
6322
6323       equals "setsmartcase".  When
6324
6325         set<space here>
6326             \ smartcase
6327
6328       equals "set  smartcase".
6329
6330       The $VIFM/vifminfo file contains generic state of the application.  You
6331       can  control  what  is stored in vifminfo by setting 'vifminfo' option.
6332       Vifm always writes this file on exit unless 'vifminfo' option is empty.
6333       Marks,  bookmarks, commands, histories, filetypes, fileviewers and reg‐
6334       isters in the file are merged with vifm configuration (which has bigger
6335       priority).
6336
6337       Generally,  runtime  configuration  has bigger priority during merging,
6338       but there are some exceptions:
6339
6340         - directory stack stored in the file is not overwritten unless  some‐
6341           thing is changed in vifm instance that performs merge;
6342
6343         - each  mark  or  bookmark  is marked with a timestamp, so that newer
6344           value is not overwritten by older one, thus no matter from where it
6345           comes, the newer one wins;
6346
6347         - all  histories  are  marked  with timestamps on storing, this means
6348           that last instance to quit puts its elements on top of the list;
6349
6350         - tabs are merged only if both current instance and stored state con‐
6351           tain exactly one tab of any kind.
6352
6353       The  $VIFM/scripts  directory can contain shell scripts.  vifm modifies
6354       its PATH environment variable to let user  run  those  scripts  without
6355       specifying  full path.  All subdirectories of the $VIFM/scripts will be
6356       added to PATH too.  Script in a subdirectory overlaps script  with  the
6357       same name in all its parent directories.
6358
6359       The  $VIFM/colors/  and  {prefix}/etc/vifm/colors/  directories contain
6360       color schemes.  Available color schemes are searched in that order,  so
6361       on name conflict the one in $VIFM/colors/ wins.
6362
6363       Each  color scheme should have ".vifm" extension.  This wasn't the case
6364       before and for this reason the following rules apply during lookup:
6365
6366         - if there is no file with .vifm extension,  all  regular  files  are
6367           listed;
6368
6369         - otherwise  only files with .vifm extension are listed (with the ex‐
6370           tension being truncated).
6371

Sessions

6373       Sessions provide a way to have multiple persistent  runtime  configura‐
6374       tions.  Think of them as second-level vifminfo files in addition to the
6375       first-level one used by all sessions.  In other words,  they  aren't  a
6376       replacement  for vifminfo file that exists without sessions, but an ad‐
6377       dition to it.  One can empty 'vifminfo' option and rely solely on  ses‐
6378       sions,  but  in  practice  one might want to share some state among in‐
6379       stances in different sessions or have an  "out-of-sessions"  state  for
6380       tasks that don't deserve a session of their own.
6381
6382       This  leads  to  a  two-level structure where data in session files has
6383       higher priority than data in vifminfo files (where  this  makes  sense)
6384       following the same rules that merging of vifminfo file obeys.  In addi‐
6385       tion to that, history items from session files are never ordered before
6386       history items from vifminfo file.
6387
6388       Format
6389
6390       Sessions  have the format of vifminfo files, they do not consist of se‐
6391       quence of command-line commands and are not meant  to  be  sourced  via
6392       :source command.
6393
6394       Storage and naming
6395
6396       `$VIFM/sessions/`  directory  serves as a storage for sessions.  Conse‐
6397       quently names should be valid filenames.  The structure of the  storage
6398       is  flat  meaning that there are no subdirectories, that's why names of
6399       sessions can't contain slashes.
6400
6401       Usage model
6402
6403       Contrary to Vim, vifm automates basic management of sessions.  You  can
6404       start, switch, stop or delete a session using builtin means.
6405
6406       Current  session is saved at the same time vifminfo is saved (on normal
6407       exits or explicitly on :write command) and right  before  switching  to
6408       another  session.   To avoid saving in those cases use :session command
6409       to detach (without saving) from a session before proceeding.
6410
6411       Related topics
6412
6413       Commands: :session, :delsession
6414       Options: 'sessionoptions'
6415       Variables: v:session
6416

Automatic FUSE mounts

6418       vifm has a builtin support of automated FUSE file system mounts.  It is
6419       implemented  using  file  associations  mechanism.  To enable automated
6420       mounts, one needs to use a specially formatted program line in filetype
6421       or  filextype  commands.   These  use special macros, which differ from
6422       macros in commands unrelated to FUSE.  Currently three formats are sup‐
6423       ported:
6424
6425       1)  FUSE_MOUNT  This format should be used in case when all information
6426       needed for mounting all files of a particular type is the  same.   E.g.
6427       mounting of tar files don't require any file specific options.
6428
6429       Format line:
6430         FUSE_MOUNT|mounter %SOURCE_FILE %DESTINATION_DIR [%FOREGROUND]
6431
6432       Example filetype command:
6433
6434         :filetype FUSE_MOUNT|fuse-zip %SOURCE_FILE %DESTINATION_DIR
6435
6436       2)  FUSE_MOUNT2 This format allows one to use specially formatted files
6437       to perform mounting and is useful for mounting remotes, for example re‐
6438       mote file systems over ftp or ssh.
6439
6440       Format line:
6441         FUSE_MOUNT2|mounter %PARAM %DESTINATION_DIR [%FOREGROUND]
6442
6443       Example filetype command:
6444
6445         :filetype *.ssh FUSE_MOUNT2|sshfs %PARAM %DESTINATION_DIR
6446
6447       Example file content:
6448
6449         root@127.0.0.1:/
6450
6451       3) FUSE_MOUNT3
6452
6453       This  format  is equivalent to FUSE_MOUNT, but omits unmounting.  It is
6454       useful for cases, when unmounting isn't needed, like when using AVFS.
6455
6456       Example :filetype command:
6457
6458         :filetype *.tar,*.tar.bz2,*.tbz2,*.tgz,*.tar.gz,*.tar.xz,*.txz,*.deb
6459              \ {Mount with avfs}
6460              \ FUSE_MOUNT3|mount-avfs %DESTINATION_DIR %SOURCE_FILE
6461
6462       Example `mount-avfs` helper script:
6463
6464         #!/bin/sh
6465
6466         dest=$1
6467         file=$2
6468
6469         rmdir "$dest"
6470         ln -s "$HOME/.avfs$file#/" "$dest"
6471
6472       All % macros are expanded by vifm at runtime  and  have  the  following
6473       meaning:
6474         - %SOURCE_FILE is replaced by full path to selected file;
6475         - %DESTINATION_DIR is replaced by full path to mount directory, which
6476       is created by vifm basing on the value of 'fusehome' option;
6477         - %PARAM value is filled from the first line of  file  (whole  line),
6478       though in the future it can be changed to whole file content;
6479         -  %FOREGROUND  means that you want to run mount command as a regular
6480       command (required to be able to provide input  for  communication  with
6481       mounter in interactive way).
6482
6483       %FOREGROUND  is an optional macro.  Other macros are not mandatory, but
6484       mount commands likely won't work without them.
6485
6486       %CLEAR is obsolete name of %FOREGROUND, which is still  supported,  but
6487       might be removed in future.  Its use is discouraged.
6488
6489       Unlike  macros  elsewhere,  these are recognized only if they appear at
6490       the end of a command or are followed by a space.  There is  no  way  to
6491       escape  % either.  These are historical limitations, which might be ad‐
6492       dressed in the future.
6493
6494       The mounted FUSE file systems will be automatically  unmounted  in  two
6495       cases:
6496
6497         - when vifm quits (with ZZ, :q, etc. or when killed by signal);
6498
6499         - when you explicitly leave mount point going up to its parent direc‐
6500           tory (with h, Enter on "../" or ":cd ..") and other pane is not  in
6501           the same directory or its child directories.
6502

View look

6504       vifm supports displaying of file list view in two different ways:
6505
6506         - in  a  table  mode,  when  multiple columns can be set using 'view‐
6507           columns' option (see "Column view" section below for details);
6508
6509         - in a multicolumn list manner which looks almost like `ls  -x`  com‐
6510           mand output (see "ls-like view" section below for details).
6511
6512       The  look is local for each view and can be chosen by changing value of
6513       the 'lsview' boolean option.
6514
6515       Depending on view look some of keys change their meaning to allow  more
6516       natural cursor moving.  This concerns mainly h, j, k, l and other simi‐
6517       lar navigation keys.
6518
6519       Also some of options can be ignored if they don't affect view  display‐
6520       ing in selected look.  For example value of 'viewcolumns' when 'lsview'
6521       is set.
6522

ls-like view

6524       When this view look is enabled by setting 'lsview' option on, vifm will
6525       display  files  in  multiple columns.  Number of columns depends on the
6526       length of the longest file name present in  current  directory  of  the
6527       view.   Whole  file list is automatically reflowed on directory change,
6528       terminal or view resize.
6529
6530       View looks close to output of `ls -x` command, so files are listed left
6531       to right in rows.
6532
6533       In  this  mode file manipulation commands (e.g. d) don't work line-wise
6534       like they do in Vim, since such operations would be uncommon  for  file
6535       manipulation  tasks.   Thus,  for  example, dd will remove only current
6536       file.
6537
6538       By default the view is filled by lines, 'lsoptions' can be used to  get
6539       filling by columns.
6540
6541       Note that tree-view and compare view inhibit ls-like view.
6542

Column view

6544       View columns are described by a comma-separated list of column descrip‐
6545       tions, each of which has the following format
6546           [ '-' | '*' ] [ fw ( [ '.' tw ] | '%' ) ] '{' type  |  literal  '}'
6547       '.'{0,3}
6548       where  fw stands for full width, tw stands for text width, bar is logi‐
6549       cal or, square brackets denote optional parts and curly  braces  define
6550       range of repetitions for a symbol that precedes them.
6551
6552       So it basically consists of four parts:
6553        1. Optional alignment specifier
6554        2. Optional width specifier
6555        3. Mandatory column name
6556        4. Optional cropping specifier
6557
6558       Alignment specifier
6559
6560       It's  an  optional  minus  or  asterisk sign as the first symbol of the
6561       string.
6562
6563       Specifies type of text alignment within a column.  Three types are sup‐
6564       ported:
6565
6566       - left align
6567
6568           set viewcolumns=-{name}
6569
6570       - right align (default)
6571
6572           set viewcolumns={name}
6573
6574       - dynamic align
6575
6576         It's  like  left alignment, but when the text is bigger than the col‐
6577         umn, the alignment is made at the right (so the part of the field  is
6578         always visible).
6579
6580           set viewcolumns=*{name}
6581
6582       Width specifier
6583
6584       It's  a  number  followed  by  a  percent sign, two numbers (second one
6585       should be less than or equal to the first one) separated with a dot  or
6586       a single number.
6587
6588       Specifies column width and its units. There are three size types:
6589
6590       - absolute size - column width is specified in characters
6591
6592           set viewcolumns=-100{name},20.15{ext}
6593
6594         results  in  two  columns  with  lengths of 100 and 20 and a reserved
6595         space of five characters on the left of second column.
6596
6597       - relative (percent) size - column width is specified  in  percents  of
6598         view width
6599
6600           set viewcolumns=-80%{name},15%{ext},5%{mtime}
6601
6602         results  in three columns with lengths of 80/100, 15/100 and 5/100 of
6603         view width.
6604
6605       - auto size (default) - column width is automatically determined
6606
6607           set viewcolumns=-{name},{ext},{mtime}
6608
6609         results in three columns with length of  one  third  of  view  width.
6610         There  is no size adjustment to content, since it will slow down ren‐
6611         dering.
6612
6613       Columns of different sizing types can be  freely  mixed  in  one  view.
6614       Though  sometimes  some  of columns can be seen partly or be completely
6615       invisible if there is not enough space to display them.
6616
6617       Column contents
6618
6619       This is usually a sorting key surrounded with curly braces, e.g.
6620
6621         {name},{ext},{mtime}
6622
6623       {name} and {iname} types are the same and present both for  consistency
6624       with 'sort' option.
6625
6626       Following types don't have corresponding sorting keys:
6627
6628         - {root}      -  display  name without extension (as a complement for
6629           {ext})
6630
6631         - {fileroot} - display name without extension for anything except for
6632           directories  and symbolic links to directories (as a complement for
6633           {fileext})
6634
6635       Empty curly braces ({}) are replaced with the default secondary  column
6636       for  primary sort key. So after the next command view will be displayed
6637       almost as if 'viewcolumns' is empty, but adding ellipsis for long  file
6638       names:
6639
6640         set viewcolumns=-{name}..,6{}.
6641
6642       The last kind of column value is a string literal.  The literal is used
6643       as a column value for every row.  The syntax is "{#literal}", for exam‐
6644       ple:
6645
6646         3{#},{#|},{# | }
6647
6648       This  can be used to draw column separators.  Mind that for convenience
6649       literals have different defaults: truncation and  automatically  deter‐
6650       mined absolute size, which is what you usually want for them.  Example:
6651
6652         set viewcolumns=*{name}..,{#|},6{}.
6653
6654       Cropping specifier
6655
6656       It's from one to three dots after closing curly brace in column format.
6657
6658       Specifies  type  of  text  truncation  if it doesn't fit in the column.
6659       Currently three types are supported:
6660
6661         - truncation - text is truncated
6662
6663             set viewcolumns=-{name}.
6664
6665           results in truncation of names that are too long  too  fit  in  the
6666           view.
6667
6668         - adding  of  ellipsis - ellipsis on the left or right are added when
6669           needed
6670
6671             set viewcolumns=-{name}..
6672
6673           results in that ellipsis are added at the  end  of  too  long  file
6674           names.
6675
6676         - none (default) - text can pass column boundaries
6677
6678             set viewcolumns=-{name}...,{ext}
6679
6680           results in that long file names can partially be written on the ext
6681           column.
6682

Color schemes

6684       The color schemes in vifm can be applied in two different ways:
6685
6686         - as the primary color scheme;
6687
6688         - as local to a pane color scheme.
6689
6690       Both types are set using :colorscheme command, but of different forms:
6691
6692         - :colorscheme color_scheme_name - for the primary color scheme;
6693
6694         - :colorscheme color_scheme_name directory - for local color schemes.
6695
6696       Look of different parts of the TUI (Text User Interface) is  determined
6697       in this way:
6698
6699         - Border,  TabLine,  TabLineSel,  TopLineSel,  TopLine,  CmdLine, Er‐
6700           rorMsg, StatusLine, JobLine, SuggestBox and WildMenu are always de‐
6701           termined by the primary color scheme;
6702
6703         - CurrLine,  Selected,  Directory,  Link, BrokenLink, Socket, Device,
6704           Executable, Fifo, CmpMismatch, CmpUnmatched, CmpBlank, Win,  AuxWin
6705           and  OtherWin  are  determined by primary color scheme and a set of
6706           local color schemes, which can be empty.
6707
6708       There might be a set of local color schemes because they are structured
6709       hierarchically  according to file system structure. For example, having
6710       the following piece of file system:
6711
6712         ~
6713         `-- bin
6714            |
6715            `-- my
6716
6717       Two color schemes:
6718
6719         # ~/.config/vifm/colors/for_bin.vifm
6720         highlight Win cterm=none ctermfg=white ctermbg=red
6721         highlight CurrLine cterm=none ctermfg=red ctermbg=black
6722
6723         # ~/.config/vifm/colors/for_bin_my.vifm
6724         highlight CurrLine cterm=none ctermfg=green ctermbg=black
6725
6726       And these three commands in the vifmrc file:
6727
6728         colorscheme Default
6729         colorscheme for_bin ~/bin
6730         colorscheme for_bin_my ~/bin/my
6731
6732       File list will look in the following way for each level:
6733
6734       - ~/ - Default color scheme
6735         black background
6736         cursor with blue background
6737
6738       - ~/bin/ - mix of Default and for_bin color schemes
6739         red background
6740         cursor with black background and red foreground
6741
6742       - ~/bin/my/ - mix of Default, for_bin and for_bin_my color schemes
6743         red background
6744         cursor with black background and green foreground
6745

Trash directory

6747       vifm has support of trash directory, which is used as temporary storage
6748       for deleted files or files that were cut.  Using trash is controlled by
6749       the 'trash' option, and exact  path  to  the  trash  can  be  set  with
6750       'trashdir'  option.   Trash  directory in vifm differs from the system-
6751       wide one by default, because of possible incompatibilities  of  storing
6752       deleted   files  among  different  file  managers.   But  one  can  set
6753       'trashdir' to "~/.local/share/Trash" to use a "standard"  trash  direc‐
6754       tory.
6755
6756       There are two scenarios of using trash in vifm:
6757
6758         1. As  a  place for storing files that were cut by "d" and may be in‐
6759            serted to some other place in file system.
6760
6761         2. As a storage of files, that are deleted but not purged yet.
6762
6763       The first scenario uses deletion ("d") operations to put files to trash
6764       and  put  ("p") operations to restore files from trash directory.  Note
6765       that such operations move files to and from trash directory, which  can
6766       be  long  term  operations  in  case  of different partitions or remote
6767       drives mounted locally.
6768
6769       The second scenario uses deletion ("d") operations for moving files  to
6770       trash directory and :empty command-line command to purge all previously
6771       deleted files.
6772
6773       Deletion and put operations depend on registers,  which  can  point  to
6774       files  in trash directory.  Normally, there are no nonexistent files in
6775       registers, but vifm doesn't keep track of modifications under trash di‐
6776       rectory,  so  one  shouldn't expect value of registers to be absolutely
6777       correct if trash directory was modified not by operation that are meant
6778       for  it.  But this won't lead to any issues with operations, since they
6779       ignore nonexistent files.
6780

Client-Server

6782       vifm supports remote execution of command-line  mode  commands,  remote
6783       changing  of  directories  and expression evaluation.  This is possible
6784       using --remote and --remote-expr command-line arguments.
6785
6786       To execute a command remotely combine --remote argument with  -c  <com‐
6787       mand> or +<command>.  For example:
6788
6789         vifm --remote -c 'cd /'
6790         vifm --remote '+cd /'
6791
6792       To  change directory not using command-line mode commands one can spec‐
6793       ify paths right after --remote argument, like this:
6794
6795         vifm --remote /
6796         vifm --remote ~
6797         vifm --remote /usr/bin /tmp
6798
6799       Evaluating expression remotely might be  useful  to  query  information
6800       about an instance, for example its location:
6801
6802         vifm --remote-expr 'expand("%d")'
6803
6804       If  there  are  several  running instances, the target can be specified
6805       with --server-name option (otherwise, the first  one  lexicographically
6806       is used):
6807
6808         vifm --server-name work --remote ~/work/project
6809
6810       List  of  names  of running instances can be obtained via --server-list
6811       option.  Name of the current one is available via v:servername.
6812
6813
6814       v:servername
6815              server name of the running  vifm  instance.   Empty  if  client-
6816              server feature is disabled.
6817

External Renaming

6819       When  an editor is run to edit list of file names, contents of the tem‐
6820       porary file has the following format:
6821
6822         1. Order of lines correspond to the order of files in a view.
6823
6824         2. Lines that start with a "#" are comments and are ignored.
6825
6826         3. Single backslash at the beginning of a line is ignored, so that  a
6827            file starting with a backslash will appear like "\#name".
6828
6829       If  an  operation was rejected due to issues with file names, next time
6830       you'll see the following in this order:
6831
6832         1. Last error (in comments).
6833
6834         2. Original file names (in comments).
6835
6836         3. Failed list of new names.
6837
6838       Mind that Vim plugin will extract list of original names and show  them
6839       in a vertical split.
6840
6841       You  can  cancel renaming by removing all non-comments from the buffer.
6842       This also erases information about previous edits.
6843

Using mouse

6845       Note: <ScrollWheelDown> is not available on 32-bit  *nix  systems,  be‐
6846       cause ncurses doesn't support it there (limitation of implementation).
6847
6848       Note: these are not available in mappings at the momemnt.
6849
6850       Normal Mode
6851
6852         event             position  change  action
6853                            cursor   window
6854         <LeftMouse>         yes      yes    <cr> if cursor wasn't move
6855         <LeftRelease>        no      yes
6856         <MiddleMouse>        no      yes    <c-e>
6857         <MiddleRelease>      no      yes
6858         <RightMouse>        yes      yes    :file
6859         <RightRelease>       no      yes
6860         <ScrollWheelUp>      no      yes    <c-y> or :tabprevious
6861         <ScrollWheelDown>    no      yes    <c-e> or :tabnext
6862
6863       Clicking  on  or scrolling over an inactive pane (including its title),
6864       makes it active and does nothing else.  Tabs are  scrolled  when  mouse
6865       hovers over them.
6866
6867       Clicking  on the left miller column goes to parent directory and click‐
6868       ing the right one opens current entry.
6869
6870       Visual Mode
6871
6872         event             position  selection  action
6873                            cursor
6874         <LeftMouse>         yes      update    <cr> if cursor wasn't move
6875         <LeftRelease>        no
6876         <MiddleMouse>        no      update    <c-e>
6877         <MiddleRelease>      no
6878         <RightMouse>         no
6879         <RightRelease>       no
6880         <ScrollWheelUp>      no      update    <c-y>
6881         <ScrollWheelDown>    no      update    <c-e>
6882
6883       Command-line Mode
6884
6885         event             position  action
6886                            cursor
6887         <LeftMouse>         yes
6888         <LeftRelease>        no
6889         <MiddleMouse>        no     <c-n>
6890         <MiddleRelease>      no
6891         <RightMouse>         no
6892         <RightRelease>       no
6893         <ScrollWheelUp>      no     <c-p>
6894         <ScrollWheelDown>    no     <c-n>
6895
6896       Menu Mode
6897
6898         event             position  action
6899                            cursor
6900         <LeftMouse>         yes     <cr> if cursor wasn't moved
6901         <LeftRelease>        no
6902         <MiddleMouse>        no     <c-e>
6903         <MiddleRelease>      no
6904         <RightMouse>         no
6905         <RightRelease>       no
6906         <ScrollWheelUp>      no     <c-y>
6907         <ScrollWheelDown>    no     <c-e>
6908
6909       view Mode
6910
6911         event               action
6912
6913         <ScrollWheelUp>     k
6914         <ScrollWheelDown>   j
6915
6916       Clicking on or scrolling over an inactive pane (including  its  title),
6917       detaches view mode if it wasn't activated for exploring a file.
6918
6919

Plugin

6921       Plugin for using vifm in vim as a file selector.
6922
6923       Commands:
6924
6925         :EditVifm   select a file or files to open in the current buffer.
6926         :Vifm       alias for :EditVifm.
6927         :SplitVifm  split buffer and select a file or files to open.
6928         :VsplitVifm  vertically  split  buffer  and select a file or files to
6929       open.
6930         :DiffVifm   select a file or files to compare  to  the  current  file
6931       with
6932                     :vert diffsplit.
6933         :TabVifm    select a file or files to open in tabs.
6934
6935       Each command accepts up to two arguments: left pane directory and right
6936       pane directory.  After arguments are checked, vifm process  is  spawned
6937       in  a  special "file-picker" mode.  To pick files just open them either
6938       by pressing l, i or Enter keys, or by running  :edit  command.   If  no
6939       files  are  selected,  file under the cursor is opened, otherwise whole
6940       selection is passed to the plugin and opened in vim.
6941
6942       The plugin have only  two  settings.   It's  a  string  variable  named
6943       g:vifm_term  to  let  user specify command to run GUI terminal.  By de‐
6944       fault it's equal to 'xterm -e'.   And  another  string  variable  named
6945       g:vifm_exec,  which  equals  "vifm"  by  default  and specifies path to
6946       vifm's executable.  To pass arguments  to  vifm  use  g:vifm_exec_args,
6947       which is empty by default.
6948
6949       To  use  the  plugin  copy  the vifm.vim file to either the system wide
6950       vim/plugin directory or into ~/.vim/plugin.
6951
6952       If you would prefer not to use the plugin and it is in the system  wide
6953       plugin directory add
6954
6955       let loaded_vifm=1
6956
6957       to your ~/.vimrc file.
6958

Reserved

6960       The following command names are reserved and shouldn't be used for user
6961       commands.
6962
6963         g[lobal]
6964         v[global]
6965

ENVIRONMENT

6967       VIFM   Points  to  main  configuration   directory   (usually   ~/.con‐
6968              fig/vifm/).
6969
6970       MYVIFMRC
6971              Points    to    main   configuration   file   (usually   ~/.con‐
6972              fig/vifm/vifmrc).
6973
6974       These environment variables are valid inside vifm and also can be  used
6975       to configure it by setting some of them before running vifm.
6976
6977       When $MYVIFMRC isn't set, it's made as $VIFM/vifmrc (exception for Win‐
6978       dows: vifmrc in the same directory as vifm.exe has higher priority than
6979       $VIFM/vifmrc).
6980
6981       See "Startup" section above for more details.
6982
6983       VIFM_FUSE_FILE
6984              On  execution  of  external commands this variable is set to the
6985              full path of file used to initiate FUSE  mount  of  the  closest
6986              mount point from current pane's directory up.  It's not set when
6987              outside FUSE mount point.  When vifm  is  used  inside  terminal
6988              multiplexer,  it  tries to set this variable as well (it doesn't
6989              work this way on its own).
6990

SEE ALSO

6992       vifm-convert-dircolors(1), vifm-pause(1)
6993
6994       Website: https://vifm.info/
6995       Wiki: https://wiki.vifm.info/
6996
6997       Esperanto translation of the documentation by Sebastian Cyprych:
6998       http://cyprych.neostrada.pl/tekstoj/komputiloj/vifm-help.eo.html
6999

AUTHOR

7001       Vifm was written by ksteen <ksteen@users.sourceforge.net>
7002       And currently is developed by xaizek <xaizek@posteo.net>
7003
7004
7005
7006vifm 0.13                        04 April 2023                         VIFM(1)
Impressum