1VIFM(1) General Commands Manual VIFM(1)
2
3
4
6 vifm - vi file manager
7
9 vifm [OPTION]...
10 vifm [OPTION]... path
11 vifm [OPTION]... path path
12
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
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 --logging[=<startup log path>]
70 Log some operational details to $XDG_DATA_HOME/vifm/log or
71 $VIFM/log. If the optional startup log path is specified and
72 permissions allow to open it for writing, then logging of early
73 initialization (before configuration directories are determined)
74 is put there.
75
76 --server-list
77 List available server names and exit.
78
79 --server-name <name>
80 Name of target or this instance (sequential numbers are appended
81 on name conflict).
82
83 --remote
84 Sends the rest of the command line to another instance of vifm,
85 --server-name is treated just like any other argument and should
86 precede --remote on the command line. When there is no server,
87 quits silently. There is no limit on how many arguments can be
88 processed. One can combine --remote with -c <command> or +<com‐
89 mand> to execute commands in already running instance of vifm.
90 See also "Client-Server" section below.
91
92 --remote-expr
93 passes expression to vifm server and prints result. See also
94 "Client-Server" section below.
95
96 -c <command> or +<command>
97 Run command-line mode <command> on startup. Commands in such
98 arguments are executed in the order they appear in command line.
99 Commands with spaces or special symbols must be enclosed in dou‐
100 ble or single quotes or all special symbols should be escaped
101 (the exact syntax strongly depends on shell). "+" argument is
102 equivalent to "$" and thus picks last item of of the view.
103
104 --help, -h
105 Show a brief command summary and exit vifm.
106
107 --version, -v
108 Show version information and quit.
109
110 --no-configs
111 Skip reading vifmrc and vifminfo.
112
113
114 See "Startup" section below for the explanations on $VIFM.
115
117 Ctrl-C or Escape
118 cancel most operations (see "Cancellation" section below), clear
119 all selected files.
120
121 Ctrl-L clear and redraw the screen. Can also reload file list in ap‐
122 propriate modes (like normal and visual).
123
125 The basic vi key bindings are used to move through the files and pop-up
126 windows.
127
128 k, gk, or Ctrl-P
129 move cursor up one line.
130
131 j, gj or Ctrl-N
132 move cursor down one line.
133
134 h when 'lsview' is off move up one directory (moves to parent di‐
135 rectory node in tree view), otherwise move left one file.
136
137 l when 'lsview' is off move into a directory or launch a file,
138 otherwise move right one file. See "Selection" section below.
139
140 gg move to the first line of the file list.
141
142 G move to the last line in the file list.
143
144 gh go up one directory regardless of view representation (regular,
145 ls-like). Also can be used to leave custom views including tree
146 view.
147
148 gl or Enter
149 enter directory or launch a file. See "Selection" section be‐
150 low.
151
152 H move to the first file in the window.
153
154 M move to the file in the middle of the window.
155
156 L move to the last file in the window.
157
158 Ctrl-F or Page Down
159 move forward one page.
160
161 Ctrl-B or Page Up
162 move back one page.
163
164 Ctrl-D jump back one half page.
165
166 Ctrl-U jump forward one half page.
167
168 n% move to the file that is n percent from the top of the list (for
169 example 25%).
170
171 0 or ^ move cursor to the first column. See 'lsview' option descrip‐
172 tion.
173
174 $ move cursor to the last column. See 'lsview' option descrip‐
175 tion.
176
177 Space switch file lists.
178
179 gt switch to the next tab (wrapping around).
180
181 {n}gt switch to the tab number {n} (wrapping around).
182
183 gT switch to the previous tab (wrapping around).
184
185 {n}gT switch to {n}-th previous tab.
186
188 Most movement commands also accept a count, 12j would move down 12
189 files.
190
191 [count]%
192 move to percent of the file list.
193
194 [count]j
195 move down [count] files.
196
197 [count]k
198 move up [count] files.
199
200 [count]G or [count]gg
201 move to list position [count].
202
203 [count]h
204 go up [count] directories.
205
207 zt redraw pane with file in top of list.
208
209 zz redraw pane with file in center of list.
210
211 zb redraw pane with file in bottom of list.
212
213 Ctrl-E scroll pane one line down.
214
215 Ctrl-Y scroll pane one line up.
216
218 Second character can be entered with or without Control key.
219
220 Ctrl-W H
221 move the pane to the far left.
222
223 Ctrl-W J
224 move the pane to the very bottom.
225
226 Ctrl-W K
227 move the pane to the very top.
228
229 Ctrl-W L
230 move the pane to the far right.
231
232
233 Ctrl-W h
234 switch to the left pane.
235
236 Ctrl-W j
237 switch to the pane below.
238
239 Ctrl-W k
240 switch to the pane above.
241
242 Ctrl-W l
243 switch to the right pane.
244
245
246 Ctrl-W b
247 switch to bottom-right window.
248
249 Ctrl-W t
250 switch to top-left window.
251
252
253 Ctrl-W p
254 switch to previous window.
255
256 Ctrl-W w
257 switch to other pane.
258
259
260 Ctrl-W o
261 leave only one pane.
262
263 Ctrl-W s
264 split window horizontally.
265
266 Ctrl-W v
267 split window vertically.
268
269
270 Ctrl-W x
271 exchange panes.
272
273 Ctrl-W z
274 quit preview pane or view modes.
275
276
277 Ctrl-W -
278 decrease size of the view by count.
279
280 Ctrl-W +
281 increase size of the view by count.
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
290 Ctrl-W |
291 set current view size to count.
292
293 Ctrl-W _
294 set current view size to count.
295
296 Ctrl-W =
297 make size of two views equal.
298
299 For Ctrl-W +, Ctrl-W -, Ctrl-W <, Ctrl-W >, Ctrl-W | and Ctrl-W _ com‐
300 mands count can be given before and/or after Ctrl-W. The resulting
301 count is a multiplication of those two. So "2 Ctrl-W 2 -" decreases
302 window size by 4 lines or columns.
303
304 Ctrl-W | and Ctrl-W _ maximise current view by default.
305
307 Marks are set the same way as they are in vi.
308
309 You can use these characters for marks [a-z][A-Z][0-9].
310
311 m[a-z][A-Z][0-9]
312 set a mark for the file at the current cursor position.
313
314 '[a-z][A-Z][0-9]
315 navigate to the file set for the mark.
316
317
318 There are also several special marks that can't be set manually:
319
320 - ' (single quote) - previously visited directory of the view, thus
321 hitting '' allows switching between two last locations
322
323 - < - the first file of the last visually selected block
324
325 - > - the last file of the last visually selected block
326
328 /regular expression pattern
329 search for files matching regular expression in forward direc‐
330 tion and advance cursor to next match.
331
332 / perform forward search with top item of search pattern history.
333
334 ?regular expression pattern
335 search for files matching regular expression in backward direc‐
336 tion and advance cursor to previous match.
337
338 ? perform backward search with top item of search pattern history.
339
340 Trailing slash for directories is taken into account, so /\/ searches
341 for directories and symbolic links to directories. At the moment //
342 works too, but this can change in the future, so consider escaping the
343 slash if not typing pattern by hand.
344
345 Matches are automatically selected if 'hlsearch' is set. Enabling
346 'incsearch' makes search interactive. 'ignorecase' and 'smartcase' op‐
347 tions affect case sensitivity of search queries as well as local filter
348 and other things detailed in the description of 'caseoptions'.
349
350
351 [count]n
352 go to the next file matching last search pattern. Takes last
353 search direction into account.
354
355 [count]N
356 go to the previous file matching last search pattern. Takes
357 last search direction into account.
358
359 If 'hlsearch' option is set, hitting n/N to perform search and go to
360 the first matching item resets current selection in normal mode. It is
361 not the case if search was already performed on files in the directory,
362 thus selection is not reset after clearing selection with escape key
363 and hitting n/N key again.
364
365 See also "Regular expressions" section.
366
367
368 [count]f[character]
369 search forward for file with [character] as first character in
370 name. Search wraps around the end of the list.
371
372 [count]F[character]
373 search backward for file with [character] as first character in
374 name. Search wraps around the end of the list.
375
376 [count];
377 find the next match of f or F.
378
379 [count],
380 find the previous match of f or F.
381
382 Note: f, F, ; and , wrap around list beginning and end when they are
383 used alone and they don't wrap when they are used as selectors.
384
386 There are three basic file filters:
387
388 - dot files filter (does not affect "." and ".." special directories,
389 whose appearance is controlled by the 'dotdirs' option), see 'dot‐
390 files' option;
391
392 - permanent filter;
393
394 - local filter (see description of the "=" normal mode command).
395
396 Permanent filter essentially allows defining a group of files names
397 which are not desirable to be seen by default, like temporary or backup
398 files, which might be created alongside normal ones. Just like you
399 don't usually need to see hidden dot files (files starting with a dot).
400 Local filter on the other hand is for temporary immediate filtering of
401 file list at hand, to get rid of uninterested files in the view or to
402 make it possible to use % range in a :command.
403
404 For the purposes of more deterministic editing permanent filter is
405 split into two parts:
406
407 - one edited explicitly via :filter command;
408
409 - another one which is edited implicitly via zf shortcut.
410
411 Files are tested against both parts and a match counts if at least one
412 of the parts matched.
413
414
415 Each file list has its own copy of each filter.
416
417 Filtered files are not checked in / search or :commands.
418
419 Files and directories are filtered separately. This is done by append‐
420 ing a slash to a directory name before testing whether it matches the
421 filter. Examples:
422
423
424 " filter directories which names end with '.files'
425 :filter /^.*\.files\/$/
426
427 " filter files which names end with '.d'
428 :filter {*.d}
429
430 " filter files and directories which names end with '.o'
431 :filter /^.*\.o\/?$/
432
433 See also "Regular expressions" and "Patterns" sections.
434
435 The basic Vim folding key bindings are used for managing filters.
436
437
438 za toggle visibility of dot files.
439
440 zo show dot files.
441
442 zm hide dot files.
443
444 zf add selected files to permanent filter.
445
446 zO reset permanent filter.
447
448 zR save and reset all filters.
449
450 zr clear local filter.
451
452 zM restore all filters (undoes last zR).
453
454 zd exclude selection or current file from a custom view. Does
455 nothing for regular view. For tree view excluding directory ex‐
456 cludes that sub-tree. For compare views zd hides group of adja‐
457 cent identical files, count can be specified as 1 to exclude
458 just single file or selected items instead. Files excluded this
459 way are not counted as filtered out and can't be returned unless
460 view is reloaded.
461
462 =regular expression pattern
463 filter out files that don't match regular expression. Whether
464 view is updated as regular expression is changed depends on the
465 value of the 'incsearch' option. This kind of filter is auto‐
466 matically reset when directory is changed.
467
469 While some of the keys make sense outside of tree-view, they are most
470 useful in trees.
471
472 [z go to first sibling of current entry.
473
474 ]z go to last sibling of current entry.
475
476 zj go to next directory sibling of current entry or do nothing.
477
478 zk go to previous directory sibling of current entry or do nothing.
479
480 zx toggle fold under the cursor or parent entry of the current file
481 if cursor is not on a directory.
482
484 [count]:
485 enter command line mode. [count] generates range.
486
487 q: open external editor to prompt for command-line command. See
488 "Command line editing" section for details.
489
490 q/ open external editor to prompt for search pattern to be searched
491 in forward direction. See "Command line editing" section for
492 details.
493
494 q? open external editor to prompt for search pattern to be searched
495 in backward direction. See "Command line editing" section for
496 details.
497
498 q= open external editor to prompt for filter pattern. See "Command
499 line editing" section for details. Unlike other q{x} commands
500 this one doesn't work in Visual mode.
501
502 [count]!! and [count]!<selector>
503 enter command line mode with entered ! command. [count] modi‐
504 fies range.
505
506 Ctrl-O go backwards through directory history of current view. Nonex‐
507 istent directories are automatically skipped.
508
509 Ctrl-I if 'cpoptions' contains "t" flag, <tab> and <c-i> switch active
510 pane just like <space> does, otherwise it goes forward through
511 directory history of current view. Nonexistent directories are
512 automatically skipped.
513
514 Ctrl-G show a dialog with detailed information about current file. See
515 "Menus and dialogs" section for controls.
516
517 Shift-Tab
518 enter view mode (works only after activating view pane with
519 :view command).
520
521 ga calculate directory size. Uses cached directory sizes when pos‐
522 sible for better performance. As a special case calculating
523 size of ".." entry results in calculation of size of current di‐
524 rectory.
525
526 gA like ga, but force update. Ignores old values of directory
527 sizes.
528
529 If file under cursor is selected, each selected item is processed, oth‐
530 erwise only current file is updated.
531
532 gf find link destination (like l with 'followlinks' off, but also
533 finds directories). On Windows additionally follows .lnk-files.
534
535 gF Same as gf, but resolves final path of the chain of symbolic
536 links.
537
538 gr only for MS-Windows
539 same as l key, but tries to run program with administrative
540 privileges.
541
542 av go into visual mode for updating current selection, any existing
543 selection is preserved.
544
545 gv go into visual mode restoring last selection.
546
547 [reg]gs
548 if register is present, then all files listed in that register
549 that are visible in current view are selected.
550
551 When no register is specified, restore the last selection saved
552 for this view (similar to what gv does for visual mode selec‐
553 tion). When you leave a directory, its saved selection is re‐
554 membered for that path and visiting the directory again restores
555 it. Selection for up to 10 distinct file-system locations are
556 remembered.
557
558 gu<selector>
559 make names of selected files lowercase.
560
561 [count]guu and [count]gugu
562 make names of [count] files starting from the current one lower‐
563 case. Without [count] only current file is affected.
564
565 gU<selector>
566 make names of selected files uppercase.
567
568 [count]gUU and [count]gUgU
569 make names of [count] files starting from the current one upper‐
570 case. Without [count] only current file is affected.
571
572 e explore file in the current pane.
573
574 i handle file (even if it's an executable and 'runexec' option is
575 set).
576
577 cw change word is used to rename a file or files. If multiple
578 files are selected, behaves as :rename command run without argu‐
579 ments.
580
581 cW change WORD is used to change only name of file (without exten‐
582 sion).
583
584 cl change link target. If multiple files are selected, an editor
585 is spawn to edit paths.
586
587 co only for *nix
588 change file owner.
589
590 cg only for *nix
591 change file group.
592
593 [count]cp
594 change file attributes (permission on *nix and properties on
595 Windows). If [count] is specified, it's treated as numerical
596 argument for non-recursive `chmod` command (of the form
597 [0-7]{3,4}). See "Menus and dialogs" section for controls.
598
599 [count]C
600 clone file [count] times.
601
602 [count]dd or d[count]selector
603 move selected file or files to trash directory (if 'trash' op‐
604 tion is set, otherwise delete). See "Trash directory" section
605 below.
606
607 [count]DD or D[count]selector
608 like dd and d<selector>, but omitting trash directory (even when
609 'trash' option is set).
610
611 Y, [count]yy or y[count]selector
612 yank selected files.
613
614 p copy yanked files to the current directory or move the files to
615 the current directory if they were deleted with dd or :d[elete]
616 or if the files were yanked from trash directory. See "Trash
617 directory" section below.
618
619 P move the last yanked files. The advantage of using P instead of
620 d followed by p is that P moves files only once. This isn't im‐
621 portant in case you're moving files in the same file system
622 where your home directory is, but using P to move files on some
623 other file system (or file systems, in case you want to move
624 files from fs1 to fs2 and your home is on fs3) can save your
625 time.
626
627 al put symbolic links with absolute paths.
628
629 rl put symbolic links with relative paths.
630
631 t select or unselect (tag) the current file.
632
633 u undo last change.
634
635 Ctrl-R redo last change.
636
637 dp in compare view of "ofboth grouppaths" kind, makes corresponding
638 entry of the other pane equal to the current one. The semantics
639 is as follows:
640 - nothing done for identical entries
641 - if file is missing in current view, its pair gets removed
642 - if file is missing or differs in other view, it's replaced
643 - file pairs are defined by matching relative paths
644 File removal obeys 'trash' option. When the option is enabled,
645 the operation can be undone/redone (although results won't be
646 visible automatically).
647 Unlike in Vim, this operation is performed on a single line
648 rather than a set of adjacent changes.
649
650 do same as dp, but applies changes in the opposite direction.
651
652 v or V enter visual mode, clears current selection.
653
654 [count]Ctrl-A
655 increment first number in file name by [count] (1 by default).
656
657 [count]Ctrl-X
658 decrement first number in file name by [count] (1 by default).
659
660 ZQ same as :quit!.
661
662 ZZ same as :quit.
663
664 . repeat last command-line command (not normal mode command) of
665 this run (does nothing right after startup or :restart command).
666 The command doesn't depend on command-line history and can be
667 used with completely disabled history.
668
669 ( go to previous group. Groups are defined by primary sorting
670 key. For name and iname members of each group have same first
671 letter, for all other sorting keys vifm uses size, uid, ...
672
673 ) go to next group. See ( key description above.
674
675 { speeds up navigation to closest previous entry of the opposite
676 type by moving to the first file backwards when cursor is on a
677 directory and to the first directory backwards when cursor is on
678 a file. This is essentially a special case of ( that is locked
679 on "dirs".
680
681 } same as {, but in forward direction.
682
683 [c go to previous mismatched entry in directory comparison view or
684 do nothing.
685
686 ]c go to next mismatched entry in directory comparison view or do
687 nothing.
688
689 [d go to previous directory entry or do nothing.
690
691 ]d go to next directory entry or do nothing.
692
693 [r same as :siblprev.
694
695 ]r same as :siblnext.
696
697 [R same as :siblprev!.
698
699 ]R same as :siblnext!.
700
701 [s go to previous selected entry or do nothing.
702
703 ]s go to next selected entry or do nothing.
704
706 You can use count with commands like yy.
707
708 [count]yy
709 yank count files starting from current cursor position downward.
710
711 Or you can use count with motions passed to y, d or D.
712
713 d[count]j
714 delete (count + 1) files starting from current cursor position
715 upward.
716
718 vifm supports multiple registers for temporary storing list of yanked
719 or deleted files.
720
721 Registers should be specified by hitting double quote key followed by a
722 register name. Count is specified after register name. By default
723 commands use unnamed register, which has double quote as its name.
724
725 Though all commands accept registers, most of commands ignores them
726 (for example H or Ctrl-U). Other commands can fill register or append
727 new files to it.
728
729 Presently vifm supports ", _, a-z and A-Z characters as register names.
730
731 As mentioned above " is unnamed register and has special meaning of the
732 default register. Every time when you use named registers (a-z and A-
733 Z) unnamed register is updated to contain same list of files as the
734 last used register.
735
736 _ is black hole register. It can be used for writing, but its list is
737 always empty.
738
739 Registers with names from a to z and from A to Z are named ones. Low‐
740 ercase registers are cleared before adding new files, while uppercase
741 aren't and should be used to append new files to the existing file list
742 of appropriate lowercase register (A for a, B for b, ...).
743
744 Registers can be changed on :empty command if they contain files under
745 trash directory (see "Trash directory" section below).
746
747 Registers do not contain one file more than once.
748
749 Example:
750
751 "a2yy
752
753 puts names of two files to register a (and to the unnamed register),
754
755 "Ad
756
757 removes one file and append its name to register a (and to the unnamed
758 register),
759
760 p or "ap or "Ap
761
762 inserts previously yanked and deleted files into current directory.
763
765 y, d, D, !, gu and gU commands accept selectors. You can combine them
766 with any of selectors below to quickly remove or yank several files.
767
768 Most of selectors are like vi motions: j, k, gg, G, H, L, M, %, f, F,
769 ;, comma, ', ^, 0 and $. But there are some additional ones.
770
771 a all files in current view.
772
773 s selected files.
774
775 S all files except selected.
776
777 Examples:
778
779 - dj - delete file under cursor and one below;
780
781 - d2j - delete file under cursor and two below;
782
783 - y6gg - yank all files from cursor position to 6th file in the list.
784
785 When you pass a count to whole command and its selector they are multi‐
786 plied. So:
787
788 - 2d2j - delete file under cursor and four below;
789
790 - 2dj - delete file under cursor and two below;
791
792 - 2y6gg - yank all files from cursor position to 12th file in the
793 list.
794
796 Visual mode has two generic operating submodes:
797
798 - plain selection as it is in Vim;
799
800 - selection editing submode.
801
802 Both modes select files in range from cursor position at which visual
803 mode was entered to current cursor position (let's call it "selection
804 region"). Each of two borders can be adjusted by swapping them via "o"
805 or "O" keys and updating cursor position with regular cursor motion
806 keys. Obviously, once initial cursor position is altered this way,
807 real start position becomes unavailable.
808
809 Plain Vim-like visual mode starts with cleared selection, which is not
810 restored on rejecting selection ("Escape", "Ctrl-C", "v", "V"). Con‐
811 trary to it, selection editing doesn't clear previously selected files
812 and restores them after reject. Accepting selection by performing an
813 operation on selected items (e.g. yanking them via "y") moves cursor to
814 the top of current selection region (not to the top most selected file
815 of the view).
816
817 In turn, selection editing supports three types of editing (look at
818 status bar to know which one is currently active):
819
820 - append - amend selection by selecting elements in selection region;
821
822 - remove - amend selection by deselecting elements in selection re‐
823 gion;
824
825 - invert - amend selection by inverting selection of elements in se‐
826 lection region.
827
828 No matter how you activate selection editing it starts in "append".
829 One can switch type of operation (in the order given above) via "Ctrl-
830 G" key.
831
832 Almost all normal mode keys work in visual mode, but instead of accept‐
833 ing selectors they operate on selected items.
834
835 Enter save selection and go back to normal mode not moving cursor.
836
837 av leave visual mode if in amending mode (restores previous selec‐
838 tion), otherwise switch to amending selection mode.
839
840 gv restore previous visual selection.
841
842 v, V, Ctrl-C or Escape
843 leave visual mode if not in amending mode, otherwise switch to
844 normal visual selection.
845
846 Ctrl-G switch type of amending by round robin scheme: append -> remove
847 -> invert.
848
849 : enter command line mode. Selection is cleared on leaving the
850 mode.
851
852 o switch active selection bound.
853
854 O switch active selection bound.
855
856 gu, u make names of selected files lowercase.
857
858 gU, U make names of selected files uppercase.
859
860 cl change target of symbolic link(s).
861
862 cw same as running :rename command without arguments.
863
865 This mode tries to imitate the less program. List of builtin shortcuts
866 can be found below. Shortcuts can be customized using :qmap, :qnoremap
867 and :qunmap command-line commands.
868
869 Shift-Tab, Tab, q, Q, ZZ
870 return to normal mode.
871
872 [count]e, [count]Ctrl-E, [count]j, [count]Ctrl-N, [count]Enter
873 scroll forward one line (or [count] lines).
874
875 [count]y, [count]Ctrl-Y, [count]k, [count]Ctrl-K, [count]Ctrl-P
876 scroll backward one line (or [count] lines).
877
878 [count]f, [count]Ctrl-F, [count]Ctrl-V, [count]Space
879 scroll forward one window (or [count] lines).
880
881 [count]b, [count]Ctrl-B, [count]Alt-V
882 scroll backward one window (or [count] lines).
883
884 [count]z
885 scroll forward one window (and set window to [count]).
886
887 [count]w
888 scroll backward one window (and set window to [count]).
889
890 [count]Alt-Space
891 scroll forward one window, but don't stop at end-of-file.
892
893 [count]d, [count]Ctrl-D
894 scroll forward one half-window (and set half-window to [count]).
895
896 [count]u, [count]Ctrl-U
897 scroll backward one half-window (and set half-window to
898 [count]).
899
900 r, Ctrl-R, Ctrl-L
901 repaint screen.
902
903 R reload view preserving scroll position.
904
905 F toggle automatic forwarding. Roughly equivalent to periodic
906 file reload and scrolling to the bottom. The behaviour is simi‐
907 lar to `tail -F` or F key in less.
908
909 a switch to the next viewer. Does nothing for preview constructed
910 via %q macro.
911
912 A switch to the previous viewer. Does nothing for preview con‐
913 structed via %q macro.
914
915 i toggle raw mode (ignoring of defined viewers). Does nothing for
916 preview constructed via %q macro.
917
918 [count]/pattern
919 search forward for ([count]‐th) matching line.
920
921 [count]?pattern
922 search backward for ([count]‐th) matching line.
923
924 [count]n
925 repeat previous search (for [count]‐th occurrence).
926
927 [count]N
928 repeat previous search in reverse direction (for [count]‐th oc‐
929 currence).
930
931 [count]g, [count]<, [count]Alt-<
932 scroll to the first line of the file (or line [count]).
933
934 [count]G, [count]>, [count]Alt->
935 scroll to the last line of the file (or line [count]).
936
937 [count]p, [count]%
938 scroll to the beginning of the file (or N percent into file).
939
940 v invoke an editor to edit the current file being viewed. The
941 command for editing is taken from the 'vicmd' or 'vixcmd' option
942 value and extended with middle line number prepended by a plus
943 sign and name of the current file.
944
945 All "Ctrl-W x" keys work the same was as in Normal mode. Active mode
946 is automatically changed on navigating among windows. When less-like
947 mode activated on file preview is left using one by "Ctrl-W x" keys,
948 its state is stored until another file is displayed using preview (it's
949 possible to leave the mode, hide preview pane, do something else, then
950 get back to the file and show preview pane again with previously stored
951 state in it).
952
954 These keys are available in all submodes of the command line mode: com‐
955 mand, search, prompt and filtering.
956
957 Down, Up, Left, Right, Home, End and Delete are extended keys and they
958 are not available if vifm is compiled with --disable-extended-keys op‐
959 tion.
960
961 Esc, Ctrl-C
962 leave command line mode, cancels input. Cancelled input is
963 saved into appropriate history and can be recalled later.
964
965 Ctrl-M, Enter
966 execute command and leave command line mode.
967
968 Ctrl-I, Tab
969 complete command or its argument.
970
971 Shift-Tab
972 complete in reverse order.
973
974 Ctrl-_ stop completion and return original input.
975
976 Ctrl-B, Left
977 move cursor to the left.
978
979 Ctrl-F, Right
980 move cursor to the right.
981
982 Ctrl-A, Home
983 go to line beginning.
984
985 Ctrl-E, End
986 go to line end.
987
988 Alt-B go to the beginning of previous word.
989
990 Alt-F go to the end of next word.
991
992 Ctrl-U remove characters from cursor position till the beginning of
993 line.
994
995 Ctrl-K remove characters from cursor position till the end of line.
996
997 Ctrl-H, Backspace
998 remove character before the cursor.
999
1000 Ctrl-D, Delete
1001 remove character under the cursor.
1002
1003 Ctrl-W remove characters from cursor position till the beginning of
1004 previous word.
1005
1006 Alt-D remove characters from cursor position till the beginning of
1007 next word.
1008
1009 Ctrl-T swap the order of current and previous character and move cursor
1010 forward or, if cursor past the end of line, swap the order of
1011 two last characters in the line.
1012
1013 Alt-. insert last part of previous command to current cursor position.
1014 Each next call will insert last part of older command.
1015
1016 Ctrl-G edit command-line content in external editor. See "Command line
1017 editing" section for details.
1018
1019 Ctrl-N recall more recent command-line from history.
1020
1021 Ctrl-P recall older command-line from history.
1022
1023 Up recall more recent command-line from history, that begins as the
1024 current command-line.
1025
1026 Down recall older command-line from history, that begins as the cur‐
1027 rent command-line.
1028
1029 Ctrl-] trigger abbreviation expansion.
1030
1031 Ctrl-R =
1032 insert result of evaluating an expression. Expression is to be
1033 entered via nested command-line prompt (where this key does
1034 nothing). Expansion of an erroneous expression is empty.
1035
1037 The shortcuts listed below insert specified values into current cursor
1038 position. Last key of every shortcut references value that it inserts:
1039 - c - [c]urrent file
1040 - d - [d]irectory path
1041 - e - [e]xtension of a file name
1042 - r - [r]oot part of a file name
1043 - t - [t]ail part of directory path
1044
1045 - a - [a]utomatic filter
1046 - m - [m]anual filter
1047 - = - local filter, which is bound to "=" in normal mode
1048
1049 Values related to filelist in current pane are available through Ctrl-X
1050 prefix, while values from the other pane have doubled Ctrl-X key as
1051 their prefix (doubled Ctrl-X is presumably easier to type than upper‐
1052 case letters; it's still easy to remap the keys to correspond to names
1053 of similar macros).
1054
1055 Ctrl-X c
1056 name of the current file of the active pane.
1057
1058 Ctrl-X d
1059 path to the current directory of the active pane.
1060
1061 Ctrl-X e
1062 extension of the current file of the active pane.
1063
1064 Ctrl-X r
1065 name root of current file of the active pane.
1066
1067 Ctrl-X t
1068 the last component of path to the current directory of the ac‐
1069 tive pane.
1070
1071 Ctrl-X Ctrl-X c
1072 name of the current file of the inactive pane.
1073
1074 Ctrl-X Ctrl-X d
1075 path to the current directory of the inactive pane.
1076
1077 Ctrl-X Ctrl-X e
1078 extension of the current file of the inactive pane.
1079
1080 Ctrl-X Ctrl-X r
1081 name root of current file of the inactive pane.
1082
1083 Ctrl-X Ctrl-X t
1084 the last component of path to the current directory of the inac‐
1085 tive pane.
1086
1087
1088 Ctrl-X a
1089 value of implicit permanent filter (old name "automatic") of the
1090 active pane.
1091
1092 Ctrl-X m
1093 value of explicit permanent filter (old name "manual") of the
1094 active pane.
1095
1096 Ctrl-X =
1097 value of local filter of the active pane.
1098
1099
1100 Ctrl-X /
1101 last pattern from search history.
1102
1104 vifm provides a facility to edit several kinds of data, that is usually
1105 edited in command-line mode, in external editor (using command speci‐
1106 fied by 'vicmd' or 'vixcmd' option). This has at least two advantages
1107 over built-in command-line mode:
1108 - one can use full power of Vim to edit text;
1109 - finding and reusing history entries becomes possible.
1110
1111 The facility is supported by four input submodes of the command-line:
1112 - command;
1113 - forward search;
1114 - backward search;
1115 - file rename (see description of cw and cW normal mode keys).
1116
1117 Editing command-line using external editor is activated by the Ctrl-G
1118 shortcut. It's also possible to do almost the same from Normal and
1119 Visual modes using q:, q/ and q? commands.
1120
1121 Temporary file created for the purpose of editing the line has the fol‐
1122 lowing structure:
1123
1124 1. First line, which is either empty or contains text already entered
1125 in command-line.
1126
1127 2. 2nd and all other lines with history items starting with the most
1128 recent one. Altering this lines in any way won't change history
1129 items stored by vifm.
1130
1131 After editing application is finished the first line of the file is
1132 taken as the result of operation, when the application returns zero
1133 exit code. If the application returns an error (see :cquit command in
1134 Vim), all the edits made to the file are ignored, but the initial value
1135 of the first line is saved in appropriate history.
1136
1138 This is the mode that appears when status bar content is so big that it
1139 doesn't fit on the screen. One can identify the mode by "-- More --"
1140 message at the bottom.
1141
1142 The following keys are handled in this mode:
1143
1144
1145 Enter, Ctrl-J, j or Down
1146 scroll one line down.
1147
1148 Backspace, k or Up
1149 scroll one line up.
1150
1151
1152 d scroll one page (half of a screen) down.
1153
1154 u scroll one page (half of a screen) up.
1155
1156
1157 Space, f or PageDown
1158 scroll down a screen.
1159
1160 b or PageUp
1161 scroll up a screen.
1162
1163
1164 G scroll to the bottom.
1165
1166 g scroll to the top.
1167
1168
1169 q, Escape or Ctrl-C
1170 quit the mode.
1171
1172 : switch to command-line mode.
1173
1175 Commands are executed with :command_name<Enter>
1176
1177 Commented out lines should start with the double quote symbol ("),
1178 which may be preceded by whitespace characters intermixed with colons.
1179 Inline comments can be added at the end of the line after double quote
1180 symbol, only last line of a multi-line command can contain such com‐
1181 ment. Not all commands support inline comments as their syntax con‐
1182 flicts with names of registers and fields where double quotes are al‐
1183 lowed.
1184
1185 Most of the commands have two forms: complete and the short one. Exam‐
1186 ple:
1187
1188 :noh[lsearch]
1189
1190 This means the complete command is nohlsearch, and the short one is
1191 noh.
1192
1193 Most of command-line commands completely reset selection in the current
1194 view. However, there are several exceptions:
1195
1196 - `:invert s` most likely leaves some files selected;
1197
1198 - :view command;
1199
1200 - :normal command (when it doesn't leave command-line mode);
1201
1202 - :if and :else commands don't affect selection on successful execu‐
1203 tion.
1204
1205 '|' can be used to separate commands, so you can give multiple commands
1206 in one line. If you want to use '|' in an argument, precede it with
1207 '\'.
1208
1209 These commands see '|' as part of their arguments even when it's es‐
1210 caped:
1211
1212 :[range]!
1213 :autocmd
1214 :cabbrev
1215 :cmap
1216 :cnoreabbrev
1217 :cnoremap
1218 :command
1219 :dmap
1220 :dnoremap
1221 :filetype
1222 :fileviewer
1223 :filextype
1224 :keepsel
1225 :map
1226 :mmap
1227 :mnoremap
1228 :nmap
1229 :nnoremap
1230 :noremap
1231 :normal
1232 :qmap
1233 :qnoremap
1234 :vmap
1235 :vnoremap
1236 :wincmd
1237 :windo
1238 :winrun
1239
1240 To be able to use another command after one of these, wrap it with the
1241 :execute command. An example:
1242
1243 if filetype('.') == 'reg' | execute '!!echo regular file' | endif
1244
1245 :[count]
1246
1247 :number
1248 move to the file number.
1249 :12 would move to the 12th file in the list.
1250 :0 move to the top of the list.
1251 :$ move to the bottom of the list.
1252
1253 :[count]command
1254 The only builtin :[count]command are :[count]d[elete] and
1255 :[count]y[ank].
1256
1257 :d3 would delete three files starting at the current file position
1258 moving down.
1259
1260 :3d would delete one file at the third line in the list.
1261
1262 :command [args]
1263
1264 :[range]!program
1265 execute command via shell. Accepts macros.
1266
1267 :[range]!command &
1268
1269 same as above, but the command is run in the background using vifm's
1270 means.
1271
1272 Programs that write to stderr create error dialogs showing errors of
1273 the command.
1274
1275 Note the space before ampersand symbol, if you omit it, command will be
1276 run in the background using job control of your shell.
1277
1278 Accepts macros.
1279
1280 :!!
1281
1282 :[range]!!command
1283 same as :!, but pauses before returning.
1284
1285 :!! repeat the last command.
1286
1287 :alink
1288
1289 :[range]alink[!?]
1290 create absolute symbolic links to files in directory of inactive
1291 view. With "?" prompts for destination file names in an edi‐
1292 tor. "!" forces overwrite.
1293
1294 :[range]alink[!] path
1295 create absolute symbolic links to files in directory specified
1296 by the path (absolute or relative to directory of inactive
1297 view).
1298
1299 :[range]alink[!] name1 name2...
1300 create absolute symbolic links of files in directory of other
1301 view giving each next link a corresponding name from the argu‐
1302 ment list.
1303
1304 :[range]alink[!?] -skip ...
1305 see "-skip parameter" section below.
1306
1307 :apropos
1308
1309 :apropos keyword...
1310 create a menu of items returned by the apropos command. Select‐
1311 ing an item in the menu opens corresponding man page. By de‐
1312 fault the command relies on the external "apropos" utility,
1313 which can be customized by altering value of the 'aproposprg'
1314 option. See "Menus and dialogs" section for controls.
1315
1316 :autocmd
1317
1318 :au[tocmd] {event} {pat} {cmd}
1319 register autocommand for the {event}, which can be:
1320 - DirEnter - triggered after directory is changed
1321 Event name is case insensitive.
1322
1323 {pat} is a comma-separated list of modified globs patterns,
1324 which can contain tilde or environment variables. All paths use
1325 slash ('/') as directory separator. The pattern can start with
1326 a '!', which negates it. Patterns that do not contain slashes
1327 are matched against the last item of the path only (e.g. "dir"
1328 in "/path/dir"). Literal comma can be entered by doubling it.
1329 Two modifications to globs matching are as follows:
1330 - * - never matches a slash (i.e., can signify single direc‐
1331 tory level)
1332 - ** - matches any character (i.e., can match path of arbi‐
1333 trary depth)
1334
1335 {cmd} is a :command or several of them separated with '|'.
1336
1337 Examples of patterns:
1338 - conf.d - matches conf.d directory anywhere
1339 - *.d - matches directories ending with ".d" anywhere
1340 - **.git - matches something.git, but not .git anywhere
1341 - **/.git/** - matches /path/.git/objects, but not /path/.git
1342 - **/.git/**/ - matches /path/.git/ only (because of trailing
1343 slash)
1344 - /etc/* - matches /etc/conf.d/, /etc/X11, but not
1345 /etc/X11/fs
1346 - /etc/**/*.d - matches /etc/conf.d, /etc/X11/conf.d, etc.
1347 - /etc/**/* - matches /etc/ itself and any file below it
1348 - /etc/**/** - matches /etc/ itself and any file below it
1349
1350 :au[tocmd] [{event}] [{pat}]
1351 list those autocommands that match given event-pattern combina‐
1352 tion.
1353 {event} and {pat} can be omitted to list all autocommands. To
1354 list any autocommands for specific pattern one can use * place‐
1355 holder in place of {event}.
1356
1357 :au[tocmd]! [{event}] [{pat}]
1358 remove autocommands that match given event-pattern combination.
1359 Syntax is the same as for listing above.
1360
1361 :apropos
1362 repeat last :apropos command.
1363
1364 :bmark
1365
1366 :bmark tag1 [tag2 [tag3...]]
1367 bookmark current directory with specified tags.
1368
1369 :bmark! path tag1 [tag2 [tag3...]]
1370 same as :bmark, but allows bookmarking specific path instead of
1371 current directory. This is for use in vifmrc and for bookmark‐
1372 ing files.
1373
1374 Path can contain macros that expand to single path (%c, %C, %d,
1375 %D) or those that can expand to multiple paths, but contain only
1376 one (%f, %F, %rx). The latter is done for convenience on using
1377 the command interactively. Complex macros that include spaces
1378 (e.g. "%c:gs/ /_") should be escaped.
1379
1380 :bmarks
1381
1382 :bmarks
1383 display all bookmarks in a menu.
1384
1385 :bmarks [tag1 [tag2...]]
1386 display menu of bookmarks that include all of the specified
1387 tags. See "Menus and dialogs" section for controls.
1388
1389 :bmgo
1390
1391 :bmgo [tag1 [tag2...]]
1392 when there are more than one match acts exactly like :bmarks,
1393 otherwise navigates to single match immediately (and fails if
1394 there is no match).
1395
1396 :cabbrev
1397
1398 :ca[bbrev]
1399 display menu of command-line mode abbreviations. See "Menus and
1400 dialogs" section for controls.
1401
1402 :ca[bbrev] lhs-prefix
1403 display command-line mode abbreviations which left-hand side
1404 starts with specified prefix.
1405
1406 :ca[bbrev] lhs rhs
1407 register new or overwrites existing abbreviation for command-
1408 line mode. rhs can contain spaces and any special sequences ac‐
1409 cepted in rhs of mappings (see "Mappings" section below). Ab‐
1410 breviations are expanded non-recursively.
1411
1412 :cnoreabbrev
1413
1414 :cnorea[bbrev]
1415 display menu of command-line mode abbreviations. See "Menus and
1416 dialogs" section for controls.
1417
1418 :cnorea[bbrev] lhs-prefix
1419 display command-line mode abbreviations which left-hand side
1420 starts with specified prefix.
1421
1422 :cnorea[bbrev] lhs rhs
1423 same as :cabbrev, but mappings in rhs are ignored during expan‐
1424 sion.
1425
1426 :cd
1427
1428 :cd or :cd ~ or :cd $HOME
1429 change to home directory.
1430
1431 :cd - go to the last visited directory.
1432
1433 :cd ~/dir
1434 change directory to ~/dir.
1435
1436 :cd /curr/dir /other/dir
1437 change directory of the current pane to /curr/dir and directory
1438 of the other pane to /other/dir. Relative paths are assumed to
1439 be relative to directory of current view. Command won't fail if
1440 one of directories is invalid. All forms of the command accept
1441 macros.
1442
1443 :cd! /dir
1444 same as :cd /dir /dir.
1445
1446 :cds
1447
1448 :cds[!] pattern string
1449 navigate to path obtained by substituting first match in current
1450 path. Arguments can include slashes, but starting first argu‐
1451 ment with a separator will activate below form of the command.
1452 Specifying "!" changes directory of both panes.
1453
1454 Available flags:
1455
1456 - i - ignore case (the 'ignorecase' and 'smartcase' options are not
1457 used)
1458
1459 - I - don't ignore case (the 'ignorecase' and 'smartcase' options are
1460 not used)
1461
1462 :cds[!]/pattern/string/[flags]
1463 same as above, but with :substitute-like syntax. Other punctua‐
1464 tion characters can be used as separators.
1465
1466 :change
1467
1468 :c[hange]
1469 show a dialog to alter properties of files.
1470
1471 :chmod
1472
1473 :[range]chmod
1474 display file attributes (permission on *nix and properties on
1475 Windows) change dialog.
1476
1477 :[range]chmod[!] arg...
1478 only for *nix
1479 change permissions for files. See `man 1 chmod` for arg format.
1480 "!" means set permissions recursively.
1481
1482 :chown
1483
1484 :[range]chown
1485 only for *nix
1486 same as co key in normal mode.
1487
1488 :[range]chown [user][:][group]
1489 only for *nix
1490 change owner and/or group of files. Operates on directories re‐
1491 cursively.
1492
1493 :clone
1494
1495 :[range]clone[!?]
1496 clones files in current directory. With "?" vifm will open vi
1497 to edit file names. "!" forces overwrite. Macros are expanded.
1498
1499 :[range]clone[!] path
1500 clones files to directory specified with the path (absolute or
1501 relative to current directory). "!" forces overwrite. Macros
1502 are expanded.
1503
1504 :[range]clone[!] name1 name2...
1505 clones files in current directory giving each next clone a cor‐
1506 responding name from the argument list. "!" forces overwrite.
1507 Macros are expanded.
1508
1509 :colorscheme
1510
1511 :colo[rscheme]?
1512 print current color scheme name on the status bar.
1513
1514 :colo[rscheme]
1515 display a menu with a list of available color schemes. You can
1516 choose primary color scheme here. It is used for view if no di‐
1517 rectory specific colorscheme fits current path. It's also used
1518 to set border color (except view titles) and colors in menus and
1519 dialogs. See "Menus and dialogs" section for controls.
1520
1521 :colo[rscheme] color_scheme_name
1522 change primary color scheme to color_scheme_name. In case of
1523 errors (e.g. some colors are not supported by terminal) either
1524 nothing is changed or color scheme is reset to builtin colors to
1525 ensure that TUI is left in a usable state.
1526
1527 :colo[rscheme] color_scheme_name directory
1528 associate directory with the color scheme. The directory argu‐
1529 ment can be either absolute or relative path when :colorscheme
1530 command is executed from command line, but mandatory should be
1531 an absolute path when the command is executed in scripts loaded
1532 at startup (until vifm is completely loaded).
1533
1534 :colo[rscheme] color_scheme_name color_scheme_name...
1535 loads the first color scheme in the order given that exists and
1536 is supported by the terminal. If none matches, current one re‐
1537 mains unchanged. For example:
1538
1539 " use a separate color scheme for panes which are inside FUSE mounts
1540 execute 'colorscheme in-fuse' &fusehome
1541
1542 :comclear
1543
1544 :comc[lear]
1545 remove all user defined commands.
1546
1547 :command
1548
1549 :com[mand]
1550 display a menu of user commands. See "Menus and dialogs" sec‐
1551 tion for controls.
1552
1553 :com[mand] prefix
1554 display user defined commands that start with the prefix.
1555
1556 :com[mand] name action[ &]
1557 set or redefine a user command.
1558 Use :com[mand]! to overwrite a previously set command of the
1559 same name. Builtin commands can't be redefined.
1560 User commands must start with an upper or lower case letter.
1561 Command name can't contain special symbols except for a single
1562 trailing '?' or '!'. Numbers are allowed provided that they
1563 don't cause parsing ambiguity (no command name prefix that pre‐
1564 cedes a digit can match an existing command unless it has a
1565 digit in the same place), for example:
1566 " good
1567 :command mp3 command
1568 " good
1569 :command mp4 command
1570 :command mp3! command
1571 :command mp4? command
1572 " bad
1573 :command mp command
1574 :command mp44 command
1575 " good
1576 :command mp4c command
1577
1578 User commands are run in a shell by default (see below for syn‐
1579 tax of other options). To run a command in the background you
1580 must mark it as a background command by adding " &" after the
1581 command's action (e.g., `:com rm rm %f &`).
1582 User commands of all kinds have macros expanded in them. See
1583 "Command macros" section for more information.
1584
1585 :com[mand] name /pattern
1586 set search pattern.
1587
1588 :com[mand] name =pattern
1589 set local filter value.
1590
1591 :com[mand] name filter{:filter args}
1592 set file name filter (see :filter command description). For ex‐
1593 ample:
1594
1595 " display only audio files
1596 :command onlyaudio filter/.+.\(mp3|wav|mp3|flac|ogg|m4a|wma|ape\)$/i
1597 " display everything except audio files
1598 :command noaudio filter!/.+.\(mp3|wav|mp3|flac|ogg|m4a|wma|ape\)$/i
1599
1600 :com[mand] name :commands
1601 set kind of an alias for internal commands (like in a shell).
1602 Passes range given to alias to an aliased command, so running
1603 :%cp after
1604 :command cp :copy %a
1605 equals
1606 :%copy
1607
1608 :compare
1609
1610 :compare [byname | bysize | bycontents | listall | listunique |
1611 listdups | ofboth | ofone | groupids | grouppaths | skipempty]...
1612 compare files in one or two views according to the arguments.
1613 The default is "bycontents listall ofboth grouppaths". See
1614 "Compare views" section below for details. Diff structure is
1615 incompatible with alternative representations, so values of
1616 'lsview' and 'millerview' options are ignored.
1617
1618 :copen
1619
1620 :cope[n]
1621 reopens the last visible menu that has navigation to files by
1622 default, if any.
1623
1624 :copy
1625
1626 :[range]co[py][!?][ &]
1627 copy files to directory of other view. With "?" prompts for
1628 destination file names in an editor. "!" forces overwrite.
1629
1630 :[range]co[py][!] path[ &]
1631 copy files to directory specified with the path (absolute or
1632 relative to directory of other view). "!" forces overwrite.
1633
1634 :[range]co[py][!] name1 name2...[ &]
1635 copy files to directory of other view giving each next file a
1636 corresponding name from the argument list. "!" forces over‐
1637 write.
1638
1639 :[range]co[py][!?] -skip ...[ &]
1640 see "-skip parameter" section below.
1641
1642 :cquit
1643
1644 :cq[uit][!]
1645 same as :quit, but also aborts directory choosing via
1646 --choose-dir (empties output file) and returns non-zero exit
1647 code.
1648
1649 :cunabbrev
1650
1651 :cuna[bbrev] lhs
1652 unregister command-line mode abbreviation by its lhs.
1653
1654 :cuna[bbrev] rhs
1655 unregister command-line mode abbreviation by its rhs, so that
1656 abbreviation could be removed even after expansion.
1657
1658 :delbmarks
1659
1660 :delbmarks
1661 remove bookmarks from current directory.
1662
1663 :delbmarks tag1 [tag2 [tag3...]]
1664 remove set of bookmarks that include all of the specified tags.
1665
1666 :delbmarks!
1667 remove all bookmarks.
1668
1669 :delbmarks! path1 [path2 [path3...]]
1670 remove bookmarks of listed paths.
1671
1672 :delcommand
1673
1674 :delc[ommand] user_command
1675 remove user defined command named user_command.
1676
1677 :delete
1678
1679 :[range]d[elete][!][ &]
1680 delete selected file or files. "!" means complete removal
1681 (omitting trash).
1682
1683 :[range]d[elete][!] [reg] [count][ &]
1684 delete selected or [count] files to the reg register. "!" means
1685 complete removal (omitting trash).
1686
1687 :delmarks
1688
1689 :delm[arks]!
1690 delete all marks.
1691
1692 :delm[arks] marks ...
1693 delete specified marks, each argument is treated as a set of
1694 marks.
1695
1696 :delsession
1697
1698 :delsession
1699 delete specified session if it was stored previously. Deleting
1700 current session doesn't detach it.
1701
1702 :display
1703
1704 :di[splay]
1705 display menu with registers content.
1706
1707 :di[splay] list ...
1708 display the contents of the numbered and named registers that
1709 are mentioned in list (for example "az to display "", "a and "z
1710 content).
1711
1712 :dirs
1713
1714 :dirs display directory stack in a menu. See "Menus and dialogs" sec‐
1715 tion for controls.
1716
1717 :echo
1718
1719 :ec[ho] [<expr>...]
1720 evaluate each argument as an expression and output them sepa‐
1721 rated with a space. See help on :let command for a definition
1722 of <expr>.
1723
1724 :edit
1725
1726 :[range]e[dit] [file...]
1727 open selected or passed file(s) in editor. Macros and environ‐
1728 ment variables are expanded.
1729
1730 :else
1731
1732 :el[se]
1733 execute commands until next matching :endif if all other condi‐
1734 tions didn't match. See also help on :if and :endif commands.
1735
1736 :elseif
1737
1738 :elsei[f] {expr1}
1739 execute commands until next matching :elseif, :else or :endif if
1740 conditions of previous :if and :elseif branches were evaluated
1741 to zero. See also help on :if and :endif commands.
1742
1743 :empty
1744
1745 :empty permanently remove files from all existing non-empty trash di‐
1746 rectories (see "Trash directory" section below). Trash directo‐
1747 ries which are specified via %r and/or %u also get deleted com‐
1748 pletely. Also remove all operations from undolist that have no
1749 sense after :empty and remove all records about files located
1750 inside directories from all registers. Removal is performed as
1751 background task with undetermined amount of work and can be
1752 checked via :jobs menu.
1753
1754 :endif
1755
1756 :en[dif]
1757 end conditional block. See also help on :if and :else commands.
1758
1759 :execute
1760
1761 :exe[cute] [<expr>...]
1762 evaluate each argument as an expression and join results sepa‐
1763 rated by a space to get a single string which is then executed
1764 as a command-line command. See help on :let command for a defi‐
1765 nition of <expr>.
1766
1767 :exit
1768
1769 :exi[t][!]
1770 same as :quit.
1771
1772 :file
1773
1774 :f[ile][ &]
1775 display menu of programs set for the file type of the current
1776 file. " &" forces running associated program in background.
1777 See "Menus and dialogs" section for controls.
1778
1779 :f[ile] arg[ &]
1780 run associated command that begins with the arg skipping opening
1781 menu. " &" forces running associated program in background.
1782
1783 :filetype
1784
1785 :filet[ype] pattern-list [{descr}]def_prog[ &],[{descr}]prog2[ &],...
1786 associate given program list to each of the patterns. Associ‐
1787 ated program (command) is used by handlers of l and Enter keys
1788 (and also in the :file menu). If you need to insert comma into
1789 command just double it (",,"). Space followed by an ampersand
1790 as two last characters of a command means running of the command
1791 in the background. Optional description can be given to each
1792 command to ease understanding of what command will do in the
1793 :file menu. Vifm will try the rest of the programs for an asso‐
1794 ciation when the default isn't found. When program entry
1795 doesn't contain any of vifm macros, name of current file is ap‐
1796 pended as if program entry ended with %c macro on *nix and %"c
1797 on Windows. On Windows path to executables containing spaces
1798 can (and should be for correct work with such paths) be double
1799 quoted. See "Patterns" section below for pattern definition and
1800 "Selection" section for how selection is handled. See also "Au‐
1801 tomatic FUSE mounts" section below. Example for zip archives
1802 and several actions:
1803
1804 filetype *.zip,*.jar,*.war,*.ear
1805 \ {Mount with fuse-zip}
1806 \ FUSE_MOUNT|fuse-zip %SOURCE_FILE %DESTINATION_DIR,
1807 \ {View contents}
1808 \ zip -sf %c | less,
1809 \ {Extract here}
1810 \ tar -xf %c,
1811
1812 Note that on OS X when `open` is used to call an app, vifm is
1813 unable to check whether that app is actually available. So if
1814 automatic skipping of programs that aren't there is desirable,
1815 `open` should be replaced with an actual command.
1816
1817 :filet[ype] filename
1818 list (in menu mode) currently registered patterns that match
1819 specified file name. Same as ":filextype filename".
1820
1821 :filextype
1822
1823 :filex[type] pattern-list [{ description }] def_program,program2,...
1824 same as :filetype, but this command is ignored if not running in
1825 X. In X :filextype is equal to :filetype. See "Patterns" sec‐
1826 tion below for pattern definition and "Selection" section for
1827 how selection is handled. See also "Automatic FUSE mounts" sec‐
1828 tion below.
1829
1830 For example, consider the following settings (the order might
1831 seem strange, but it's for the demonstration purpose):
1832
1833 filetype *.html,*.htm
1834 \ {View in lynx}
1835 \ lynx
1836 filextype *.html,*.htm
1837 \ {Open with dwb}
1838 \ dwb %f %i &,
1839 filetype *.html,*.htm
1840 \ {View in links}
1841 \ links
1842 filextype *.html,*.htm
1843 \ {Open with firefox}
1844 \ firefox %f &,
1845 \ {Open with uzbl}
1846 \ uzbl-browser %f %i &,
1847
1848 If you're using vifm inside a terminal emulator that is running
1849 in graphical environment (when X is used on *nix; always on Win‐
1850 dows), vifm attempts to run application in this order:
1851
1852 1. lynx
1853 2. dwb
1854 3. links
1855 4. firefox
1856 5. uzbl
1857
1858 If there is no graphical environment (checked by presence of
1859 non-empty $DISPLAY or $WAYLAND_DISPLAY environment variable on
1860 *nix; never happens on Windows), the list will look like:
1861
1862 1. lynx
1863 2. links
1864
1865 Just as if all :filextype commands were not there.
1866
1867 The purpose of such differentiation is to allow comfortable use
1868 of vifm with same settings in desktop environment/through remote
1869 connection (SSH)/in native console.
1870
1871 Note that on OS X $DISPLAY isn't defined unless you define it,
1872 so :filextype should be used only if you set $DISPLAY in some
1873 way.
1874
1875 :filext[ype] filename
1876 list (in menu mode) currently registered patterns that match
1877 specified file name. Same as ":filetype filename".
1878
1879 :fileviewer
1880
1881 :filev[iewer] pattern-list command1,command2,...
1882 register specified list of commands as viewers for each of the
1883 patterns. Viewer is a command which output is captured and dis‐
1884 played in one of the panes of vifm after pressing "e" or running
1885 :view command. When the command doesn't contain any of vifm
1886 macros, name of current file is appended as if command ended
1887 with %c macro. Comma escaping and missing commands processing
1888 rules as for :filetype apply to this command. See "Patterns"
1889 section below for pattern definition. Supports Lua handlers.
1890
1891 Example for zip archives:
1892
1893 fileviewer *.zip,*.jar,*.war,*.ear zip -sf %c, echo "No zip to preview:"
1894
1895 :filev[iewer] filename
1896 list (in menu mode) currently registered patterns that match
1897 specified filename.
1898
1899 :filter
1900
1901 :filter[!] {pattern}
1902 filter files matching the pattern out of directory listings.
1903 '!' controls state of filter inversion after updating filter
1904 value (see also 'cpoptions' description). Filter is matched
1905 case sensitively on *nix and case insensitively on Windows. See
1906 "File Filters" and "Patterns" sections.
1907
1908 Example:
1909
1910 " filter all files ending in .o from the filelist.
1911 :filter /.o$/
1912
1913
1914 :filter[!] {empty-pattern}
1915 same as above, but use last search pattern as pattern value.
1916
1917 Example:
1918
1919 :filter //I
1920
1921
1922 :filter
1923 reset filter (set it to an empty string) and show all files.
1924
1925 :filter!
1926 same as :invert.
1927
1928 :filter?
1929 show information on local, name and auto filters.
1930
1931 :find
1932
1933 :[range]fin[d] pattern
1934 display results of find command in the menu. Searches among se‐
1935 lected files if any. Accepts macros. By default the command
1936 relies on the external "find" utility, which can be customized
1937 by altering value of the 'findprg' option.
1938
1939 :[range]fin[d] -opt...
1940 same as :find above, but user defines all find arguments.
1941 Searches among selected files if any.
1942
1943 :[range]fin[d] path -opt...
1944 same as :find above, but user defines all find arguments. Ig‐
1945 nores selection and range.
1946
1947 :[range]fin[d]
1948 repeat last :find command.
1949
1950 :finish
1951
1952 :fini[sh]
1953 stop sourcing a script. Can only be used in a vifm script file.
1954 This is a quick way to skip the rest of the file.
1955
1956 :goto
1957
1958 :go[to]
1959 change directory if necessary and put specified path under the
1960 cursor. The path should be existing non-root path. Macros and
1961 environment variables are expanded.
1962
1963 :grep
1964
1965 :[range]gr[ep][!] pattern
1966 will show results of grep command in the menu. Add "!" to re‐
1967 quest inversion of search (look for lines that do not match pat‐
1968 tern). Searches among selected files if any and no range given.
1969 Ignores binary files by default. By default the command relies
1970 on the external "grep" utility, which can be customized by al‐
1971 tering value of the 'grepprg' option.
1972
1973 :[range]gr[ep][!] -opt...
1974 same as :grep above, but user defines all grep arguments, which
1975 are not escaped. Searches among selected files if any.
1976
1977 :[range]gr[ep][!]
1978 repeat last :grep command. "!" of this command inverts "!" in
1979 repeated command.
1980
1981 :help
1982
1983 :h[elp]
1984 show the help file.
1985
1986 :h[elp] argument
1987 is the same as using ':h argument' in vim. Use vifm-<something>
1988 to get help on vifm (tab completion works). This form of the
1989 command doesn't work when 'vimhelp' option is off.
1990
1991 :hideui
1992
1993 :hideui
1994 hide interface to show previous commands' output.
1995
1996 :highlight
1997
1998 :hi[ghlight]
1999 display information about all highlight groups active at the mo‐
2000 ment.
2001
2002 :hi[ghlight] clear
2003 reset all highlighting to builtin defaults and removed all file‐
2004 name-specific rules.
2005
2006 :hi[ghlight] clear ( {pat1,pat2,...} | /regexp/ )
2007 remove specified rule.
2008
2009 :hi[ghlight] ( group-name | {pat1,pat2,...} | /regexp/ )
2010 display information on given highlight group or file name pat‐
2011 tern of color scheme used in the active view.
2012
2013 :hi[ghlight] ( group-name | {pat1,pat2,...} | /regexp/[iI] )
2014 cterm=style | ctermfg=color | ctermbg=color | gui=style | guifg=color |
2015 guibg=color
2016 set style (cterm, gui), foreground (ctermfg, guifg) and/or back‐
2017 ground (ctermbg, guibg) parameters of highlight group or file
2018 name pattern for color scheme used in the active view.
2019
2020 All style values as well as color names are case insensitive.
2021
2022 Available style values (some of them can be combined):
2023 - bold
2024 - underline
2025 - reverse or inverse
2026 - standout
2027 - italic (on unsupported systems becomes reverse)
2028 - combine - add attributes of current group to attributes of the par‐
2029 ent in group hierarchy (see below) instead of replacing them
2030 - none
2031
2032 Available group-name values:
2033 - Win - color of all windows (views, dialogs, menus) and default color
2034 for their content (e.g. regular files in views)
2035 - AuxWin - color of auxiliary areas of windows
2036 - OtherWin - color of inactive pane
2037 - Border - color of vertical parts of the border
2038 - TabLine - tab line color (for 'tabscope' set to "global")
2039 - TabLineSel - color of the tip of selected tab (regardless of 'tab‐
2040 scope')
2041 - TopLine - top line color of the other pane
2042 - TopLineSel - top line color of the current pane
2043 - CmdLine - the command line/status bar color
2044 - ErrorMsg - color of error messages in the status bar
2045 - StatusLine - color of the line above the status bar
2046 - JobLine - color of job line that appears above the status line
2047 - WildMenu - color of the wild menu items
2048 - SuggestBox - color of key suggestion box
2049 - CurrLine - line at cursor position in active view
2050 - OtherLine - line at cursor position in inactive view
2051 - OddLine - color of every second entry line in a pane
2052 - LineNr - line number column of views
2053 - Selected - color of selected files
2054 - Directory - color of directories
2055 - Link - color of symbolic links in the views
2056 - BrokenLink - color of broken symbolic links
2057 - HardLink - color of regular files with more than one hard link
2058 - Socket - color of sockets
2059 - Device - color of block and character devices
2060 - Executable - color of executable files
2061 - Fifo - color of fifo pipes
2062 - CmpMismatch - color of mismatched files in side-by-side comparison
2063 by path
2064 - CmpUnmatched - comparison file entry that has no pair in the other
2065 pane
2066 - CmpBlank - entry placeholder in a compare view, paired with CmpUn‐
2067 matched
2068 - User1..User9 - 9 colors which can be used via %* 'statusline' macro
2069
2070 Available colors:
2071 - -1 or default or none - default or transparent
2072 - black and lightblack
2073 - red and lightred
2074 - green and lightgreen
2075 - yellow and lightyellow
2076 - blue and lightblue
2077 - magenta and lightmagenta
2078 - cyan and lightcyan
2079 - white and lightwhite
2080 - 0-255 - corresponding colors from 256-color palette (for ctermfg and
2081 ctermbg)
2082 - #rrggbb - direct ("gui", "true", 24-bit) color in hex-notation, each
2083 of the three compontents are in the range 0x00 to 0xff (for guifg and
2084 guibg)
2085
2086 Light versions of colors are regular colors with bold attribute set au‐
2087 tomatically in terminals that have less than 16 colors. So order of
2088 arguments of :highlight command is important and it's better to put
2089 "cterm" in front of others to prevent it from overwriting attributes
2090 set by "ctermfg" or "ctermbg" arguments.
2091
2092 For convenience of color scheme authors xterm-like names for 256 color
2093 palette is also supported. The mapping is taken from
2094 http://vim.wikia.com/wiki/Xterm256_color_names_for_console_Vim
2095 Duplicated entries were altered by adding an underscore followed by nu‐
2096 merical suffix.
2097
2098 0 Black 86 Aquamarine1 172 Orange3
2099 1 Red 87 DarkSlateGray2 173 LightSalmon3_2
2100 2 Green 88 DarkRed_2 174 LightPink3
2101 3 Yellow 89 DeepPink4_2 175 Pink3
2102 4 Blue 90 DarkMagenta 176 Plum3
2103 5 Magenta 91 DarkMagenta_2 177 Violet
2104 6 Cyan 92 DarkViolet 178 Gold3_2
2105 7 White 93 Purple 179 LightGoldenrod3
2106 8 LightBlack 94 Orange4_2 180 Tan
2107 9 LightRed 95 LightPink4 181 MistyRose3
2108 10 LightGreen 96 Plum4 182 Thistle3
2109 11 LightYellow 97 MediumPurple3 183 Plum2
2110 12 LightBlue 98 MediumPurple3_2 184 Yellow3_2
2111 13 LightMagenta 99 SlateBlue1 185 Khaki3
2112 14 LightCyan 100 Yellow4 186 LightGoldenrod2
2113 15 LightWhite 101 Wheat4 187 LightYellow3
2114 16 Grey0 102 Grey53 188 Grey84
2115 17 NavyBlue 103 LightSlateGrey 189 LightSteelBlue1
2116 18 DarkBlue 104 MediumPurple 190 Yellow2
2117 19 Blue3 105 LightSlateBlue 191 DarkOliveGreen1
2118 20 Blue3_2 106 Yellow4_2 192 DarkOliveG‐
2119 reen1_2
2120 21 Blue1 107 DarkOliveGreen3 193 DarkSeaGreen1_2
2121 22 DarkGreen 108 DarkSeaGreen 194 Honeydew2
2122 23 DeepSkyBlue4 109 LightSkyBlue3 195 LightCyan1
2123 24 DeepSkyBlue4_2 110 LightSkyBlue3_2 196 Red1
2124 25 DeepSkyBlue4_3 111 SkyBlue2 197 DeepPink2
2125 26 DodgerBlue3 112 Chartreuse2_2 198 DeepPink1
2126 27 DodgerBlue2 113 DarkOliveGreen3_2 199 DeepPink1_2
2127 28 Green4 114 PaleGreen3_2 200 Magenta2_2
2128 29 SpringGreen4 115 DarkSeaGreen3 201 Magenta1
2129 30 Turquoise4 116 DarkSlateGray3 202 OrangeRed1
2130 31 DeepSkyBlue3 117 SkyBlue1 203 IndianRed1
2131 32 DeepSkyBlue3_2 118 Chartreuse1 204 IndianRed1_2
2132 33 DodgerBlue1 119 LightGreen_2 205 HotPink
2133 34 Green3 120 LightGreen_3 206 HotPink_2
2134 35 SpringGreen3 121 PaleGreen1 207 MediumOrchid1_2
2135 36 DarkCyan 122 Aquamarine1_2 208 DarkOrange
2136 37 LightSeaGreen 123 DarkSlateGray1 209 Salmon1
2137 38 DeepSkyBlue2 124 Red3 210 LightCoral
2138 39 DeepSkyBlue1 125 DeepPink4_3 211 PaleVioletRed1
2139 40 Green3_2 126 MediumVioletRed 212 Orchid2
2140 41 SpringGreen3_2 127 Magenta3 213 Orchid1
2141 42 SpringGreen2 128 DarkViolet_2 214 Orange1
2142 43 Cyan3 129 Purple_2 215 SandyBrown
2143 44 DarkTurquoise 130 DarkOrange3 216 LightSalmon1
2144 45 Turquoise2 131 IndianRed 217 LightPink1
2145 46 Green1 132 HotPink3 218 Pink1
2146 47 SpringGreen2_2 133 MediumOrchid3 219 Plum1
2147 48 SpringGreen1 134 MediumOrchid 220 Gold1
2148 49 MediumSpringGreen 135 MediumPurple2 221 LightGolden‐
2149 rod2_2
2150 50 Cyan2 136 DarkGoldenrod 222 LightGolden‐
2151 rod2_3
2152 51 Cyan1 137 LightSalmon3 223 NavajoWhite1
2153 52 DarkRed 138 RosyBrown 224 MistyRose1
2154 53 DeepPink4 139 Grey63 225 Thistle1
2155 54 Purple4 140 MediumPurple2_2 226 Yellow1
2156 55 Purple4_2 141 MediumPurple1 227 LightGoldenrod1
2157 56 Purple3 142 Gold3 228 Khaki1
2158 57 BlueViolet 143 DarkKhaki 229 Wheat1
2159 58 Orange4 144 NavajoWhite3 230 Cornsilk1
2160 59 Grey37 145 Grey69 231 Grey100
2161 60 MediumPurple4 146 LightSteelBlue3 232 Grey3
2162 61 SlateBlue3 147 LightSteelBlue 233 Grey7
2163 62 SlateBlue3_2 148 Yellow3 234 Grey11
2164 63 RoyalBlue1 149 DarkOliveGreen3_3 235 Grey15
2165 64 Chartreuse4 150 DarkSeaGreen3_2 236 Grey19
2166 65 DarkSeaGreen4 151 DarkSeaGreen2 237 Grey23
2167 66 PaleTurquoise4 152 LightCyan3 238 Grey27
2168 67 SteelBlue 153 LightSkyBlue1 239 Grey30
2169 68 SteelBlue3 154 GreenYellow 240 Grey35
2170 69 CornflowerBlue 155 DarkOliveGreen2 241 Grey39
2171 70 Chartreuse3 156 PaleGreen1_2 242 Grey42
2172 71 DarkSeaGreen4_2 157 DarkSeaGreen2_2 243 Grey46
2173 72 CadetBlue 158 DarkSeaGreen1 244 Grey50
2174 73 CadetBlue_2 159 PaleTurquoise1 245 Grey54
2175 74 SkyBlue3 160 Red3_2 246 Grey58
2176 75 SteelBlue1 161 DeepPink3 247 Grey62
2177 76 Chartreuse3_2 162 DeepPink3_2 248 Grey66
2178 77 PaleGreen3 163 Magenta3_2 249 Grey70
2179 78 SeaGreen3 164 Magenta3_3 250 Grey74
2180 79 Aquamarine3 165 Magenta2 251 Grey78
2181 80 MediumTurquoise 166 DarkOrange3_2 252 Grey82
2182 81 SteelBlue1_2 167 IndianRed_2 253 Grey85
2183 82 Chartreuse2 168 HotPink3_2 254 Grey89
2184 83 SeaGreen2 169 HotPink2 255 Grey93
2185 84 SeaGreen1 170 Orchid
2186 85 SeaGreen1_2 171 MediumOrchid1
2187
2188 There are two colors (foreground and background) and only one bold at‐
2189 tribute. Thus single bold attribute affects both colors when "reverse"
2190 attribute is used in vifm run inside terminal emulator. At the same
2191 time linux native console can handle boldness of foreground and back‐
2192 ground colors independently, but for consistency with terminal emula‐
2193 tors this is available only implicitly by using light versions of col‐
2194 ors. This behaviour might be changed in the future.
2195
2196 Although vifm supports 256 colors in a sense they are supported by UI
2197 drawing library, whether you will be able to use all of them highly de‐
2198 pends on your terminal. To set up terminal properly, make sure that
2199 $TERM in the environment you run vifm is set to name of 256-color ter‐
2200 minal (on *nixes it can also be set via X resources), e.g.
2201 xterm-256color. One can find list of available terminal names by list‐
2202 ing /usr/lib/terminfo/. Number of colors supported by terminal with
2203 current settings can be checked via "tput colors" command.
2204
2205 In order to use 24-bit colors one needs a terminal that supports them,
2206 corresponding terminfo record (probably ends in "-direct" like in
2207 "xterm-direct") and $TERM pointing to it. When vifm detects direct
2208 color support "cterm*" values are ignored for groups which have at
2209 least one of "gui*" values set, otherwise they are used after translat‐
2210 ing via a builtin palette.
2211
2212 Here is the hierarchy of highlight groups, which you need to know for
2213 using transparency:
2214 JobLine
2215 SuggestBox
2216 StatusLine
2217 WildMenu
2218 User1..User9
2219 Border
2220 CmdLine
2221 ErrorMsg
2222 Win
2223 OtherWin
2224 AuxWin
2225 OddLine
2226 File name specific highlights
2227 Directory
2228 Link
2229 BrokenLink
2230 HardLink
2231 Socket
2232 Device
2233 Fifo
2234 Executable
2235 CmpMismatch
2236 CmpUnmatched
2237 CmpBlank
2238 Selected
2239 CurrLine
2240 LineNr (in active pane)
2241 OtherLine
2242 LineNr (in inactive pane)
2243 TopLine
2244 TopLineSel
2245 TabLineSel (for pane tabs)
2246 User1..User9
2247 TabLine
2248 TabLineSel
2249 User1..User9
2250
2251 "none" means default terminal color for highlight groups at the first
2252 level of the hierarchy and transparency for all others.
2253
2254 Here file name specific highlights mean those configured via globs ({})
2255 or regular expressions (//). At most one of them is applied per file
2256 entry, namely the first that matches file name, hence order of :high‐
2257 light commands might be important in certain cases.
2258
2259 :history
2260
2261 :his[tory]
2262 display a menu with list of visited directories. See "Menus and
2263 dialogs" section for controls.
2264
2265 :his[tory] x
2266 x can be:
2267 d[ir] or . show directory history.
2268 c[md] or : show command line history.
2269 s[earch] or / show search history and search forward on l
2270 key.
2271 f[search] or / show search history and search forward on l
2272 key.
2273 b[search] or ? show search history and search backward on l
2274 key.
2275 i[nput] or @ show prompt history (e.g. on one file renam‐
2276 ing).
2277 fi[lter] or = show local filter history (see description of
2278 the "=" normal mode command).
2279 e[xprreg] show expression register history (see descrip‐
2280 tion of Ctrl+R = in command-line mode).
2281 See "Menus and dialogs" section for controls.
2282
2283 :histnext
2284
2285 :histnext
2286 same as <c-i>. The main use case for this command is to work
2287 around the common pain point of <tab> and <c-i> being the same
2288 ASCII character: one could alter the terminal emulator settings
2289 to emit, for example, the `F1` keycode when Ctrl-I is pressed,
2290 then `:noremap <f1> :histnext<cr>` in vifm, add "t" flag to the
2291 'cpoptions', and thus have both <c-i> and <tab> working as ex‐
2292 pected.
2293
2294 :histprev
2295
2296 :histprev
2297 same as <c-o>.
2298
2299 :if
2300
2301 :if {expr1}
2302 start conditional block. Commands are executed until next
2303 matching :elseif, :else or :endif command if {expr1} evaluates
2304 to non-zero, otherwise they are ignored. See also help on :else
2305 and :endif commands.
2306
2307 Example:
2308
2309 if $TERM == 'screen.linux'
2310 highlight CurrLine ctermfg=lightwhite ctermbg=lightblack
2311 elseif $TERM == 'tmux'
2312 highlight CurrLine cterm=reverse ctermfg=black ctermbg=white
2313 else
2314 highlight CurrLine cterm=bold,reverse ctermfg=black ctermbg=white
2315 endif
2316
2317 :invert
2318
2319 :invert [f]
2320 invert file name filter.
2321
2322 :invert? [f]
2323 show current filter state.
2324
2325 :invert s
2326 invert selection.
2327
2328 :invert o
2329 invert sorting order of the primary sorting key.
2330
2331 :invert? o
2332 show sorting order of the primary sorting key.
2333
2334 :jobs
2335
2336 :jobs display menu of current backgrounded processes. See "Menus and
2337 dialogs" section for controls.
2338
2339 :keepsel
2340
2341 :keepsel [command...]
2342 preserve selection during some :command by default. Note that
2343 this doesn't save and restore selection to preserve it no matter
2344 what, but precludes its clearing at the end of a command and
2345 thus won't help if selection is cleared explicitly during opera‐
2346 tion.
2347
2348 Example:
2349
2350 :keepsel view
2351
2352 :let
2353
2354 :let $ENV_VAR = <expr>
2355 set an environment variable. Warning: setting environment vari‐
2356 able to an empty string on Windows removes it.
2357
2358 :let $ENV_VAR .= <expr>
2359 append value to environment variable.
2360
2361 :let &[l:|g:]opt = <expr>
2362 sets option value.
2363
2364 :let &[l:|g:]opt .= <expr>
2365 append value to string option.
2366
2367 :let &[l:|g:]opt += <expr>
2368 increasing option value, adding sub-values.
2369
2370 :let &[l:|g:]opt -= <expr>
2371 decreasing option value, removing sub-values.
2372
2373 Where <expr> could be a single-quoted string, double-quoted string, an
2374 environment variable, function call or a concatanation of any of them
2375 in any order using the '.' operator. Any whitespace is ignored.
2376
2377 :locate
2378
2379 :locate filename
2380 use "locate" command to create a menu of filenames. Selecting a
2381 file from the menu will reload the current file list in vifm to
2382 show the selected file. By default the command relies on the
2383 external "locate" utility (it's assumed that its database is al‐
2384 ready built), which can be customized by altering value of the
2385 'locateprg' option. See "Menus and dialogs" section for con‐
2386 trols.
2387
2388 :locate
2389 repeat last :locate command.
2390
2391 :ls
2392
2393 :ls lists windows of active terminal multiplexer (only when terminal
2394 multiplexer is used). This is achieved by issuing proper com‐
2395 mand for active terminal multiplexer, thus the list is not han‐
2396 dled by vifm.
2397
2398 :lstrash
2399
2400 :lstrash
2401 display a menu with list of files in trash. Each element of the
2402 list is original path of a deleted file, thus the list can con‐
2403 tain duplicates. See "Menus and dialogs" section for controls.
2404
2405 :mark
2406
2407 :[range]ma[rk][?] x [/full/path] [filename]
2408 Set mark x (a-zA-Z0-9) at /full/path and filename. By default
2409 current directory is being used. If no filename was given and
2410 /full/path is current directory then last file in [range] is
2411 used. Using of macros is allowed. Question mark will stop com‐
2412 mand from overwriting existing marks.
2413
2414 :marks
2415
2416 :marks create a pop-up menu of marks. See "Menus and dialogs" section
2417 for controls.
2418
2419 :marks list ...
2420 display the contents of the marks that are mentioned in list.
2421
2422 :media
2423
2424 :media only for *nix
2425 display media management menu. See "Menus and dialogs" section
2426 for controls. See also 'mediaprg' option.
2427
2428 :messages
2429
2430 :mes[sages]
2431 shows previously given messages (up to 50).
2432
2433 :mkdir
2434
2435 :[line]mkdir[!] dir ...
2436 create directories at specified paths. The [line] can be used
2437 to pick node in a tree-view. "!" means make parent directories
2438 as needed. Macros are expanded.
2439
2440 :move
2441
2442 :[range]m[ove][!?][ &]
2443 move files to directory of other view. With "?" prompts for
2444 destination file names in an editor. "!" forces overwrite.
2445
2446 :[range]m[ove][!] path[ &]
2447 move files to directory specified with the path (absolute or
2448 relative to directory of other view). "!" forces overwrite.
2449
2450 :[range]m[ove][!] name1 name2...[ &]
2451 move files to directory of other view giving each next file a
2452 corresponding name from the argument list. "!" forces over‐
2453 write.
2454
2455 :[range]m[ove][!?] -skip ...[ &]
2456 see "-skip parameter" section below.
2457
2458 :nohlsearch
2459
2460 :noh[lsearch]
2461 clear selection in current pane.
2462
2463 :normal
2464
2465 :norm[al][!] commands
2466 execute normal mode commands. If "!" is used, user defined map‐
2467 pings are ignored. Unfinished last command is aborted as if
2468 <esc> or <c-c> was typed. A ":" should be completed as well.
2469 Commands can't start with a space, so put a count of 1 (one) be‐
2470 fore it.
2471
2472 :only
2473
2474 :on[ly]
2475 switch to a one window view.
2476
2477 :plugin
2478
2479 :plugin load
2480 loads all plugins. To be used in configuration file to manually
2481 load plugins at an earlier point. The plugins can be loaded
2482 only once, additional calls will do nothing.
2483
2484
2485 :plugin blacklist {plugin}
2486 adds {plugin} to the list of plugins to be ignored.
2487
2488 :plugin whitelist {plugin}
2489 adds {plugin} to the list of plugins to be loaded while ignoring
2490 all other plugins. This list should normally be empty.
2491
2492 :plugins
2493
2494 :plugins
2495 open plugins menu. See "Menus and dialogs" section for con‐
2496 trols.
2497
2498 :popd
2499
2500 :popd remove pane directories from stack.
2501
2502 :pushd
2503
2504 :pushd[!] /curr/dir [/other/dir]
2505 add pane directories to stack and process arguments like :cd
2506 command.
2507
2508 :pushd exchange the top two items of the directory stack.
2509
2510 :put
2511
2512 :[line]pu[t][!] [reg] [ &]
2513 put files from specified register (" by default) into current
2514 directory. The [line] can be used to pick node in a tree-view.
2515 "!" moves files "!" moves files from their original location in‐
2516 stead of copying them. During this operation no confirmation
2517 dialogs will be shown, all checks are performed beforehand.
2518
2519 :pwd
2520
2521 :pw[d] show the present working directory.
2522
2523 :qall
2524
2525 :qa[ll][!]
2526 exit vifm (add ! to skip saving changes and checking for active
2527 backgrounded commands).
2528
2529 :quit
2530
2531 :q[uit][!]
2532 if there is more than one tab, close the current one, otherwise
2533 exit vifm (add ! to skip saving state and checking for active
2534 backgrounded commands).
2535
2536 :redraw
2537
2538 :redr[aw]
2539 redraw the screen immediately.
2540
2541 :registers
2542
2543 :reg[isters]
2544 display menu with registers content.
2545
2546 :reg[isters] list ...
2547 display the contents of the numbered and named registers that
2548 are mentioned in list (for example "az to display "", "a and "z
2549 content).
2550
2551 :regular
2552
2553 :regular
2554
2555 switch to regular view leaving custom view.
2556 :rename
2557
2558 :[range]rename[!]
2559 rename files by editing their names in an editor. "!" renames
2560 files recursively in subdirectories. See "External Renaming"
2561 section.
2562
2563 :[range]rename name1 name2...
2564 rename each of selected files to a corresponding name.
2565
2566 :restart
2567
2568 :restart
2569 free a lot of things (histories, commands, etc.), reread
2570 vifminfo, vifmrc and session files and run startup commands
2571 passed in the argument list, thus losing all unsaved changes
2572 (e.g. recent history or keys mapped after starting this in‐
2573 stance). Session that wasn't yet stored gets reset.
2574
2575 While many things get reset, some basic UI state and current lo‐
2576 cations are preserved, including tabs.
2577
2578 :restart full
2579 variation of :restart that makes no attempt to preserve any‐
2580 thing.
2581
2582 :restore
2583
2584 :[range]restore
2585 restore file from trash directory, doesn't work outside one of
2586 trash directories. See "Trash directory" section below.
2587
2588 :rlink
2589
2590 :[range]rlink[!?]
2591 create relative symbolic links to files in directory of other
2592 view. With "?" prompts for destination file names in an editor.
2593 "!" forces overwrite.
2594
2595 :[range]rlink[!] path
2596 create relative symbolic links of files in directory specified
2597 with the path (absolute or relative to directory of other view).
2598 "!" forces overwrite.
2599
2600 :[range]rlink[!] name1 name2...
2601 create relative symbolic links of files in directory of other
2602 view giving each next link a corresponding name from the argu‐
2603 ment list. "!" forces overwrite.
2604
2605 :[range]rlink[!?] -skip ...[ &]
2606 see "-skip parameter" section below.
2607
2608 :screen
2609
2610 :screen
2611 toggle whether to use the terminal multiplexer or not.
2612 A terminal multiplexer uses pseudo terminals to allow multiple
2613 windows to be used in the console or in a single xterm. Start‐
2614 ing vifm from terminal multiplexer with appropriate support
2615 turned on will cause vifm to open a new terminal multiplexer
2616 window for each new file edited or program launched from vifm.
2617 This requires screen version 3.9.9 or newer for the screen -X
2618 argument or tmux (1.8 version or newer is recommended).
2619
2620 :screen!
2621 enable integration with terminal multiplexers.
2622
2623 :screen?
2624 display whether integration with terminal multiplexers is en‐
2625 abled.
2626
2627 Note: the command is called screen for historical reasons (when tmux
2628 wasn't yet supported) and might be changed in future releases, or get
2629 an alias.
2630
2631 :select
2632
2633 :[range]select
2634 select files in the given range (current file if no range is
2635 given).
2636
2637 :select {pattern}
2638 select files that match specified pattern. Possible {pattern}
2639 forms are described in "Patterns" section below. Trailing slash
2640 for directories is taken into account, so `:select! */ | invert
2641 s` selects only files.
2642
2643 :select //[iI]
2644 same as item above, but reuses last search pattern.
2645
2646 :select !{external command}
2647 select files from the list supplied by external command. Files
2648 are matched by full paths, relative paths are converted to abso‐
2649 lute ones beforehand.
2650
2651 :[range]select! [{pattern}]
2652 same as above, but resets previously selected items before pro‐
2653 ceeding.
2654
2655 :session
2656
2657 :session?
2658 print name of the current session.
2659
2660 :session
2661 detach current session without saving it. Resets v:session.
2662
2663 :session name
2664 create or load and switch to a session with the specified name.
2665 Name can't contain slashes. Session active at the moment is
2666 saved before the switch. Session is also automatically saved
2667 when quiting the application in usual ways. Sets v:session.
2668
2669 :session -
2670 switch to a previous session if it still exists (wasn't removed
2671 or detached from without saving).
2672
2673 :set
2674
2675 :se[t] display all options that differ from their default value.
2676
2677 :se[t] all
2678 display all options.
2679
2680 :se[t] opt1=val1 opt2='val2' opt3="val3" ...
2681 sets given options. For local options both values are set.
2682 You can use following syntax:
2683 - for all options - option, option? and option&
2684 - for boolean options - nooption, invoption and option!
2685 - for integer options - option=x, option+=x and option-=x
2686 - for string options - option=x and option+=x
2687 - for string list options - option=x, option+=x, option-=x and
2688 option^=x
2689 - for enumeration options - option=x, option+=x and option-=x
2690 - for set options - option=x, option+=x, option-=x and op‐
2691 tion^=x
2692 - for charset options - option=x, option+=x, option-=x and op‐
2693 tion^=x
2694
2695 the meaning:
2696 - option - turn option on (for boolean) or print its value (for
2697 all others)
2698 - nooption - turn option off
2699 - invoption - invert option state
2700 - option! - invert option state
2701 - option? - print option value
2702 - option& - reset option to its default value
2703 - option=x or option:x - set option to x
2704 - option+=x - add/append x to option
2705 - option-=x - remove (or subtract) x from option
2706 - option^=x - toggle x presence among values of the option
2707
2708 Option name can be prepended and appended by any number of
2709 whitespace characters.
2710
2711 :setglobal
2712
2713 :setg[lobal]
2714 display all global options that differ from their default value.
2715
2716 :setg[lobal] all
2717 display all global options.
2718
2719 :setg[lobal] opt1=val1 opt2='val2' opt3="val3" ...
2720 same as :set, but changes/prints only global options or global
2721 values of local options. Changes to the latter might be not
2722 visible until directory is changed.
2723
2724 :setlocal
2725
2726 :setl[ocal]
2727 display all local options that differ from their default value.
2728
2729 :setl[ocal] all
2730 display all local options.
2731
2732 :setl[ocal] opt1=val1 opt2='val2' opt3="val3" ...
2733 same as :set, but changes/prints only local values of local op‐
2734 tions.
2735
2736 :shell
2737
2738 :sh[ell][!]
2739 start a shell in current directory. "!" suppresses spawning
2740 dedicated window of terminal multiplexer for a shell. To make
2741 vifm adaptive to environment it uses $SHELL if it's defined,
2742 otherwise 'shell' value is used.
2743
2744
2745 :siblnext
2746
2747 :[count]siblnext[!]
2748
2749 change directory to [count]th next sibling directory after cur‐
2750 rent path using value of global sort option of current pane.
2751 "!" enables wrapping.
2752
2753 For example, say, you're at /boot and root listing starts like
2754 this:
2755
2756 bin/
2757 boot/
2758 dev/
2759 ...
2760
2761 Issuing :siblnext will navigate to /dev.
2762
2763
2764 :siblprev
2765
2766 :[count]siblprev[!]
2767 same as :siblnext, but in the opposite direction.
2768
2769 :sort
2770
2771 :sor[t]
2772 display dialog with different sorting methods, where one can se‐
2773 lect the primary sorting key. When 'viewcolumns' options is
2774 empty and 'lsview' is off, changing primary sorting key will
2775 also affect view look (in particular the second column of the
2776 view will be changed). See "Menus and dialogs" section for con‐
2777 trols.
2778
2779 :source
2780
2781 :so[urce] file
2782 read command-line commands from the file.
2783
2784 :split
2785
2786 :sp[lit]
2787 switch to a two window horizontal view.
2788
2789 :sp[lit]!
2790 toggle horizontal window splitting.
2791
2792 :sp[lit] path
2793 splits the window horizontally to show both file directories.
2794 Also changes other pane to path (absolute or relative to current
2795 directory of active pane).
2796
2797 :stop
2798
2799 :st[op]
2800 suspend vifm (same as pressing Ctrl-Z). Does nothing if this
2801 instance isn't running in a shell. The command exists to allow
2802 mapping to the action of Ctrl-Z.
2803
2804 :substitute
2805
2806 :[range]s[ubstitute]/pattern/string/[flags]
2807 for each file in range replace a match of pattern with string.
2808
2809 String can contain \0...\9 to link to capture groups (\0 - all match,
2810 \1 - first group, etc.).
2811
2812 Pattern is stored in search history.
2813
2814 Available flags:
2815
2816 - i - ignore case (the 'ignorecase' and 'smartcase' options are not
2817 used)
2818
2819 - I - don't ignore case (the 'ignorecase' and 'smartcase' options are
2820 not used)
2821
2822 - g - substitute all matches in each file name (each g toggles this)
2823
2824 :[range]s[ubstitute]/pattern
2825 substitute pattern with an empty string.
2826
2827 :[range]s[ubstitute]//string/[flags]
2828 use last pattern from search history.
2829
2830 :[range]s[ubstitute]
2831 repeat previous substitution command.
2832
2833 :sync
2834
2835 :sync [relative path]
2836 change the other pane to the current pane directory or to some
2837 path relative to the current directory. Using macros is al‐
2838 lowed.
2839
2840 :sync! change the other pane to the current pane directory and synchro‐
2841 nize cursor position. If current pane displays custom list of
2842 files, position before entering it is used (current one might
2843 not make any sense).
2844
2845
2846 :sync! [location | cursorpos | localopts | filters | filelist | tree |
2847 all]...
2848 change enumerated properties of the other pane to match corre‐
2849 sponding properties of the current pane. Arguments have the
2850 following meanings:
2851
2852 - location - current directory of the pane;
2853
2854 - cursorpos - cursor position (doesn't make sense without "lo‐
2855 cation");
2856
2857 - localopts - all local options;
2858
2859 - filters - all filters;
2860
2861 - filelist - list of files for custom view (implies "loca‐
2862 tion");
2863
2864 - tree - tree structure for tree view (implies "location");
2865
2866 - all - all of the above.
2867
2868 :tabclose
2869
2870 :tabc[lose]
2871 close current tab, unless it's the only one open at current
2872 scope.
2873
2874 :tabmove
2875
2876 :tabm[ove] [N]
2877 without the argument or with `$` as the argument, current tab
2878 becomes the last tab. With the argument, current tab is moved
2879 after the tab with the specified number. Argument of `0` moves
2880 current tab to the first position.
2881
2882 :tabname
2883
2884 :tabname [name]
2885 set, update or reset (when no argument is provided) name of the
2886 current tab.
2887
2888 :tabnew
2889
2890 :tabnew [path]
2891 create new tab. Accepts optional path for the new tab. Macros
2892 and environment variables are expanded.
2893
2894 :tabnext
2895
2896 :tabn[ext]
2897 switch to the next tab (wrapping around).
2898
2899 :tabn[ext] {n}
2900 go to the tab number {n}. Tab numeration starts with 1.
2901
2902 :tabonly
2903
2904 :tabo[nly]
2905 close all tabs but the current one. Closes pane tabs only at
2906 the active side.
2907
2908 :tabprevious
2909
2910 :tabp[revious]
2911 switch to the previous tab (wrapping around).
2912
2913 :tabp[revious] {n}
2914 go to the {n}-th previous tab. Note that :tabnext handles its
2915 argument differently.
2916
2917 :touch
2918
2919 :[line]touch file...
2920 create files at specified paths. Aborts on errors. Doesn't up‐
2921 date time of existing files. The [line] can be used to pick
2922 node in a tree-view. Macros are expanded.
2923
2924 :tr
2925
2926 :[range]tr/pattern/string/
2927 for each file in range transliterate the characters which appear
2928 in pattern to the corresponding character in string. When
2929 string is shorter than pattern, it's padded with its last char‐
2930 acter.
2931
2932 :trashes
2933
2934 :trashes
2935 lists all valid trash directories in a menu. Only non-empty and
2936 writable trash directories are shown. This is exactly the list
2937 of directories that are cleared when :empty command is executed.
2938
2939 :trashes?
2940 same as :trashes, but also displays size of each trash direc‐
2941 tory.
2942
2943 :tree
2944
2945 :tree turn pane into tree view with current directory as its root.
2946 The tree view is implemented on top of a custom view, but is au‐
2947 tomatically kept in sync with file system state and considers
2948 all the filters. Thus the structure corresponds to what one
2949 would see on visiting the directories manually. As a special
2950 case for trees built out of custom view file-system tracking
2951 isn't performed.
2952
2953 To leave tree view go up from its root or use gh at any level of
2954 the tree. Any command that changes directory will also do, in
2955 particular, `:cd ..`.
2956
2957 Tree structure is incompatible with alternative representations,
2958 so values of 'lsview' and 'millerview' options are ignored.
2959
2960 The "depth" argument specifies nesting level on which loading of
2961 subdirectories won't happen (they will be folded). Values start
2962 at 1.
2963
2964 :tree! toggle current view in and out of tree mode.
2965
2966 :undolist
2967
2968 :undol[ist]
2969 display list of latest changes. Use "!" to see actual commands.
2970 See "Menus and dialogs" section for controls.
2971
2972 :unlet
2973
2974 :unl[et][!] $ENV_VAR1 $ENV_VAR2 ...
2975 remove environment variables. Add ! to omit displaying of warn‐
2976 ings about nonexistent variables.
2977
2978 :unselect
2979
2980 :[range]unselect
2981 unselect files in the given range (current file if no range is
2982 given).
2983
2984 :unselect {pattern}
2985 unselect files that match specified pattern. Possible {pattern}
2986 forms are described in "Patterns" section below. Trailing slash
2987 for directories is taken into account, so `:unselect */` unse‐
2988 lects directories.
2989
2990 :unselect !{external command}
2991 unselect files from the list supplied by external command.
2992 Files are matched by full paths, relative paths are converted to
2993 absolute ones beforehand.
2994
2995 :unselect //[iI]
2996 same as item above, but reuses last search pattern.
2997
2998 :version
2999
3000 :ve[rsion]
3001 show menu with version information.
3002
3003 :vifm
3004
3005 :vifm same as :version.
3006
3007 :view
3008
3009 :vie[w]
3010 toggle on and off the quick file view (preview of file's con‐
3011 tents). See also 'quickview' option.
3012
3013 :vie[w]!
3014 turn on quick file view if it's off.
3015
3016 :volumes
3017
3018 :volumes
3019 only for MS-Windows
3020 display menu with volume list. Hitting l (or Enter) key opens
3021 appropriate volume in the current pane. See "Menus and dialogs"
3022 section for controls.
3023
3024 :vsplit
3025
3026 :vs[plit]
3027 switch to a two window vertical view.
3028
3029 :vs[plit]!
3030 toggle window vertical splitting.
3031
3032 :vs[plit] path
3033 split the window vertically to show both file directories. And
3034 changes other pane to path (absolute or relative to current di‐
3035 rectory of active pane).
3036
3037 :wincmd
3038
3039 :[count]winc[md] {arg}
3040 same as running Ctrl-W [count] {arg}.
3041
3042 :windo
3043
3044 :windo [command...]
3045 execute command for each pane (same as :winrun % command).
3046
3047 :winrun
3048
3049 :winrun type [command...]
3050 execute command for pane(s), which is determined by type argu‐
3051 ment:
3052 - ^ - top-left pane
3053 - $ - bottom-right pane
3054 - % - all panes
3055 - . - current pane
3056 - , - other pane
3057
3058 :write
3059
3060 :w[rite]
3061 write current state to vifminfo and session files (if a session
3062 is active).
3063
3064 :wq
3065
3066 :wq[!] same as :quit, but ! disables only the check of backgrounded
3067 commands, while state of the application is always written.
3068 :wqall
3069
3070 :wqa[ll][!]
3071 same as :qall, but ! disables only the check of backgrounded
3072 commands, while state of the application is always written.
3073
3074 :xall
3075
3076 :xa[ll][!]
3077 same as :qall.
3078
3079 :xit
3080
3081 :x[it][!]
3082 same as :quit.
3083
3084 :yank
3085
3086 :[range]y[ank] [reg] [count]
3087 will yank files to the reg register.
3088
3089 :map lhs rhs
3090
3091 :map lhs rhs
3092 map lhs key sequence to rhs in normal and visual modes.
3093
3094 :map! lhs rhs
3095 map lhs key sequence to rhs in command line mode.
3096
3097
3098 :cmap :dmap :mmap :nmap :qmap
3099 :vmap
3100
3101 :cm[ap] lhs rhs
3102 map lhs to rhs in command line mode.
3103
3104 :dm[ap] lhs rhs
3105 map lhs to rhs in dialog modes.
3106
3107 :mm[ap] lhs rhs
3108 map lhs to rhs in menu mode.
3109
3110 :nm[ap] lhs rhs
3111 map lhs to rhs in normal mode.
3112
3113 :qm[ap] lhs rhs
3114 map lhs to rhs in view mode.
3115
3116 :vm[ap] lhs rhs
3117 map lhs to rhs in visual mode.
3118
3119
3120 :*map
3121
3122 :cm[ap]
3123 list all maps in command line mode.
3124
3125 :dm[ap]
3126 list all maps in dialog modes.
3127
3128 :mm[ap]
3129 list all maps in menu mode.
3130
3131 :nm[ap]
3132 list all maps in normal mode.
3133
3134 :qm[ap]
3135 list all maps in view mode.
3136
3137 :vm[ap]
3138 list all maps in visual mode.
3139
3140 :*map beginning
3141
3142 :cm[ap] beginning
3143 list all maps in command line mode that start with the begin‐
3144 ning.
3145
3146 :dm[ap] beginning
3147 list all maps in dialog modes that start with the beginning.
3148
3149 :mm[ap] beginning
3150 list all maps in menu mode that start with the beginning.
3151
3152 :nm[ap] beginning
3153 list all maps in normal mode that start with the beginning.
3154
3155 :qm[ap] beginning
3156 list all maps in view mode that start with the beginning.
3157
3158 :vm[ap] beginning
3159 list all maps in visual mode that start with the beginning.
3160
3161 :noremap
3162
3163 :no[remap] lhs rhs
3164 map the key sequence lhs to rhs for normal and visual modes, but
3165 don't expand user mappings in rhs.
3166
3167 :no[remap]! lhs rhs
3168 map the key sequence lhs to rhs for command line mode, but don't
3169 expand user mappings in rhs.
3170
3171 :cnoremap :dnoremap :mnoremap :nnoremap :qnoremap
3172 :vnoremap
3173
3174 :cno[remap] lhs rhs
3175 map the key sequence lhs to rhs for command line mode, but don't
3176 expand user mappings in rhs.
3177
3178 :dn[oremap] lhs rhs
3179 map the key sequence lhs to rhs for dialog modes, but don't ex‐
3180 pand user mappings in rhs.
3181
3182 :mn[oremap] lhs rhs
3183 map the key sequence lhs to rhs for menu mode, but don't expand
3184 user mappings in rhs.
3185
3186 :nn[oremap] lhs rhs
3187 map the key sequence lhs to rhs for normal mode, but don't ex‐
3188 pand user mappings in rhs.
3189
3190 :qn[oremap] lhs rhs
3191 map the key sequence lhs to rhs for view mode, but don't expand
3192 user mappings in rhs.
3193
3194 :vn[oremap] lhs rhs
3195 map the key sequence lhs to rhs for visual mode, but don't ex‐
3196 pand user mappings in rhs.
3197
3198 :unmap
3199
3200 :unm[ap] lhs
3201 remove user mapping of lhs from normal and visual modes.
3202
3203 :unm[ap]! lhs
3204 remove user mapping of lhs from command line mode.
3205
3206 :cunmap :dunmap :munmap :nunmap :qunmap
3207 :vunmap
3208
3209 :cu[nmap] lhs
3210 remove user mapping of lhs from command line mode.
3211
3212 :du[nmap] lhs
3213 remove user mapping of lhs from dialog modes.
3214
3215 :mu[nmap] lhs
3216 remove user mapping of lhs from menu mode.
3217
3218 :nun[map] lhs
3219 remove user mapping of lhs from normal mode.
3220
3221 :qun[map] lhs
3222 remove user mapping of lhs from view mode.
3223
3224 :vu[nmap] lhs
3225 remove user mapping of lhs from visual mode.
3226
3228 The ranges implemented include:
3229 2,3 - from second to third file in the list (including it)
3230 % - the entire directory.
3231 . - the current position in the filelist.
3232 $ - the end of the filelist.
3233 't - the mark position t.
3234
3235 Examples:
3236
3237 :%delete
3238
3239 would delete all files in the directory.
3240
3241 :2,4delete
3242
3243 would delete the files in the list positions 2 through 4.
3244
3245 :.,$delete
3246
3247 would delete the files from the current position to the end of the
3248 filelist.
3249
3250 :3delete4
3251
3252 would delete the files in the list positions 3, 4, 5, 6.
3253
3254 If a backward range is given :4,2delete - an query message is given and
3255 user can chose what to do next.
3256
3257 The builtin commands that accept a range are :d[elete] and :y[ank].
3258
3260 Some of the command-line commands accept parameters in the form of
3261 `-paramname`. Arguments of such commands can be split into two groups:
3262 parameters and positional arguments. Items from the two groups cannot
3263 be interleaved and parameters always come first. List of parameters is
3264 terminated implicitly by the first argument that doesn't start with a
3265 dash ("-") or explicitly via "--" separator (needs to be a separate ar‐
3266 gument), which is just discarded. These strict rules allow arbitrary
3267 positional arguments, such as file names that start with a dash.
3268
3269
3270 -skip parameter
3271 This parameter makes :copy, :move, :alink and :rlink automati‐
3272 cally skip source files that already exist at the destination
3273 rather than refusing to perform the operation.
3274
3276 The command macros may be used in user commands.
3277
3278 %a User arguments. When user arguments contain macros, they are
3279 expanded before preforming substitution of %a.
3280
3281 %c %"c The current file under the cursor.
3282
3283 %C %"C The current file under the cursor in the other directory.
3284
3285 %f %"f All of the selected files or the current file, but see "Selec‐
3286 tion" section below.
3287
3288 %F %"F Same as %f, %"f, but for the inactive pane.
3289
3290 %l %"l List of selected files. Unlike %f from above, this is only for
3291 explicit selection (i.e., not via a range) and is empty if no
3292 files are selected.
3293
3294 %L %"L Same as %l, %"l, but for the inactive pane.
3295
3296 %b %"b Same as %f %F.
3297
3298 %d %"d Full path to current directory.
3299
3300 %D %"D Full path to other file list directory.
3301
3302 %rx %"rx
3303 Full paths to files in the register {x}. In case of invalid
3304 symbol in place of {x}, it's processed with the rest of the line
3305 and default register is used.
3306
3307 %m Show command output in a menu.
3308
3309 %M Same as %m, but l (or Enter) key is handled like for :locate and
3310 :find commands.
3311
3312 %u Process command output as list of paths and compose custom view
3313 out of it.
3314
3315 %U Same as %u, but implies less list updates inside vifm, which is
3316 absence of sorting at the moment.
3317
3318 %Iu Same as %u, but gives up terminal before running external com‐
3319 mand.
3320
3321 %IU Same as %U, but gives up terminal before running external com‐
3322 mand.
3323
3324 %S Show command output in the status bar.
3325
3326 %q Redirect command output to quick view, which is activated if
3327 disabled.
3328
3329 %s Execute command in horizontally split window of active terminal
3330 multiplexer (ignored if not running inside one).
3331
3332 %v Same as %s, but splits vertically.
3333
3334 %n Forbid use of terminal multiplexer to run the command.
3335
3336 %N Do not detach viewer from terminal session (leaves `/dev/tty`
3337 available).
3338
3339 %i Completely ignore command output. For background jobs this sup‐
3340 presses error dialogs, while still storing errors internally for
3341 viewing via :jobs menu.
3342
3343 %Pl Pipe list of files to standard input of a command.
3344
3345 %Pz Same as %Pl, but separates paths by null ('\0') character.
3346
3347 %pc Marks the end of the main command and the beginning of the clear
3348 command for graphical preview, which is invoked on closing pre‐
3349 view of a file.
3350
3351 %pd Marks a preview command as one that directly communicates with
3352 the terminal. Beware that this is for things like sixel which
3353 are self-contained sequences that depend only on current cursor
3354 position, using this with anything else is likely to mangle ter‐
3355 minal state.
3356
3357 %pu Uncached preview. Intended to be used for commands that just
3358 send file path somewhere for preview.
3359
3360 The following dimensions and coordinates are in characters:
3361
3362 %px x coordinate of top-left corner of preview area.
3363
3364 %py y coordinate of top-left corner of preview area.
3365
3366 %pw width of preview area.
3367
3368 %ph height of preview area.
3369
3370
3371 Use %% if you need to put a percent sign in your command.
3372
3373 Note that %i, %Iu, %IU, %m, %M, %n, %q, %s, %S, %u, %U and %v macros
3374 are mutually exclusive. Only the last one of them on the command will
3375 take effect.
3376
3377 Note that %Pl and %Pz are mutually exclusive. Only the last one of
3378 them on the command will take effect.
3379
3380 You can use file name modifiers after %c, %C, %f, %F, %b, %d and %D
3381 macros. Supported modifiers are:
3382
3383 - :p - full path
3384
3385 - :u - UNC name of path (e.g. "\\server" in
3386 "\\server\share"), Windows only. Expands to current computer name
3387 for not UNC paths.
3388
3389 - :~ - relative to the home directory
3390
3391 - :. - relative to current directory
3392
3393 - :h - head of the file name
3394
3395 - :t - tail of the file name
3396
3397 - :r - root of the file name (without last extension)
3398
3399 - :e - extension of the file name (last one)
3400
3401 - :s?pat?sub? - substitute the first occurrence of pat with sub.
3402 You can use any character for '?', but it must not occur in pat or
3403 sub.
3404
3405 - :gs?pat?sub? - like :s, but substitutes all occurrences of pat with
3406 sub.
3407
3408 See ':h filename-modifiers' in Vim's documentation for the detailed de‐
3409 scription.
3410
3411 Using %x means expand corresponding macro escaping all characters that
3412 have special meaning. And %"x means using of double quotes and escape
3413 only backslash and double quote characters, which is more useful on
3414 Windows systems.
3415
3416 Position and quantity (if there is any) of %m, %M, %S or %s macros in
3417 the command is unimportant. All their occurrences are removed from the
3418 resulting command.
3419
3420 %c and %f macros are expanded to file names only, when %C and %F are
3421 expanded to full paths. %f and %F follow this in %b too.
3422
3423 :com move mv %f %D
3424 set the :move command to move all of the files selected in the
3425 current directory to the other directory.
3426
3427 The %a macro is replaced with any arguments given to an alias command.
3428 All arguments are considered optional.
3429 :com lsl !!ls -l %a - set the lsl command to execute ls -l with
3430 or without an argument.
3431
3432 :lsl<Enter>
3433 will list the directory contents of the current directory.
3434
3435 :lsl filename<Enter>
3436 will list only the given filename.
3437
3438 The macros can also be used in directly executing commands. ":!mv %f
3439 %D" would move the current directory selected files to the other direc‐
3440 tory.
3441
3442 Appending & to the end of a command causes it to be executed in the
3443 background. Typically you want to run two kinds of external commands
3444 in the background:
3445
3446 - GUI applications that doesn't fork thus block vifm (:!sxiv %f &);
3447
3448 - console tools that do not work with terminal (:!mv %f %D &).
3449
3450 You don't want to run terminal commands, which require terminal input
3451 or output something in background because they will mess up vifm's TUI.
3452 Anyway, if you did run such a command, you can use Ctrl-L key to update
3453 vifm's TUI.
3454
3455 Rewriting the example command with macros given above with background‐
3456 ing:
3457
3458 %m, %M, %s, %S, %u and %U macros cannot be combined with background
3459 mark (" &") as it doesn't make much sense.
3460
3462 Copy and move operation can take a lot of time to proceed. That's why
3463 vifm supports backgrounding of this two operations. To run :copy,
3464 :move or :delete command in the background just add " &" at the end of
3465 a command.
3466
3467 For each background operation a new thread is created. Job cancella‐
3468 tion can be requested in the :jobs menu via dd shortcut.
3469
3470 You can see if command is still running in the :jobs menu. Back‐
3471 grounded commands have progress instead of process id at the line be‐
3472 ginning.
3473
3474 Background operations cannot be undone.
3475
3477 Note that cancellation works somewhat different on Windows platform due
3478 to different mechanism of break signal propagation. One also might
3479 need to use Ctrl-Break shortcut instead of Ctrl-C.
3480
3481 There are two types of operations that can be cancelled:
3482
3483 - file system operations;
3484
3485 - mounting with FUSE (but not unmounting as it can cause loss of
3486 data);
3487
3488 - calls of external applications.
3489
3490 Note that vifm never terminates applications, it sends SIGINT signal
3491 and lets the application quit normally.
3492
3493 When one of set of operations is cancelled (e.g. copying of 5th file of
3494 10 files), further operations are cancelled too. In this case undo
3495 history will contain only actually performed operations.
3496
3497 Cancelled operations are indicated by "(cancelled)" suffix appended to
3498 information message on status bar.
3499
3500 File system operations
3501
3502 Currently the following commands can be cancelled: :alink, :chmod,
3503 :chown, :clone, :copy, :delete, :mkdir, :move, :restore, :rlink,
3504 :touch. File putting (on p/P key) can be cancelled as well. It's not
3505 hard to see that these are mainly long-running operations.
3506
3507 Cancelling commands when they are repeated for undo/redo operations is
3508 allowed for convenience, but is not recommended as further undo/redo
3509 operations might get blocked by side-effects of partially cancelled
3510 group of operations.
3511
3512 These commands can't be cancelled: :empty, :rename, :substitute, :tr.
3513
3514 Mounting with FUSE
3515
3516 It's not considered to be an error, so only notification on the status
3517 bar is shown.
3518
3519 External application calls
3520
3521 Each of this operations can be cancelled: :apropos, :find, :grep, :lo‐
3522 cate.
3523
3525 If there is a selection, it's stashed before proceeding further unless
3526 file under the cursor is part of that selection. This means that when
3527 macros are expanded for :filetype or :filextype programs, `%f` and `%F`
3528 become equivalent to `%c` and `%C` respectively if current file is not
3529 selected. So you run selection by running one of selected files, oth‐
3530 erwise you're running a single file even if there are other selected
3531 entries.
3532
3533 When running a selection it must not include broken symbolic links, has
3534 to be consistent and set of file handlers must be compatible. Consis‐
3535 tency means that selection contains either only directories (including
3536 links to them) or only files, but not their mix.
3537
3538 Compatibility is a more sophisticated check, but it's defined in a nat‐
3539 ural way so that you get what you'd expect. The following properties
3540 of selection are taken into account while checking it for compatibility
3541 and deciding how to handle it:
3542
3543
3544 1. If there any files for which handler isn't defined, then all files
3545 are opened using 'vicmd' or 'vixcmd'.
3546
3547
3548 2. If all handlers match the following criteria:
3549 - backgrounded
3550 - include `%c` and/or `%C`
3551 - include neither `%f` nor `%F`
3552 then each file is executed independently of the rest.
3553
3554
3555 3. If all handlers are equal, the common handler is executed. This
3556 handler might ignore selection and process only file under the
3557 cursor.
3558
3559
3560 4. Otherwise, an error is reported, because handlers differ and they
3561 don't support parallel execution.
3562
3564 :highlight, :filetype, :filextype, :fileviewer commands and 'classify'
3565 option support globs, regular expressions and mime types to match file
3566 names or their paths.
3567
3568 There are six possible ways to write a single pattern:
3569
3570 1. [!]{comma-separated-name-globs}
3571
3572 2. [!]{{comma-separated-path-globs}}
3573
3574 3. [!]/name-regular-expression/[iI]
3575
3576 4. [!]//path-regular-expression//[iI]
3577
3578 5. [!]<comma-separated-mime-type-globs>
3579
3580 6. undecorated-pattern
3581
3582 First five forms can include leading exclamation mark that negates pat‐
3583 tern matching.
3584
3585 The last form is implicitly refers to one of others. :highlight does
3586 not accept undecorated form, while :filetype, :filextype, :fileviewer,
3587 :select, :unselect and 'classify' treat it as list of name globs.
3588
3589 Path patterns receive absolute path of the file that includes its name
3590 component as well.
3591
3592 To combine several patterns (AND them), make sure you're using one of
3593 the first five forms and write patterns one after another, like this:
3594 <text/plain>{*.vifm}
3595 Mind that if you make a mistake the whole string will be treated as the
3596 sixth form.
3597
3598 :filetype, :filextype and :fileviewer commands accept comma-separated
3599 list of patterns instead of a single pattern, thus effectively handling
3600 OR operation on them:
3601 <text/plain>{*.vifm},<application/pdf>{*.pdf}
3602 Forms that accept comma-separated lists of patterns also process them
3603 as lists of alternatives.
3604
3605 Patterns with regular expressions
3606
3607 Regular expression patterns are case insensitive by default, see de‐
3608 scription of commands, which might override default behaviour.
3609
3610 Flags of regular expressions mean the following:
3611 - "i" makes filter case insensitive;
3612 - "I" makes filter case sensitive. They can be repeated multiple
3613 times, but the later one takes precedence (e.g. "iiiI" is equivalent
3614 to "I" and "IiIi" is the same as "i").
3615
3616 There are no implicit `^` or `$`, so make sure to specify them explic‐
3617 itly if the pattern should match the whole name or path.
3618
3619 Patterns with globs
3620
3621 "Globs" section below provides short overview of globs and some impor‐
3622 tant points that one needs to know about them.
3623
3624 Patterns with mime-types
3625
3626 Mime type matching is essentially globs matching applied to mime type
3627 of a file instead of its name/path. Note: mime types aren't detected
3628 on Windows.
3629
3630 Examples
3631
3632 Associate `evince` to PDF-files only inside `/home/user/downloads/` di‐
3633 rectory (excluding its subdirectories):
3634
3635 :filextype //^/home/user/downloads/[^/]*.pdf$// evince %f
3636
3637
3639 All regular expressions are modern/extended. See `man 7 regex` for
3640 more details on what's supported.
3641
3642 The following special sequences are additionally parsed:
3643 - `\c` forces matching ignoring case of letters
3644 - `\C` forces matching respecting case of letters
3645
3646 `\c` and `\C` have the highest priority in determining whether case is
3647 matched or not and exist to override 'ignorecase', 'smartcase' and
3648 `i`/`I` flags when necessary.
3649
3650 If multiple sequences are present, the one which appears later takes
3651 precedence.
3652
3653 Note that unlike in Vim character classes are affected by settings and
3654 sequences that control case sensitivity in regular expressions.
3655
3657 Globs are always case insensitive as it makes sense in general case.
3658
3659 `*`, `?`, `[` and `]` are treated as special symbols in the pattern.
3660 E.g.
3661
3662 :filetype * less %c
3663
3664 matches all files. One can use character classes for escaping, so
3665
3666 :filetype [*] less %c
3667
3668 matches only one file name, the one which contains only asterisk sym‐
3669 bol.
3670
3671 `*` means any number of any characters (possibly an empty substring),
3672 with one exception: asterisk at the pattern beginning doesn't match dot
3673 in the first position. E.g.
3674
3675 :fileviewer *.zip,*.jar zip -sf %c
3676
3677 associates using of `zip` program to preview all files with `zip` or
3678 `jar` extensions as listing of their content, but `.file.zip` won't be
3679 matched.
3680
3681 `?` means any character at this position. E.g.
3682
3683 :fileviewer ?.out file %c
3684
3685 calls `file` tool for all files which have exactly one character before
3686 their extension (e.g. a.out, b.out).
3687
3688 Square brackets designate character class, which means that whole char‐
3689 acter class matches against any of characters listed in it. For exam‐
3690 ple
3691
3692 :fileviewer *.[ch] highlight -O xterm256 -s dante --syntax c %c
3693
3694 makes vifm call `highlight` program to colorize source and header files
3695 in C language for a 256-color terminal. Equal command would be
3696
3697 :fileviewer *.c,*.h highlight -O xterm256 -s dante --syntax c %c
3698
3699
3700 Inside square brackets `^` or `!` can be used for symbol class negotia‐
3701 tion and the `-` symbol to set a range. `^` and `!` should appear
3702 right after the opening square bracket. For example
3703
3704 :filetype *.[!d]/ inspect_dir
3705
3706 associates `inspect_dir` as additional handler for all directories that
3707 have one character extension unless it's "d" letter. And
3708
3709 :filetype [0-9].jpg sxiv
3710
3711 associates `sxiv` picture viewer only for JPEG-files that contain sin‐
3712 gle digit in their name.
3713
3714 If you need to include literal comma, which is normally separates mul‐
3715 tiple globs, double it.
3716
3718 Local options
3719 These are kind of options that are local to a specific view. So
3720 you can set ascending sorting order for left pane and descending
3721 order for right pane.
3722
3723 In addition to being local to views, each such option also has
3724 two values:
3725
3726 - local to current directory (value associated with current
3727 location);
3728
3729 - global to current directory (value associated with the
3730 pane).
3731
3732 The idea is that current directory can be made a temporary ex‐
3733 ception to regular configuration of the view, until directory
3734 change. Use :setlocal for that. :setglobal changes view value
3735 not affecting settings until directory change. :set applies
3736 changes immediately to all values.
3737
3738
3739 'aproposprg'
3740 type: string
3741 default: "apropos %a"
3742 Specifies format for an external command to be invoked by the
3743 :apropos command. The format supports expanding of macros, spe‐
3744 cific for a particular *prg option, and %% sequence for insert‐
3745 ing percent sign literally. This option should include the %a
3746 macro to specify placement of arguments passed to the :apropos
3747 command. If the macro is not used, it will be implicitly added
3748 after a space to the value of this option.
3749
3750 'autocd'
3751 type: boolean
3752 default: false
3753 When enabled unknown command-line commands are interpreted as
3754 implicit invocation of :cd with one argument and no escaping.
3755 Tilde is expanded, but not macros or environment variables.
3756
3757 'autochpos'
3758 type: boolean
3759 default: true
3760 When disabled vifm will set cursor to the first line in the view
3761 after :cd and :pushd commands instead of saved cursor position.
3762 Disabling this will also make vifm clear information about cur‐
3763 sor position in the view history on :cd and :pushd commands (and
3764 on startup if 'autochpos' is disabled in the vifmrc). l key in
3765 the ":history ." and ":trashes" menus are treated like :cd com‐
3766 mand. This option also affects marks so that navigating to a
3767 mark doesn't restore cursor position.
3768
3769 When this option is enabled, more fine grained control over cur‐
3770 sor position is available via 'histcursor' option.
3771
3772 'columns' 'co'
3773 type: integer
3774 default: terminal width on startup
3775 Terminal width in characters.
3776
3777 'caseoptions'
3778 type: charset
3779 default: ""
3780 This option gives additional control over case sensitivity by
3781 allowing overriding default behaviour to either always be case
3782 sensitive or always be case insensitive. Possible values form
3783 pairs of lower and upper case letters that configure specific
3784 aspect of behaviour:
3785 p - always ignore case of paths during completion.
3786 P - always match case of paths during completion.
3787 g - always ignore case of characters for f/F/;/,.
3788 G - always match case of characters for f/F/;/,.
3789
3790 At most one item of each pair takes affect, if both or more are
3791 present, only the last one matters. When none of pair's ele‐
3792 ments are present, the behaviour is default (depends on operat‐
3793 ing system for path completion and on values of 'ignorecase' and
3794 'smartcase' options for file navigation).
3795
3796 'cdpath' 'cd'
3797 type: string list
3798 default: value of $CDPATH with commas instead of colons
3799 Specifies locations to check on changing directory with relative
3800 path that doesn't start with "./" or "../". When non-empty,
3801 current directory is examined after directories listed in the
3802 option.
3803
3804 This option doesn't affect completion of :cd command.
3805
3806 Example:
3807
3808 set cdpath=~
3809
3810 This way ":cd bin" will switch to "~/bin" even if directory
3811 named "bin" exists in current directory, while ":cd ./bin" com‐
3812 mand will ignore value of 'cdpath'.
3813
3814 'chaselinks'
3815 type: boolean
3816 default: false
3817 When enabled path of view is always resolved to real path (with
3818 all symbolic links expanded).
3819
3820 'classify'
3821 type: string list
3822 default: ":dir:/"
3823 Specifies file name prefixes and suffixes depending on file type
3824 or name. The format is either of:
3825 - [{prefix}]:{filetype}:[{suffix}]
3826 - [{prefix}]::{pattern}::[{suffix}]
3827 Possible {pattern} forms are described in "Patterns" section
3828 above.
3829
3830 Priority rules:
3831 - file name patterns have priority over type patterns
3832 - file name patterns are matched in left-to-right order of
3833 their appearance in this option
3834
3835 Either {prefix} or {suffix} or both can be omitted (which is the
3836 default for all unspecified file types), this means empty {pre‐
3837 fix} and/or {suffix}. {prefix} and {suffix} should consist of
3838 at most eight characters. Elements are separated by commas.
3839 Neither prefixes nor suffixes are part of file names, so they
3840 don't affect commands which operate on file names in any way.
3841 Comma (',') character can be inserted by doubling it. List of
3842 file type names can be found in the description of filetype()
3843 function.
3844
3845 'confirm' 'cf'
3846 type: set
3847 default: delete,permdelete
3848 Defines which operations require confirmation:
3849 - delete - moving files to trash (on d or :delete);
3850 - permdelete - permanent deletion of files (on D or :delete!
3851 command or on undo/redo operation).
3852
3853 'cpoptions' 'cpo'
3854 type: charset
3855 default: "fst"
3856 Contains a sequence of single-character flags. Each flag en‐
3857 ables behaviour of older versions of vifm. Flags:
3858 - f - when included, running :filter command results in not in‐
3859 verted (matching files are filtered out) and :filter! in in‐
3860 verted (matching files are left) filter, when omitted, meaning
3861 of the exclamation mark changes to the opposite;
3862 - s - when included, yy, dd and DD normal mode commands act on
3863 selection, otherwise they operate on current file only;
3864 - t - when included, <tab> (thus <c-i>) behave as <space> and
3865 switches active pane, otherwise <tab> and <c-i> go forward in
3866 the view history. It's possible to make both <tab> and <c-i> to
3867 work as expected by setting up the terminal to emit a custom se‐
3868 quence when <c-i> is pressed; see :histnext for details.
3869
3870 'cvoptions'
3871 type: set
3872 default:
3873 Specifies whether entering/leaving custom views triggers events
3874 that normally happen on entering/leaving directories:
3875 - autocmds - trigger autocommands on entering/leaving custom
3876 views;
3877 - localopts - reset local options on entering/leaving custom
3878 views;
3879 - localfilter - reset local filter on entering/leaving custom
3880 views.
3881
3882 'deleteprg'
3883 type: string
3884 default: ""
3885 Specifies program to run on files that are permanently removed.
3886 When empty, files are removed as usual, otherwise this command
3887 is invoked on each file by appending its name. If the command
3888 doesn't remove files, they will remain on the file system.
3889
3890 'dirsize'
3891 type: enumeration
3892 default: size
3893 Controls how size of directories is displayed in file views.
3894 The following values are possible:
3895 - size - size of directory (i.e., size used to store list of
3896 files)
3897 - nitems - number of entries in the directory (excluding . and
3898 ..)
3899
3900 Size obtained via ga/gA overwrites this setting so seeing count
3901 of files and occasionally size of directories is possible.
3902
3903 'dotdirs'
3904 type: set
3905 default: nonrootparent,treeleafsparent
3906 Controls displaying of dot directories. The following values
3907 are possible:
3908 - rootparent - show "../" in root directory of file system
3909 - nonrootparent - show "../" in non-root directories of file
3910 system
3911 - treeleafsparent - show "../" in empty directories of tree
3912 view
3913
3914 Note that empty directories always contain "../" entry regard‐
3915 less of value of this option. "../" disappears at the moment at
3916 least one file is created.
3917
3918 'dotfiles'
3919 type: boolean
3920 default: false
3921 Whether dot files are shown in the view. Can be controlled with
3922 z* bindings.
3923
3924 'fastrun'
3925 type: boolean
3926 default: false
3927 With this option turned on you can run partially entered com‐
3928 mands with unambiguous beginning using :! (e.g. :!Te instead of
3929 :!Terminal or :!Te<tab>).
3930
3931 'fillchars' 'fcs'
3932 type: string list
3933 default: ""
3934 Sets characters used to fill borders.
3935
3936 item default used for
3937 vborder:c ' ' left, middle and right vertical bor‐
3938 ders
3939 hborder:c '' middle horizontal border
3940
3941 A null string for vborder is equivalent to a space.
3942
3943 A null string for hborder omits the horizontal border.
3944
3945 Example:
3946
3947 set fillchars=vborder:".",hborder:""
3948
3949 'findprg'
3950 type: string
3951 default: "find %s %a -print , -type d \( ! -readable -o ! -exe‐
3952 cutable \) -prune"
3953 Specifies format for an external command to be invoked by the
3954 :find command. The format supports expansion of macros specific
3955 for this particular option and %% sequence for inserting percent
3956 sign literally. The macros are:
3957
3958 macro value/meaning
3959 %s literal arguments of :find or
3960 list of paths to search in
3961
3962 %A empty or
3963 literal arguments of :find
3964 %a empty or
3965 literal arguments of :find or
3966 predicate followed by escaped arguments of :find
3967 %p empty or
3968 literal arguments of :find or
3969 escaped arguments (parameters) of :find
3970
3971 %u redirect output to custom view instead of showing a
3972 menu
3973 %U redirect output to unsorted custom view instead of
3974 showing a menu
3975
3976 Predicate in %a is "-name" on *nix and "-iname" on Windows.
3977
3978 If both %u and %U are specified, %U is chosen.
3979
3980 Some macros can be added implicitly:
3981 - if %s isn't present, it's appended
3982 - if neither of %a, %A and %p is present, %a is appended
3983 - if neither of %s, %a, %A and %p is present, %s and %a are ap‐
3984 pended in this order
3985
3986 The macros slightly change their meaning depending on format of
3987 :find's arguments:
3988 - if the first argument points to an existing directory, %s is
3989 assigned all arguments while %a, %A and %p are left empty
3990 - otherwise:
3991 - %s is assigned a dot (".") meaning current directory or
3992 list of selected file names, if any
3993 - %a, %A and %p are assigned literal arguments when first
3994 argument starts with a dash ("-"), otherwise %a gets an escaped
3995 version of the arguments with a predicate and %p contains es‐
3996 caped version of the arguments
3997
3998 Starting with Windows Server 2003 a `where` command is avail‐
3999 able. One can configure vifm to use it in the following way:
4000
4001 set findprg="where /R %s %A"
4002
4003 As the syntax of this command is rather limited, one can't use
4004 :find command with selection of more than one item because the
4005 command ignores all directory paths except for the last one.
4006
4007 When using find port on Windows, another option is to setup
4008 'findprg' like this:
4009
4010 set findprg="find %s %a"
4011
4012
4013 'followlinks'
4014 type: boolean
4015 default: true
4016 Follow links on l or Enter. That is navigate to destination
4017 file instead of treating the link as if it were target file.
4018 Doesn't affects links to directories, which are always entered
4019 (use gf key for directories).
4020
4021 'fusehome'
4022 type: string
4023 default: "($XDG_DATA_HOME/vifm | $VIFM)/fuse/"
4024 Directory to be used as a root dir for FUSE mounts. Value of
4025 the option can contain environment variables (in form "$en‐
4026 vname"), which will be expanded (prepend it with a slash to pre‐
4027 vent expansion). The value should expand to an absolute path.
4028
4029 If you change this option, vifm won't remount anything. It af‐
4030 fects future mounts only. See "Automatic FUSE mounts" section
4031 below for more information.
4032
4033 'gdefault' 'gd'
4034 type: boolean
4035 default: false
4036 When on, 'g' flag is on for :substitute by default.
4037
4038 'grepprg'
4039 type: string
4040 default: "grep -n -H -I -r %i %a %s"
4041 Specifies format for an external command to be invoked by the
4042 :grep command. The format supports expanding of macros, spe‐
4043 cific for a particular *prg option, and %% sequence for insert‐
4044 ing percent sign literally. This option should include the %i
4045 macro to specify placement of "-v" string when inversion of re‐
4046 sults is requested, %a or %A macro to specify placement of argu‐
4047 ments passed to the :grep command and the %s macro to specify
4048 placement of list of files to search in. If some of the macros
4049 are not used, they will be implicitly added after a space to the
4050 value of the 'grepprg' option in the following order: %i, %a,
4051 %s. Note that when neither %a nor %A are specified, it's %a
4052 which is added implicitly.
4053
4054 Optional %u or %U macro could be used (if both specified %U is
4055 chosen) to force redirection to custom or unsorted custom view
4056 respectively.
4057
4058 See 'findprg' option for description of difference between %a
4059 and %A.
4060
4061 Example of setup to use ack (http://beyondgrep.com/) instead of
4062 grep:
4063
4064 set grepprg='ack -H -r %i %a %s'
4065
4066 or The Silver Searcher (https://github.com/ggreer/the_sil‐
4067 ver_searcher):
4068
4069 set grepprg='ag --line-numbers %i %a %s'
4070
4071
4072
4073 'histcursor'
4074 type: set
4075 default: startup,dirmark,direnter
4076 Defines situations when cursor should be moved according to di‐
4077 rectory history:
4078 - startup - on loading file lists during startup
4079 - dirmark - after navigating to a mark that doesn't specify
4080 file
4081 - direnter - on opening directory from a file list
4082
4083 This option has no effect when 'autochpos' is disabled.
4084
4085 Note that the list is not exhaustive and there are other situa‐
4086 tions when cursor is positioned automatically.
4087
4088 'history' 'hi'
4089 type: integer
4090 default: 15
4091 Maximum number of stored items in all histories.
4092
4093 'hlsearch' 'hls'
4094 type: boolean
4095 default: true
4096 Automatically select files that are search matches.
4097
4098 'iec' type: boolean
4099 default: false
4100 Use KiB, MiB, ... suffixes instead of K, M, ... when printing
4101 size in human-friendly format.
4102
4103 'ignorecase' 'ic'
4104 type: boolean
4105 default: false
4106 Ignore case in search patterns (:substitute, / and ? commands),
4107 local filter (but not the rest of filters) and other things de‐
4108 tailed in the description of 'caseoptions'.
4109
4110 'incsearch' 'is'
4111 type: boolean
4112 default: false
4113 When this option is set, search and view update for local filter
4114 is be performed starting from initial cursor position each time
4115 search pattern is changed.
4116
4117 'iooptions'
4118 type: set
4119 default: datasync
4120 Controls details of file operations. The following values are
4121 available:
4122 - datasync - periodically synchronize writes on copying files
4123 when 'syscalls' is set.
4124 (This makes copying last as long as it takes to
4125 actually write
4126 data to the medium, which is slower than you might
4127 expect;
4128 however, this also prevents system hanging due to
4129 filling memory
4130 with file-system cache.)
4131 - fastfilecloning - perform fast file cloning (copy-on-write),
4132 when available (available on Linux and btrfs file system).
4133
4134 'laststatus' 'ls'
4135 type: boolean
4136 default: true
4137 Controls if status bar is visible.
4138
4139 'lines'
4140 type: integer
4141 default: terminal height on startup
4142 Terminal height in lines.
4143
4144 'locateprg'
4145 type: string
4146 default: "locate %a"
4147 Specifies format for an external command to be invoked by the
4148 :locate command. The format supports expanding of macros, spe‐
4149 cific for a particular *prg option, and %% sequence for insert‐
4150 ing percent sign literally. This option should include the %a
4151 macro to specify placement of arguments passed to the :locate
4152 command. If the macro is not used, it will be implicitly added
4153 after a space to the value of this option.
4154
4155 Optional %u or %U macro could be used (if both specified %U is
4156 chosen) to force redirection to custom or unsorted custom view
4157 respectively.
4158
4159 'mediaprg'
4160 type: string
4161 default: path to bundled script that supports udevil, udisks and
4162 udisks2
4163 (using udisks2 requires python with dbus module in‐
4164 stalled)
4165 OS X: path points to a python script that uses diskutil
4166 {only for *nix}
4167 Specifies command to be used to manage media devices. Used by
4168 :media command.
4169
4170 The command can be passed the following parameters:
4171 - list -- list media
4172 - mount {device} -- mount a device
4173 - unmount {path} -- unmount given mount point
4174
4175 The output of `list` subcommand is parsed in search of lines
4176 that start with one of the following prefixes:
4177 - device= - specifies device path (e.g., "/dev/sde")
4178 - label= - specifies optional device label (e.g., "Memory
4179 card")
4180 - info= - specifies arbitrary text to display next to
4181 device (by
4182 default "[label]" is used, if label is pro‐
4183 vided)
4184 - mount-point= - specifies a mount point (can be absent or ap‐
4185 pear more than once)
4186
4187 All other lines are ignored. Each `device=` starts a new sec‐
4188 tion describing a device which should include two other possible
4189 prefixes.
4190
4191 `list` subcommand is assumed to always succeed, while exit code
4192 of `mount` and `unmount` is taken into account to determine
4193 whether operation was performed successfully.
4194
4195 'lsoptions'
4196 type: string list
4197 default: ""
4198 scope: local
4199
4200 Configures ls-like view.
4201
4202 item used for
4203 transposed filling view grid by columns rather than by
4204 lines
4205
4206
4207 'lsview'
4208 type: boolean
4209 default: false
4210 scope: local
4211 When this option is set, directory view will be displayed in
4212 multiple columns with file names similar to output of `ls -x`
4213 command. See "ls-like view" section below for format descrip‐
4214 tion. This option has no effect if 'millerview' is on.
4215
4216 'milleroptions'
4217 type: string list
4218 default: "lsize:1,csize:1,rsize:1,rpreview:dirs"
4219 scope: local
4220
4221 Configures miller view.
4222
4223 item default used for
4224 lsize:num 0 left column
4225 csize:num 1 center column (can't be disabled)
4226 rsize:num 0 right column
4227 rpreview:str dirs right column
4228
4229 *size specifies ratios of columns. Each ratio is in the range
4230 from 0 to 100 and values are adjusted to fit the limits. Zero
4231 disables a column, but central (main) column can't be disabled.
4232
4233 rpreview specifies what file-system objects should be previewed
4234 in the right column and can take two values: dirs (only directo‐
4235 ries) or all. Both options don't include parent directory
4236 ("..").
4237
4238 Example of two-column mode which is useful in combination with
4239 :view command:
4240
4241 set milleroptions=lsize:1,csize:2
4242
4243
4244 'millerview'
4245 type: boolean
4246 default: false
4247 scope: local
4248 When this option is set, directory view will be displayed in
4249 multiple cascading columns. Ignores 'lsview'.
4250
4251 'mintimeoutlen'
4252 type: integer
4253 default: 150
4254 The fracture of 'timeoutlen' in milliseconds that is waited be‐
4255 tween subsequent input polls, which affects various asynchronous
4256 operations (detecting changes made by external applications,
4257 monitoring background jobs, redrawing UI). There are no strict
4258 guarantees, however the higher this value is, the less is CPU
4259 load in idle mode.
4260
4261 'number' 'nu'
4262 type: boolean
4263 default: false
4264 scope: local
4265 Print line number in front of each file name when 'lsview' op‐
4266 tion is turned off. Use 'numberwidth' to control width of line
4267 number. Also see 'relativenumber'.
4268
4269 'numberwidth' 'nuw'
4270 type: integer
4271 default: 4
4272 scope: local
4273 Minimal number of characters for line number field.
4274
4275 'previewoptions'
4276 type: string list
4277 default: "graphicsdelay:50000"
4278
4279 Tweaks how previewing is done (in quick view, miller view's col‐
4280 umn and view mode).
4281
4282 item default meaning
4283 graphicsdelay:num 0 delay before drawing graphics (mi‐
4284 croseconds)
4285 hardgraphicsclear unset redraw screen to get rid of graph‐
4286 ics
4287 maxtreedepth:num 0 max number of levels in preview
4288 tree
4289 toptreestats unset show file counts before the tree
4290
4291 graphicsdelay is needed if terminal requires some timeout before
4292 it can draw graphics (otherwise it gets lost).
4293
4294 hardgraphicsclear seems to be necessary to get rid of sixel
4295 graphics in some terminals, where it otherwise lingers. This
4296 can cause flicker on the screen due to erasure followed by re‐
4297 drawing.
4298
4299 0 for maxtreedepth means "unlimited", 1 will only show selected
4300 directory, 2 adds its children, and so forth.
4301
4302 Default value is used when item is missing from the option.
4303
4304 'previewprg'
4305 type: string
4306 default: ""
4307 scope: local
4308
4309 External command to be used instead of preview programs config‐
4310 ured via :fileviewer command.
4311
4312 Example:
4313
4314 " always show git log in preview of files inside some repository
4315 au DirEnter '~/git-repo/**/*' setl previewprg='git log --color -- %c 2>&1'
4316
4317 'quickview'
4318 type: boolean
4319 default: false
4320 Whether quick view (:view) is currently active or not.
4321
4322 'relativenumber' 'rnu'
4323 type: boolean
4324 default: false
4325 scope: local
4326 Print relative line number in front of each file name when
4327 'lsview' option is turned off. Use 'numberwidth' to control
4328 width of line number. Various combinations of 'number' and
4329 'relativenumber' lead to such results:
4330
4331 nonumber number
4332
4333 norelativenumber | first | 1 first
4334 | second | 2 second
4335 | third | 3 third
4336
4337 relativenumber | 1 first | 1 first
4338 | 0 second |2 second
4339 | 1 third | 1 third
4340
4341
4342 'rulerformat' 'ruf'
4343 type: string
4344 default: "%l/%S "
4345 Determines the content of the ruler. Its minimal width is 13
4346 characters and it's right aligned. Following macros are sup‐
4347 ported:
4348 %= - separation point between left and right aligned halves of
4349 the line
4350 %l - file number
4351 %L - total number of files in view (including filtered out
4352 ones)
4353 %x - number of files excluded by filters
4354 %0- - old name for %x macro
4355 %P - percentage through file list (All, Top, xx% or Bot), al‐
4356 ways 3 in length
4357 %S - number of displayed files
4358 %= - separation point between left and right align items
4359 %% - literal percent sign
4360 %[ - designates beginning of an optional block
4361 %] - designates end of an optional block
4362
4363 Percent sign can be followed by optional minimum field width.
4364 Add '-' before minimum field width if you want field to be right
4365 aligned.
4366
4367 Optional blocks are ignored unless at least one macro inside of
4368 them is expanded to a non-empty value.
4369
4370 Example:
4371
4372 set rulerformat='%2l-%S%[ +%x%]'
4373
4374 'runexec'
4375 type: boolean
4376 default: false
4377 Run executable file on Enter, l or Right Arrow key. Behaviour
4378 of the last two depends on the value of the 'lsview' option.
4379
4380 'scrollbind' 'scb'
4381 type: boolean
4382 default: false
4383 When this option is set, vifm will try to keep difference of
4384 scrolling positions of two windows constant.
4385
4386 'scrolloff' 'so'
4387 type: integer
4388 default: 0
4389 Minimal number of screen lines to keep above and below the cur‐
4390 sor. If you want cursor line to always be in the middle of the
4391 view (except at the beginning or end of the file list), set this
4392 option to some large value (e.g. 999).
4393
4394 'sessionoptions' 'ssop'
4395 sessionoptions ssop
4396 type: set
4397 default: tui,state,tabs,savedirs,dhistory
4398 An equivalent of 'vifminfo' for sessions, uses the same values.
4399 When both options include the same value, data from session file
4400 has higher priority (data from vifminfo isn't necessarily com‐
4401 pletely discarded, instead it's merged with the state of a ses‐
4402 sion the same way state of multiple instances is merged on
4403 exit).
4404
4405 'shell' 'sh'
4406 type: string
4407 default: $SHELL or "/bin/sh" or "cmd" (on MS-Windows)
4408 Full path to the shell to use to run external commands. On *nix
4409 a shell argument can be supplied.
4410
4411 'shellcmdflag' 'shcf'
4412 type: string
4413 default: "-c" or "/C" (for cmd.exe on MS-Windows)
4414 Command-line option used to pass a command to 'shell'. It's
4415 used in contexts where command comes from the user.
4416
4417 Note that using this option to force interactive mode of the
4418 shell is most likely a BAD IDEA. In general interactive host
4419 and interactive child shell can't share the same terminal ses‐
4420 sion. You can't even run such a shell in background. Consider
4421 writing a wrapper for your shell that preloads aliases and com‐
4422 mands without making the shell interactive and ending up using
4423 it in a way it was not meant to be used.
4424
4425 Note that this option is ignored when 'shell' is set to Power‐
4426 Shell due to the internal use of `-encodedCommand`.
4427
4428 'shortmess' 'shm'
4429 type: charset
4430 default: "p"
4431 Contains a sequence of single-character flags. Each flag en‐
4432 ables shortening of some message displayed by vifm in the TUI.
4433 Flags:
4434 - L - display only last directory in tab line instead of full
4435 path.
4436 - M - shorten titles in windows of terminal multiplexers cre‐
4437 ated by vifm down to file name instead of using full path.
4438 - T - truncate status bar messages in the middle if they are
4439 too long to fit on the command line. "..." will appear in the
4440 middle.
4441 - p - use tilde shortening in view titles.
4442
4443
4444 'showtabline' 'stal'
4445 type: enumeration
4446 default: multiple
4447 Specifies when tab line should be displayed. Possible values:
4448 - never - never display tab line
4449 - multiple - show tab line only when there are at least two
4450 tabs
4451 - always - display tab line always
4452
4453 Alternatively 0, 1 and 2 Vim-like values are also accepted and
4454 correspond to "never", "multiple" and "always" respectively.
4455
4456
4457 'sizefmt'
4458 type: string list
4459 default: "units:iec"
4460 Configures the way size is formatted in human-friendly way.
4461
4462 item value meaning
4463 units: iec Use 1024 byte units (K or KiB,
4464 etc.).
4465 See 'iec' option.
4466 si Use 1000 byte units (KB, etc.).
4467 precision: i > 0 How many fraction digits to con‐
4468 sider.
4469 {not set} Precision of 1 for integer part
4470 < 10,
4471 0 otherwise (provides old behav‐
4472 iour).
4473 space {present} Insert space before unit sym‐
4474 bols.
4475 This is the default.
4476 nospace {present} Do not insert space before unit
4477 symbols.
4478
4479 Numbers are rounded from zero. Trailing zeros are dropped.
4480
4481 Example:
4482
4483 set sizefmt=units:iec,precision:2,nospace
4484
4485
4486 'slowfs'
4487 type: string list
4488 default: ""
4489 only for *nix
4490 A list of mounter fs name beginnings (first column in /etc/mtab
4491 or /proc/mounts) or paths prefixes for fs/directories that work
4492 too slow for you. This option can be used to stop vifm from
4493 making some requests to particular kinds of file systems that
4494 can slow down file browsing. Currently this means don't check
4495 if directory has changed, skip check if target of symbolic links
4496 exists, assume that link target located on slow fs to be a di‐
4497 rectory (allows entering directories and navigating to files via
4498 gf). If you set the option to "*", it means all the systems are
4499 considered slow (useful for cygwin, where all the checks might
4500 render vifm very slow if there are network mounts).
4501
4502 Example for autofs root /mnt/autofs:
4503
4504 set slowfs+=/mnt/autofs
4505
4506 'smartcase' 'scs'
4507 type: boolean
4508 default: false
4509 Overrides the ignorecase option if a pattern contains at least
4510 one upper case character. Only used when 'ignorecase' option is
4511 enabled.
4512
4513 'sort' type: string list
4514 default: +name on *nix and +iname on Windows
4515 scope: local
4516 Sets list of sorting keys (first item is primary key, second is
4517 secondary key, etc.):
4518 [+-]ext - extension of files and directories
4519 [+-]fileext - extension of files only
4520 [+-]name - name (including extension)
4521 [+-]iname - name (including extension, ignores case)
4522 [+-]type - file type
4523 (dir/reg/exe/link/char/block/sock/fifo)
4524 [+-]dir - directory grouping (directory < file)
4525 [+-]gid - group id (*nix only)
4526 [+-]gname - group name (*nix only)
4527 [+-]mode - file type derived from its mode (*nix only)
4528 [+-]perms - permissions string (*nix only)
4529 [+-]uid - owner id (*nix only)
4530 [+-]uname - owner name (*nix only)
4531 [+-]nlinks - number of hard links (*nix only)
4532 [+-]inode - inode number (*nix only)
4533 [+-]size - size
4534 [+-]nitems - number of items in a directory (zero for files)
4535 [+-]groups - groups extracted via regexps from 'sortgroups'
4536 [+-]target - symbolic link target (empty for other file
4537 types)
4538 [+-]atime - time accessed (e.g., read, executed)
4539 [+-]ctime - time changed (changes in metadata, like mode)
4540 [+-]mtime - time modified (when file contents is changed)
4541
4542 Note: look for st_atime, st_ctime and st_mtime in "man 2 stat"
4543 for more information on time keys.
4544
4545 '+' means ascending sort for this key, and '-' means descending
4546 sort.
4547
4548 "dir" key is somewhat similar in this regard but it's added im‐
4549 plicitly: when "dir" is not specified, sorting behaves as if it
4550 was the first key in the list. That's why if one wants sorting
4551 algorithm to mix directories and files, "dir" should be appended
4552 to sorting option, for example like this:
4553
4554 set sort+=dir
4555
4556 or
4557
4558 set sort=-size,dir
4559
4560 Value of the option is checked to include dir key and default
4561 sorting key (name on *nix, iname on Windows). Here is what hap‐
4562 pens if one of them is missing:
4563
4564 - type key is added at the beginning;
4565
4566 - default key is added at the end;
4567
4568 all other keys are left untouched (at most they are moved).
4569
4570 This option also changes view columns according to primary sort‐
4571 ing key set, unless 'viewcolumns' option is not empty.
4572
4573 'sortnumbers'
4574 type: boolean
4575 default: false
4576 scope: local
4577 Natural sort of (version) numbers within text.
4578
4579 'sortgroups'
4580 type: string
4581 default: ""
4582 scope: local
4583 Sets comma-separated list of regular expressions for group type
4584 of sorting. Double the comma to insert it literally.
4585
4586 The regular expressions are used to extract substrings of file
4587 names to serve as keys for sorting. It is essentially a way to
4588 ignore uninteresting parts of file names during sorting by name.
4589
4590 Each expression should contain at least one group or its value
4591 will be considered to be always empty. Also, only the first
4592 match of regular expression is processed.
4593
4594 The first group divides list of files into sub-groups, each of
4595 which is then sorted by substrings extracted using second regu‐
4596 lar expression and so on recursively.
4597
4598 Example:
4599 set sortgroups=-(todo|done).*
4600 this would group files with "-done" in their names and files
4601 with "-todo" separately. On ascending sorting, group containing
4602 "-done" would appear before the other one.
4603
4604 'sortorder'
4605 type: enumeration
4606 default: ascending
4607 Sets sort order for primary key: ascending, descending.
4608
4609 'statusline' 'stl'
4610 type: string
4611 default: ""
4612 Determines the content of the status line (the line right above
4613 command-line). Empty string means use same format like in pre‐
4614 vious versions. Following macros are supported:
4615
4616 - %N - line break (increases height of the status line accord‐
4617 ingly), ignores %[ %] blocks
4618
4619 - %t - file name (considering value of the 'classify' option)
4620
4621 - %T - symbolic link target (empty for other filetypes)
4622
4623 - %f - file name relative to current directory (considers 'clas‐
4624 sify')
4625
4626 - %A - file attributes (permissions on *nix or properties on
4627 Windows)
4628
4629 - %o - file permissions in octal form on *nix (nothing on Win‐
4630 dows)
4631
4632 - %u - user name or uid (if it cannot be resolved)
4633
4634 - %g - group name or gid (if it cannot be resolved)
4635
4636 - %s - file size in human readable format
4637
4638 - %E - size of selected files in human readable format, same as
4639 %s when no files are selected, except that it will never show
4640 size of ../ in visual mode, since it cannot be selected
4641
4642 - %d - file modification date (uses 'timefmt' option)
4643
4644 - %D - path of the other pane for single-pane layout
4645
4646 - %a - amount of free space available on current FS
4647
4648 - %c - size of current FS
4649
4650 - %z - short tips/tricks/hints that chosen randomly after one
4651 minute period
4652
4653 - %{<expr>} - evaluate arbitrary vifm expression '<expr>', e.g.
4654 '&sort'
4655
4656 - %* - resets or applies one of User1..User9 highlight groups;
4657 reset happens when width field is 0 or not specified, one of
4658 groups gets picked when width field is in the range from 1 to
4659 9
4660
4661 - all 'rulerformat' macros
4662
4663 Percent sign can be followed by optional minimum field width.
4664 Add '-' before minimum field width if you want field to be right
4665 aligned.
4666
4667 On Windows file properties include the following flags (upper
4668 case means flag is on):
4669 A - archive
4670 H - hidden
4671 I - content isn't indexed
4672 R - readonly
4673 S - system
4674 C - compressed
4675 D - directory
4676 E - encrypted
4677 P - reparse point (e.g. symbolic link)
4678 Z - sparse file
4679
4680 Example without colors:
4681
4682 set statusline=" %t%= %A %10u:%-7g %15s %20d %{&sort} "
4683
4684 Example with colors:
4685
4686 highlight User1 ctermbg=yellow
4687 highlight User2 ctermbg=blue ctermfg=white cterm=bold
4688 set statusline="%1* %-26t %2* %= %1* %A %2* %7u:%-7g %1* %-5s %2* %d "
4689
4690
4691 'suggestoptions'
4692 type: string list
4693 default:
4694 Controls when, for what and how suggestions are displayed. The
4695 following values are available:
4696 - normal - in normal mode;
4697 - visual - in visual mode;
4698 - view - in view mode;
4699 - otherpane - use other pane to display suggestions, when
4700 available;
4701 - delay[:num] - display suggestions after a small delay (to
4702 do not annoy if you just want to type a fast shortcut consisting
4703 of multiple keys), num specifies the delay in ms (500 by de‐
4704 fault), 'timeoutlen' at most;
4705 - keys - include shortcuts (commands and selectors);
4706 - foldsubkeys - fold multiple keys with common prefix;
4707 - marks - include marks;
4708 - registers[:num] - include registers, at most num files (5 by
4709 default).
4710
4711 'syncregs'
4712 type: string
4713 default: ""
4714 Specifies identifier of group of instances that share registers
4715 among each other. When several instances of vifm have this op‐
4716 tion set to identical value, they automatically synchronize con‐
4717 tents of their registers on operations which use them.
4718
4719 'syscalls'
4720 type: boolean
4721 default: false
4722 When disabled, vifm will rely on external applications to per‐
4723 form file-system operations, otherwise system calls are used in‐
4724 stead (much faster and supports progress tracking). The option
4725 should eventually be removed. Mostly *nix-like systems are af‐
4726 fected.
4727
4728 'tablabel'
4729 type: string
4730 default: ""
4731 When non-empty, determines format of the main part of a single
4732 tab's label.
4733
4734 When empty, tab label is set to either tab name for named tabs
4735 or to view title (usually current path) for unnamed tabs.
4736
4737 The following macros can appear in the format (see below for
4738 what a flag is):
4739
4740 - %C - flag of a current tab
4741
4742 - %N - number of the tab
4743
4744 - %T - flag of a tree mode
4745
4746 - %c - description of a custom view
4747
4748 - %n - name of the tab
4749
4750 - %p - path of the view (handles filename modifiers)
4751
4752 - %t - title of the view (affected by 'shortmess' flags)
4753
4754 - %% - literal percent sign
4755
4756 - %[ - designates beginning of an optional block
4757
4758 - %] - designates end of an optional block
4759
4760 - %*, %0* - resets highlighting
4761
4762 - %1-%9 - applies one of User1..User9 highlight groups
4763
4764 In global tabs the view in bullets above refers to currently ac‐
4765 tive view of that tab.
4766
4767 Flag macros are a special kind of macros that always expand to
4768 an empty value and are ment to be used inside optional blocks to
4769 control their visibility.
4770
4771 Optional blocks are ignored unless at least one macro inside of
4772 them is expanded to a non-empty value or is a set flag macro.
4773
4774 " %[(%n)%] -- optional name of the tab
4775 " %[ -- optional description of the view
4776 " %[%T{tree}%] -- mark of tree mode
4777 " %[{%c}%] -- description of custom view
4778 " @ -- just an extra separator before the path
4779 ' %]
4780 " %p:t -- tail part of view's location
4781 set tablabel=%[(%n)%]%[%[%T{tree}%]%[{%c}%]@%]%p:t
4782
4783 'tabprefix'
4784 type: string
4785 default: "[%N:"
4786 Determines prefix of a tab's label. Formatting is done as for
4787 'tablabel' option.
4788
4789 'tabscope'
4790 type: enumeration
4791 default: global
4792 Picks style of tabs, which defines what a single tab contains.
4793 Possible values:
4794 - global - tab describes complete UI of two views and how they
4795 are arranged
4796 - pane - tab is located "inside" a pane and manages it and
4797 quick view
4798
4799 'tabstop' 'ts'
4800 type: integer
4801 default: value from curses library
4802 Number of spaces that a Tab in the file counts for.
4803
4804 'tabsuffix'
4805 type: string
4806 default: "]"
4807 Determines suffix of a tab's label. Formatting is done as for
4808 'tablabel' option.
4809
4810 'timefmt'
4811 type: string
4812 default: "%m/%d %H:%M"
4813 Format of time in file list. See "man 1 date" or "man 3 strf‐
4814 time" for details.
4815
4816 'timeoutlen' 'tm'
4817 type: integer
4818 default: 1000
4819 The time in milliseconds that is waited for a mapped key in case
4820 of already typed key sequence is ambiguous.
4821
4822 'title'
4823 type: boolean
4824 default: true when title can be restored, false otherwise
4825 When enabled, title of the terminal or terminal multiplexer's
4826 window is updated according to current location. Because not
4827 all terminals support setting title, this works only if `$TERM`
4828 value matches one of the following conditions:
4829 - equals "xterm" or starts with "xterm-"
4830 - equals "rxvt" or starts with "rxvt-"
4831 - equals "screen" or starts with "screen-"
4832 - equals "aterm"
4833 - equals "Eterm"
4834
4835 'trash'
4836 type: boolean
4837 default: true
4838 Use trash directory. See "Trash directory" section below.
4839
4840 'trashdir'
4841 type: string
4842 default:
4843 on *nix:
4844 "%r/.vifm-Trash-%u,$XDG_DATA_HOME/vifm/Trash,%r/.vifm-Trash"
4845 or
4846 "%r/.vifm-Trash-%u,$VIFM/Trash,%r/.vifm-Trash"
4847 on Windows:
4848 "%r/.vifm-Trash,$XDG_DATA_HOME/vifm/Trash"
4849 or
4850 "%r/.vifm-Trash,$VIFM/vifm/Trash"
4851 List of trash directory path specifications, separated with com‐
4852 mas. Each list item either defines an absolute path to trash
4853 directory or a path relative to a mount point root when list el‐
4854 ement starts with "%r/". Value of the option can contain envi‐
4855 ronment variables (of form "$envname"), which will be expanded
4856 (prepend $ with a slash to prevent expansion). Environment
4857 variables are expanded when the option is set.
4858
4859 On *nix, if element ends with "%u", the mark is replaced with
4860 real user ID and permissions are set so that only that only
4861 owner is able to use it.
4862 Note that even this setup is not completely secure when combined
4863 with "%r/" and it's overall safer to keep files in home direc‐
4864 tory, but that implies cost of copying files between partitions.
4865
4866 When new file gets cut (deleted) vifm traverses each element of
4867 the option in the order of their appearance and uses first trash
4868 directory that it was able to create or that is already
4869 writable.
4870
4871 Default value tries to use trash directory per mount point and
4872 falls back to trash common trash directory on failure.
4873
4874 Will attempt to create the directory if it does not exist. See
4875 "Trash directory" section below.
4876
4877 'tuioptions' 'to'
4878 type: charset
4879 default: "psv"
4880 Each flag configures some aspect of TUI appearance. The flags
4881 are:
4882 p - when included:
4883 * file list inside a pane gets additional single character
4884 padding on left and right sides;
4885 * quick view and view mode get single character padding.
4886 s - when included, left and right borders (side borders, hence
4887 "s" character) are visible.
4888 u - use Unicode characters in the TUI (Unicode ellipsis instead
4889 of "...").
4890 v - vary width of vertical middle border to equalize view sizes.
4891
4892 Each pane title contains the path of the listed directory. If
4893 too large, the path is truncated on the left for the active pane
4894 and on the right for the other pane. This can be modified with:
4895
4896 l - truncation is always on the left.
4897 r - truncation is always on the right.
4898
4899 'undolevels' 'ul'
4900 type: integer
4901 default: 100
4902 Maximum number of changes that can be undone. Note that here
4903 single file operation is used as a unit, not operation, i.e.
4904 deletion of 101 files will exceed default limit.
4905
4906 'vicmd'
4907 type: string
4908 default: "vim"
4909 Command used to edit files in various contexts. Ampersand sign
4910 at the end (regardless whether it's preceded by space or not)
4911 means backgrounding of command.
4912
4913 Background flag is ignored in certain context where vifm waits
4914 for the editor to finish. Such contexts include any command
4915 that spawns editor to change list of file names or a command,
4916 with :rename being one example. `-f` is also appended to pre‐
4917 vent forking in such cases, so the command needs to handle the
4918 flag.
4919
4920 Additionally `+{num}` and `+'call cursor()'` arguments are used
4921 to position cursor when location is known.
4922
4923 'viewcolumns'
4924 type: string
4925 default: ""
4926 scope: local
4927 Format string containing list of columns in the view. When this
4928 option is empty, view columns to show are chosen automatically
4929 using sorting keys (see 'sort') as a base. Value of this option
4930 is ignored if 'lsview' is set. See "Column view" section below
4931 for format description.
4932
4933 An example of setting the options for both panes (note :windo
4934 command):
4935
4936 windo set viewcolumns=-{name}..,6{size},11{perms}
4937
4938 'vixcmd'
4939 type: string
4940 default: value of 'vicmd'
4941 Same as 'vicmd', but takes precedence over it when running in‐
4942 side a graphical environment.
4943
4944 'vifminfo'
4945 type: set
4946 default: bookmarks,bmarks
4947 Controls what will be saved in the $VIFM/vifminfo file.
4948
4949 bmarks - named bookmarks (see :bmark command)
4950 bookmarks - marks, except special ones like '< and '>
4951 tui - state of the user interface (sorting, number of
4952 windows, quick
4953 view state, active view)
4954 dhistory - directory history
4955 state - file name and dot filters and terminal multiplex‐
4956 ers integration
4957 state
4958 cs - primary color scheme
4959 savedirs - save last visited directory
4960 chistory - command line history
4961 ehistory - expression register history (see description of
4962 Ctrl+R =
4963 in command-line mode)
4964 shistory - search history (/ and ? commands)
4965 phistory - prompt history
4966 fhistory - history of local filter (see description of the
4967 "=" normal mode
4968 command)
4969 dirstack - directory stack overwrites previous stack, unless
4970 stack of
4971 current instance is empty
4972 registers - registers content
4973 tabs - global or pane tabs
4974 options - all options that can be set with the :set command
4975 (obsolete)
4976 filetypes - associated programs and viewers (obsolete)
4977 commands - user defined commands (see :command description)
4978 (obsolete)
4979
4980 'vimhelp'
4981 type: boolean
4982 default: false
4983 Use vim help format.
4984
4985 'wildmenu' 'wmnu'
4986 type: boolean
4987 default: false
4988 Controls whether possible matches of completion will be shown
4989 above the command line.
4990
4991 'wildstyle'
4992 type: enumeration
4993 default: bar
4994 Picks presentation style of wild menu. Possible values:
4995 - bar - one-line with left-to-right cursor
4996 - popup - multi-line with top-to-bottom cursor
4997
4998 'wordchars'
4999 type: string list
5000 default: "1-8,14-31,33-255" (that is all non-whitespace charac‐
5001 ters)
5002 Specifies which characters in command-line mode should be con‐
5003 sidered as part of a word. Value of the option is comma-sepa‐
5004 rated list of ranges. If both endpoints of a range match, sin‐
5005 gle endpoint is enough (e.g. "a" = "a-a"). Both endpoints are
5006 inclusive. There are two accepted forms: character representing
5007 itself or number encoding character according to ASCII table.
5008 In case of ambiguous characters (dash, comma, digit) use numeric
5009 form. Accepted characters are in the range from 0 to 255. Any
5010 Unicode character with code greater than 255 is considered to be
5011 part of a word.
5012
5013 The option affects Alt-D, Alt-B and Alt-F, but not Ctrl-W. This
5014 is intentionally to allow two use cases:
5015
5016 - Moving by WORDS and deletion by words.
5017 - Moving by words and deletion by WORDS.
5018
5019 To get the latter use the following mapping:
5020
5021 cnoremap <c-w> <a-b><a-d>
5022
5023 Also used for abbreviations.
5024
5025 'wrap' type: boolean
5026 default: true
5027 Controls whether to wrap text in quick view.
5028
5029 'wrapscan' 'ws'
5030 type: boolean
5031 default: true
5032 Searches wrap around end of the list.
5033
5035 Map arguments
5036
5037 LHS of mappings can be preceded by arguments which take the form of
5038 special sequences:
5039
5040 <silent>
5041 Postpone UI updates until RHS is completely processed.
5042
5043 <wait> In case of builtin mapping causing conflict for a user-defined
5044 mapping (e.g., `t` builtin to a partially typed `ta` user-de‐
5045 fined mapping), ignore the builtin mapping and wait for input
5046 indefinitely as opposed to default behaviour of triggering the
5047 builtin mapping after a delay defined by 'timeoutlen'. Example:
5048
5049 nnoremap <wait> tw :set wrap!<cr>
5050 nnoremap <wait> tn :set number!<cr>
5051 nnoremap <wait> tr :set relativenumber!<cr>
5052
5053 Special sequences
5054
5055 Since it's not easy to enter special characters there are several spe‐
5056 cial sequences that can be used in place of them. They are:
5057
5058 <cr> Enter key.
5059
5060 <esc> Escape key.
5061
5062 <space>
5063 Space key.
5064
5065 <lt> Less-than character (<).
5066
5067 <nop> provides a way to disable a mapping (by mapping it to <nop>).
5068
5069 <bs> Backspace key (see key conflict description below).
5070
5071 <tab> <s-tab>
5072 Tabulation and Shift+Tabulation keys.
5073
5074 <home> <end>
5075 Home/End.
5076
5077 <left> <right> <up> <down>
5078 Arrow keys.
5079
5080 <pageup> <pagedown>
5081 PageUp/PageDown.
5082
5083 <del> <delete>
5084 Delete key. <del> and <delete> mean different codes, but
5085 <delete> is more common.
5086
5087 <insert>
5088 Insert key.
5089
5090 <s-home> <s-end>
5091 <s-left> <s-right> <s-up> <s-down>
5092 <s-pageup> <s-pagedown>
5093 <s-delete> <s-insert>
5094 Shift + one of the keys from above, if terminal and its ter‐
5095 minfo supports it.
5096
5097 <c-a>,<c-b>,...,<c-z>,<c-[>,<c->,<c-]>,<c-^>,<c-_>
5098 Control + some key (see key conflict description below).
5099
5100 <c-@> {only for *nix}
5101 Control + Space.
5102
5103 <a-a>,<a-b>,...,<a-z>
5104 <m-a>,<m-b>,...,<m-z>
5105 <a-0>,<a-1>,...,<a-9> {only for *nix}
5106 <m-0>,<m-1>,...,<m-9> {only for *nix}
5107 Alt + some key.
5108
5109 <a-s-a>,<a-s-b>,...,<a-s-z> {only for *nix}
5110 <s-a-a>,<s-a-b>,...,<s-a-z> {only for *nix}
5111 <m-s-a>,<m-s-b>,...,<m-s-z> {only for *nix}
5112 <s-m-a>,<s-m-b>,...,<s-m-z> {only for *nix}
5113 Alt + Shift + some key.
5114
5115 <a-c-a>,<a-c-b>,...,<a-c-z> {only for *nix}
5116 <m-c-a>,<m-c-b>,...,<m-c-z> {only for *nix}
5117 Alt + Ctrl + some key.
5118
5119 <f0> - <f63>
5120 Functional keys.
5121
5122 <c-f1> - <c-f12> {only for MS-Windows}
5123 functional keys with Control key pressed.
5124
5125 <a-f1> - <a-f12> {only for MS-Windows}
5126 functional keys with Alt key pressed.
5127
5128 <s-f1> - <s-f12> {only for MS-Windows}
5129 functional keys with Shift key pressed.
5130
5131 Note that due to the way terminals process their input, several key‐
5132 board keys might be mapped to single key code, for example:
5133
5134 - <cr> and <c-m>;
5135
5136 - <tab> and <c-i>;
5137
5138 - <c-h> and <bs> and <del>;
5139
5140 - etc.
5141
5142 Most of the time they are defined consistently and don't cause sur‐
5143 prises, but <c-h> and <bs> are treated differently in different envi‐
5144 ronments (although they match each other all the time), that's why they
5145 correspond to different keys in vifm. As a consequence, if you map <c-
5146 h> or <bs> be sure to repeat the mapping with the other one so that it
5147 works in all environments. Alternatively, provide your mapping in one
5148 form and add one of the following:
5149
5150 " if mappings with <c-h> in the LHS work
5151 map <c-h> <bs>
5152 " if mappings with <bs> in the LHS work
5153 map <bs> <c-h>
5154
5155 Also sometimes neither of them might work and it's <del> key which cor‐
5156 responds to your backspace (don't mind the name).
5157
5158 Whitespace
5159
5160 vifm removes whitespace characters at the beginning and end of com‐
5161 mands. That's why you may want to use <space> at the end of rhs in
5162 mappings. For example:
5163
5164 cmap <f1> man<space>
5165
5166 will put "man " in line when you hit the <f1> key in the command line
5167 mode.
5168
5170 Supported expressions is a subset of what VimL provides.
5171
5172 Expression syntax summary, from least to most significant:
5173
5174 expr1 expr2
5175 expr2 || expr2 .. logical OR
5176
5177 expr2 expr3
5178 expr3 && expr3 .. logical AND
5179
5180 expr3 expr4
5181 expr4 == expr4 equal
5182 expr4 != expr4 not equal
5183 expr4 > expr4 greater than
5184 expr4 >= expr4 greater than or equal
5185 expr4 < expr4 smaller than
5186 expr4 <= expr4 smaller than or equal
5187
5188 expr4 expr5
5189 expr5 + expr5 .. number addition
5190 expr5 - expr5 .. number subtraction
5191
5192 expr5 expr6
5193 expr6 . expr6 .. string concatenation
5194
5195 expr6 expr7
5196 - expr6 unary minus
5197 + expr6 unary plus
5198 ! expr6 logical NOT
5199
5200 expr7 number number constant
5201 "string" string constant, \ is special
5202 'string' string constant, ' is doubled
5203 &option option value
5204 $VAR environment variable
5205 v:var builtin variable
5206 function(expr1, ...) function call
5207 (expr1) nested expression
5208
5209 ".." indicates that the operations in this level can be concatenated.
5210
5211 expr1
5212 -----
5213 expr2 || expr2
5214
5215 Arguments are converted to numbers before evaluation.
5216
5217 Result is non-zero if at least one of arguments is non-zero.
5218
5219 It's right associative and with short-circuiting, so sub-expressions
5220 are evaluated from left to right until result of whole expression is
5221 determined (i.e., until first non-zero) or end of the expression.
5222
5223 expr2
5224 -----
5225 expr3 && expr3
5226
5227 Arguments are converted to numbers before evaluation.
5228
5229 Result is non-zero only if both arguments are non-zero.
5230
5231 It's right associative and with short-circuiting, so sub-expressions
5232 are evaluated from left to right until result of whole expression is
5233 determined (i.e., until first zero) or end of the expression.
5234
5235 expr3
5236 -----
5237 expr4 {cmp} expr4
5238
5239 Compare two expr4 expressions, resulting in a 0 if it evaluates to
5240 false or 1 if it evaluates to true.
5241
5242 equal ==
5243 not equal !=
5244 greater than >
5245 greater than or equal >=
5246 smaller than <
5247 smaller than or equal <=
5248
5249 Examples:
5250
5251 'a' == 'a' == 1
5252 'a' > 'b' == 1
5253 'a' == 'b' == 0
5254 '2' > 'b' == 0
5255 2 > 'b' == 1
5256 2 > '1b' == 1
5257 2 > '9b' == 0
5258 -1 == -'1' == 1
5259 0 == '--1' == 1
5260
5261 expr4
5262 -----
5263 expr5 + expr5 .. number addition expr5 - expr5 .. number sub‐
5264 traction
5265
5266 Examples:
5267
5268 1 + 3 - 3 == 1
5269 1 + '2' == 3
5270
5271 expr5
5272 -----
5273 expr6 . expr6 .. string concatenation
5274
5275 Examples:
5276
5277 'a' . 'b' == 'ab'
5278 'aaa' . '' . 'c' == 'aaac'
5279
5280 expr6
5281 -----
5282
5283 - expr6 unary minus
5284 + expr6 unary plus
5285 ! expr6 logical NOT
5286
5287 For '-' the sign of the number is changed.
5288 For '+' the number is unchanged.
5289 For '!' non-zero becomes zero, zero becomes one.
5290
5291 A String will be converted to a Number first.
5292
5293 These operations can be repeated and mixed. Examples:
5294
5295 --9 == 9
5296 ---9 == -9
5297 -+9 == 9
5298 !-9 == 0
5299 !'' == 1
5300 !'x' == 0
5301 !!9 == 1
5302
5303 expr7
5304 -----
5305
5306 number number constant
5307 -----
5308
5309 Decimal number. Examples:
5310
5311 0 == 0
5312 0000 == 0
5313 01 == 1
5314 123 == 123
5315 10000 == 10000
5316
5317 string
5318 ------
5319 "string" string constant
5320
5321 Note that double quotes are used.
5322
5323 A string constant accepts these special characters:
5324 \b backspace <bs>
5325 \e escape <esc>
5326 \n newline
5327 \r return <cr>
5328 \t tab <tab>
5329 \\ backslash
5330 \" double quote
5331
5332 Examples:
5333
5334 "\"Hello,\tWorld!\""
5335 "Hi,\nthere!"
5336
5337 literal-string
5338 --------------
5339 'string' string constant
5340
5341 Note that single quotes are used.
5342
5343 This string is taken as it is. No backslashes are removed or have a
5344 special meaning. The only exception is that two quotes stand for one
5345 quote.
5346
5347 Examples:
5348
5349 'All\slashes\are\saved.'
5350 'This string contains doubled single quotes ''here'''
5351
5352 option
5353 ------
5354 &option option value (local one is preferred, if exists)
5355 &g:option global option value &l:option local
5356 option value
5357
5358 Examples:
5359
5360 echo 'Terminal size: '.&columns.'x'.&lines
5361 if &columns > 100
5362
5363 Any valid option name can be used here (note that "all" in ":set all"
5364 is a pseudo option). See ":set options" section above.
5365
5366 environment variable
5367 --------------------
5368 $VAR environment variable
5369
5370 The String value of any environment variable. When it is not defined,
5371 the result is an empty string.
5372
5373 Examples:
5374
5375 'This is my $PATH env: ' . $PATH
5376 'vifmrc at ' . $MYVIFMRC . ' is used.'
5377
5378 builtin variable
5379 --------------------
5380 v:var builtin variable
5381
5382 Information exposed by vifm for use in scripting.
5383
5384 v:count
5385 count passed to : command, 0 by default. Can be used in mappings to
5386 passthe count to a different command.
5387 v:count1
5388 same as v:count, but 1 by default.
5389 v:jobcount
5390 number of active jobs (as can be seen in the :jobs menu).
5391 v:session
5392 name of the current session or empty string.
5393 v:servername
5394 See below.
5395
5396 function call
5397 -------------
5398 function(expr1, ...) function call
5399
5400 See "Functions" section below.
5401
5402 Examples:
5403
5404 "'" . filetype('.') . "'"
5405 filetype('.') == 'reg'
5406
5407 expression nesting
5408 ------------------
5409 (expr1) nested expression
5410
5411 Groups any other expression of arbitrary complexity enforcing order in
5412 which operators are applied.
5413
5414
5416 USAGE RESULT DESCRIPTION
5417
5418 chooseopt({opt}) String Queries choose parameters passed on
5419 startup.
5420 executable({expr}) Integer Checks whether {expr} command avail‐
5421 able.
5422 expand({expr}) String Expands special keywords in {expr}.
5423 extcached({cache}, {path}, {extcmd})
5424 String Caches output of {extcmd} per {cache}
5425 and
5426 {path} combination.
5427 filetype({fnum} [, {resolve}])
5428 String Returns file type from position.
5429 fnameescape({expr}) String Escapes {expr} for use in a :command.
5430 getpanetype() String Returns type of current pane.
5431 has({property}) Integer Checks whether instance has {prop‐
5432 erty}.
5433 layoutis({type}) Integer Checks whether layout is of type
5434 {type}.
5435 paneisat({loc}) Integer Checks whether current pane is at
5436 {loc}.
5437 system({command}) String Executes shell command and returns
5438 its output.
5439 tabpagenr([{arg}]) Integer Returns number of current or last
5440 tab.
5441 term({command}) String Like system(), but for interactive
5442 commands.
5443
5444 chooseopt({opt})
5445
5446 Retrieves values of options related to file choosing. {opt} can be one
5447 of:
5448 files returns argument of --choose-files or empty string
5449 dir returns argument of --choose-dir or empty string
5450 cmd returns argument of --on-choose or empty string
5451 delimiter returns argument of --delimiter or the default one (\n)
5452
5453 executable({expr})
5454
5455 If {expr} is absolute or relative path, checks whether path destination
5456 exists and refers to an executable, otherwise checks whether command
5457 named {expr} is present in directories listed in $PATH. Checks for
5458 various executable extensions on Windows. Returns boolean value de‐
5459 scribing result of the check.
5460
5461 Example:
5462
5463 " use custom default viewer script if it's available and installed
5464 " in predefined system directory, otherwise try to find it elsewhere
5465 if executable('/usr/local/bin/defviewer')
5466 fileview * /usr/local/bin/defviewer %c
5467 else
5468 if executable('defviewer')
5469 fileview * defviewer %c
5470 endif
5471 endif
5472
5473 expand({expr})
5474
5475 Expands environment variables and macros in {expr} (in this order).
5476 Returns a string. See "Command macros" section above.
5477
5478 Examples:
5479
5480 " percent sign
5481 :echo expand('%%')
5482 " the last part of directory name of the other pane
5483 :echo expand('%D:t')
5484 " $PATH environment variable (same as `:echo $PATH`)
5485 :echo expand('$PATH')
5486 " full path to the current file with backslashes
5487 :echo expand('%c:p:gs!/!\!')
5488
5489 extcached({cache}, {path}, {extcmd})
5490
5491 Caches value of {extcmd} external command automatically updating it as
5492 necessary based on monitoring change date of a {path}. The cache is
5493 invalidated when file or its meta-data is updated. A single path can
5494 have multiple caches associated with it.
5495
5496 {path} value is normalized, but symbolic links in it aren't resolved.
5497
5498 Example:
5499
5500 " display number and size of blocks actually used by a file or directory
5501 set statusline+=" Uses: %{ extcached('uses',
5502 expand('%c'),
5503 expand('stat --format=%%bx%%B %c')) }"
5504
5505 filetype({fnum} [, {resolve}])
5506
5507 The result is a string, which represents file type and is one of the
5508 list:
5509 exe executables
5510 reg regular files
5511 link symbolic links
5512 broken broken symbolic links (appears only when resolving)
5513 dir directories
5514 char character devices
5515 block block devices
5516 fifo pipes
5517 sock *nix domain sockets
5518 ? unknown file type (should not normally happen) or
5519 non-file (pseudo-entries in compare view)
5520
5521 The result can also be an empty string in case of invalid argument.
5522
5523 Parameter {fnum} can have following values:
5524 - '.' to get type of file under the cursor in the active pane
5525 - numerical value base 1 to get type of file on specified line num‐
5526 ber
5527
5528 Optional parameter {resolve} is treated as a boolean and specifies
5529 whether symbolic links should be resolved.
5530
5531 fnameescape({expr})
5532
5533 Escapes parameter to make it suitable for use as an argument of a :com‐
5534 mand. List of escaped characters includes %, which is doubled.
5535
5536 Usage example:
5537
5538 " navigate to most recently modified file in current directory
5539 execute 'goto' fnameescape(system('ls -t | head -1'))
5540
5541 getpanetype()
5542
5543 Retrieves string describing type of current pane. Possible return val‐
5544 ues:
5545 regular regular file listing of some directory
5546 custom custom file list (%u)
5547 very-custom very custom file list (%U)
5548 tree tree view
5549
5550 has({property})
5551
5552 Allows examining internal parameters from scripts to e.g. figure out
5553 environment in which application is running. Returns 1 if property is
5554 true/present, otherwise 0 is returned. Currently the following proper‐
5555 ties are supported (anything else will yield 0):
5556 unix runs in *nix-like environment (including Cygwin)
5557 win runs on Windows
5558 #* whether particular Lua handler exists
5559
5560 Usage example:
5561
5562 " skip user/group on Windows
5563 if !has('win')
5564 let $RIGHTS = '%10u:%-7g '
5565 endif
5566
5567 execute 'set' 'statusline=" %t%= %A '.$RIGHTS.'%15E %20d "'
5568
5569 layoutis({type})
5570
5571 Checks whether current interface layout is {type} or not, where {type}
5572 can be:
5573 only single-pane mode
5574 split double-pane mode (either vertical or horizontal split)
5575 vsplit vertical split (left and right panes)
5576 hsplit horizontal split (top and bottom panes)
5577
5578 Usage example:
5579
5580 " automatically split vertically before enabling preview
5581 :nnoremap w :if layoutis('only') | vsplit | endif | view!<cr>
5582
5583 paneisat({loc})
5584
5585 Checks whether position of active pane in current layout matches one of
5586 the following locations:
5587 top pane reaches top border
5588 bottom pane reaches bottom border
5589 left pane reaches left border
5590 right pane reaches right border
5591
5592 system({command})
5593
5594 Runs the command in shell and returns its output (joined standard out‐
5595 put and standard error streams). All trailing newline characters are
5596 stripped to allow easy appending to command output. Ctrl-C should in‐
5597 terrupt the command.
5598
5599 Use this function to consume output of external commands that don't re‐
5600 quire user interaction and term() for interactive commands that make
5601 use of terminal and are capable of handling stream redirection.
5602
5603 Usage example:
5604
5605 " command to enter .git/ directory of git-repository (when ran inside one)
5606 command! cdgit :execute 'cd' fnameescape(system('git rev-parse --git-dir'))
5607
5608 tabpagenr([{arg}])
5609
5610 When called without arguments returns number of current tab page base
5611 one.
5612
5613 When called with "$" as an argument returns number of the last tab page
5614 base one, which is the same as number of tabs.
5615
5616 term({command})
5617
5618 Same as system() function, but user interface is shutdown during the
5619 execution of the command, which makes sure that external interactive
5620 applications won't affect the way terminal is used by vifm.
5621
5622 Usage example:
5623
5624 " command to change directory by picking it via fzf
5625 command! fzfcd :execute 'cd'
5626 fnameescape(term('find -type d | fzf 2> /dev/tty'))
5627
5629 When navigating to some path from a menu there is a difference in end
5630 location depending on whether path has trailing slash or not. Files
5631 normally don't have trailing slashes so "file/" won't work and one can
5632 only navigate to a file anyway. On the other hand with directories
5633 there are two options: navigate to a directory or inside of it. To al‐
5634 low both use cases, the first one is used on paths like "dir" and the
5635 second one for "dir/".
5636
5637 Commands
5638
5639 :range navigate to a menu line.
5640
5641 :exi[t][!] :q[uit][!] :x[it][!]
5642 leave menu mode.
5643
5644 :noh[lsearch]
5645 reset search match highlighting.
5646
5647 :w[rite] {dest}
5648 write all menu lines into file specified by {dest}.
5649
5650 General
5651
5652 j, Ctrl-N - move down.
5653 k, Ctrl-P - move up.
5654 Enter, l - select and exit the menu.
5655 Ctrl-L - redraw the menu.
5656
5657 Escape, Ctrl-C, ZZ, ZQ, q - quit.
5658
5659 In all menus
5660
5661 The following set of keys has the same meaning as in normal mode.
5662
5663 Ctrl-B, Ctrl-F
5664 Ctrl-D, Ctrl-U
5665 Ctrl-E, Ctrl-Y
5666 /, ?
5667 n, N
5668 [count]G, [count]gg
5669 H, M, L
5670 zb, zt, zz
5671
5672 zh - scroll menu items [count] characters to the right.
5673 zl - scroll menu items [count] characters to the left.
5674 zH - scroll menu items half of screen width characters to the right.
5675 zL - scroll menu items half of screen width characters to the left.
5676
5677 : - enter command line mode for menus (currently only :exi[t], :q[uit],
5678 :x[it] and :{range} are supported).
5679
5680 b - interpret content of the menu as list of paths and use it to create
5681 custom view in place of previously active pane. See "Custom views"
5682 section below.
5683 B - same as above, but creates unsorted view.
5684
5685 v - load menu content into quickfix list of the editor (Vim compatible
5686 by assumption) or if list doesn't have separators after file names
5687 (colons) open each line as a file name.
5688
5689
5690 Below is description of additional commands and reaction on selection
5691 in some menus and dialogs.
5692
5693 Apropos menu
5694
5695 Selecting menu item runs man on a given topic. Menu won't be closed
5696 automatically to allow view several pages one by one.
5697
5698 Command-line mode abbreviations menu
5699
5700 Type dd on an abbreviation to remove it.
5701
5702 c leaves menu preserving file selection and inserts right-hand side of
5703 selected command into command-line.
5704
5705 Color scheme menu
5706
5707 Selecting name of a color scheme applies it the same way as if ":col‐
5708 orscheme <name>" was executed on the command-line.
5709
5710 Commands menu
5711
5712 Selecting command executes it with empty arguments (%a).
5713
5714 dd on a command to remove.
5715
5716 Marks menu
5717
5718 Selecting mark navigates to it.
5719
5720 dd on a mark to remove it.
5721
5722 Bookmarks menu
5723
5724 Selecting a bookmark navigates to it.
5725
5726 Type dd on a bookmark to remove it.
5727
5728 gf and e also work to make it more convenient to bookmark files.
5729
5730 Trash (:lstrash) menu
5731
5732 r on a file name to restore it from trash.
5733
5734 dd deletes file under the cursor.
5735
5736 Trashes (:trashes) menu
5737
5738 dd empties selected trash in background.
5739
5740 Directory history and Trashes menus
5741
5742 Selecting directory name will change directory of the current view as
5743 if :cd command was used.
5744
5745 Directory stack menu
5746
5747 Selecting directory name will rotate stack to put selected directory
5748 pair at the top of the stack.
5749
5750 File (:file) menu
5751
5752 Commands from vifmrc or typed in command-line are displayed above empty
5753 line. All commands below empty line are from .desktop files.
5754
5755 c leaves menu preserving file selection and inserts command after :! in
5756 command-line mode.
5757
5758 Grep, find, locate, bookmarks and user menu with navigation (%M macro)
5759
5760 gf - navigate previously active view to currently selected item.
5761 Leaves menu mode except for grep menu. Pressing Enter key has the same
5762 effect.
5763
5764 e - open selected path in the editor, stays in menu mode.
5765
5766 c - leave menu preserving file selection and insert file name after :!
5767 in command-line mode.
5768
5769 User menu without navigation (%m macro)
5770
5771 c leaves menu preserving file selection and inserts whole line after :!
5772 in command-line mode.
5773
5774 Grep menu
5775
5776 Selecting file (via Enter or l key) opens it in editor set by 'vicmd'
5777 at given line number. Menu won't be closed automatically to allow
5778 viewing more than one result.
5779
5780 See above for "gf" and "e" keys description.
5781
5782 Command-line history menu
5783
5784 Selecting an item executes it as command-line command, search query or
5785 local filter.
5786
5787 c leaves menu preserving file selection and inserts line into command-
5788 line of appropriate kind.
5789
5790 Volumes menu
5791
5792 Selecting a drive navigates previously active pane to the root of that
5793 drive.
5794
5795 Fileinfo dialog
5796
5797 Enter, q - close dialog
5798
5799 Sort dialog
5800
5801 h, Space - switch ascending/descending.
5802 q - close dialog
5803
5804 One shortcut per sorting key (see the dialog).
5805
5806 Attributes (permissions or properties) dialog
5807
5808 h, Space - check/uncheck.
5809 q - close dialog
5810 r - (*nix only) (un)set all read bits
5811 w - (*nix only) (un)set all write bits
5812 x - (*nix only) (un)set all execute bits
5813 s - (*nix only) (un)set all special (SetUID, SetGID, Sticky) bits
5814 e - (*nix only) (un)set recursion (for directories only)
5815
5816 Item states:
5817
5818 - * - checked flag.
5819
5820 - X - means that it has different value for files in selection.
5821
5822 - d (*nix only) - (only for execute flags) means u-x+X, g-x+X or o-x+X
5823 argument for the chmod program. If you're not on OS X and want to
5824 remove execute permission bit from all files, but preserve it for di‐
5825 rectories, set all execute flags to 'd' and check 'Set Recursively'
5826 flag.
5827
5828 Jobs menu
5829
5830 dd requests cancellation of job under cursor. The job won't be removed
5831 from the list, but marked as being cancelled (if cancellation was suc‐
5832 cessfully requested). A message will pop up if the job has already
5833 stopped. Note that on Windows cancelling external programs like this
5834 might not work, because their parent shell doesn't have any windows.
5835
5836 e key displays errors of selected job if any were collected. They are
5837 displayed in a new menu, but you can get back to jobs menu by pressing
5838 h.
5839
5840
5841 Undolist menu
5842
5843 r - reset undo position to group under the cursor.
5844
5845
5846 Media menu
5847
5848 Selecting a device either mounts (if it wasn't mounted yet) or navi‐
5849 gates to its first mount point.
5850
5851 Selecting a mount point navigates to it.
5852
5853 Selecting "not mounted" line causes mounting.
5854
5855 Selecting any other line does nothing.
5856
5857 r - reload the list.
5858
5859 m - mount/unmount device (cursor should be positioned on lines under
5860 device information).
5861
5862 [ - put cursor on the previous device.
5863
5864 ] - put cursor on the next device.
5865
5866
5867 Plugins menu
5868
5869 e - display log messages of selected plugin if any were collected.
5870 They are displayed in a new menu, but you can get back to plugins menu
5871 by pressing h.
5872
5873 gf - navigate previously active view to the location of selected
5874 plugin. Leaves menu mode.
5875
5876
5878 Definition
5879
5880 Normally file views contain list of files from a single directory, but
5881 sometimes it's useful to populate them with list of files that do not
5882 belong to the same directory, which is what custom views are for.
5883
5884 Presentation
5885
5886 Custom views are still related to directory they were in before custom
5887 list was loaded. Path to that directory (original directory) can be
5888 seen in the title of a custom view.
5889
5890 Files in same directory have to be named differently, this doesn't hold
5891 for custom views thus seeing just file names might be rather confusing.
5892 In order to give an idea where files come from and when possible, rela‐
5893 tive paths to original directory of the view is displayed, otherwise
5894 full path is used instead.
5895
5896 Custom views normally don't contain any inexistent files.
5897
5898 Navigation
5899
5900 Custom views have some differences related to navigation in regular
5901 views.
5902
5903 gf - acts similar to gf on symbolic links and navigates to the file at
5904 its real
5905 location.
5906
5907 h - go to closes parent node in tree view, otherwise return to the
5908 original directory.
5909
5910 gh - return to the original directory.
5911
5912 Opening ".." entry also causes return to the original directory.
5913
5914 History
5915
5916 Custom list exists only while it's visible, once left one can't return
5917 to it, so there is no appearances of it in any history.
5918
5919 Filters
5920
5921 Only local filter affects content of the view. This is intentional,
5922 presumably if one loads list, precisely that list should be displayed
5923 (except for inexistent paths, which are ignored).
5924
5925 Search
5926
5927 Although directory names are visible in listing, they are not search‐
5928 able. Only file names are taken into account (might be changed in fu‐
5929 ture, searching whole lines seems quite reasonable).
5930
5931 Sorting
5932
5933 Contrary to search sorting by name works on whole visible part of file
5934 path.
5935
5936 Highlight
5937
5938 Whole file name is highlighted as one entity, even if there are direc‐
5939 tory elements.
5940
5941 Updates
5942
5943 Reloads can occur, though they are not automatic due to files being
5944 scattered among different places. On a reload, inexistent files are
5945 removed and meta-data of all other files is updated.
5946
5947 Once custom view forgets about the file, it won't add it back even if
5948 it's created again. So not seeing file previously affected by an oper‐
5949 ation, which was undone is normal.
5950
5951 Operations
5952
5953 All operations that add files are forbidden for custom views. For ex‐
5954 ample, moving/copying/putting files into a custom view doesn't work,
5955 because it doesn't make much sense.
5956
5957 On the other hand, operations that use files of a custom view as a
5958 source (e.g. yanking, copying, moving file from custom view, deletion)
5959 and operations that modify names are all allowed.
5960
5962 Kinds
5963
5964 :compare can produce four different results depending on arguments:
5965 - single compare view (ofone and either listall or listdups);
5966 - single custom view (ofone and listunique);
5967 - two compare views (ofboth and either listall or listdups);
5968 - two custom views (ofboth and listunique).
5969
5970 The first two display files of one file system tree. Here duplicates
5971 are files that have at least one copy in the same tree. The other two
5972 kinds of operation compare two trees, in which duplicates are files
5973 that are found in both trees.
5974
5975 Lists of unique files are presented in custom views because there is no
5976 file grouping to preserve as all file ids are guaranteed to be dis‐
5977 tinct.
5978
5979 Creation
5980
5981 Arguments passed to :compare form four categories each with its own
5982 prefix and is responsible for particular property of operation.
5983
5984 Which files to compare:
5985 - ofboth - compares files of two panes against each other;
5986 - ofone - compares files of the same directory.
5987
5988 How files are compared:
5989 - byname - by their name only;
5990 - bysize - only by their size;
5991 - bycontents - by data they contain (combination of size and hash of
5992 small chunk of contents is used as first approximation, so don't worry
5993 too much about large files).
5994
5995 Which files to display:
5996 - listall - all files;
5997 - listunique - unique files only;
5998 - listdups - only duplicated files.
5999
6000 How results are grouped (has no effect if "ofone" specified):
6001 - groupids - files considered identical are always adjacent in out‐
6002 put;
6003 - grouppaths - file system ordering is preferred (this also enables
6004 displaying identically named files as mismatches).
6005
6006 Which files to omit:
6007 - skipempty - ignore empty files.
6008
6009 Each argument can appear multiple times, the rightmost one of the group
6010 is considered. Arguments alter default behaviour instead of substitut‐
6011 ing it.
6012
6013 Examples
6014
6015 The defaults corresponds to probably the most common use case of com‐
6016 paring files in two trees with grouping by paths, so the following are
6017 equivalent:
6018
6019 :compare
6020 :compare bycontents grouppaths
6021 :compare bycontents listall ofboth grouppaths
6022
6023 Another use case is to find duplicates in the current sub-tree:
6024
6025 :compare listdups ofone
6026
6027 The following command lists files that are unique to each pane:
6028
6029 :compare listunique
6030
6031 Look
6032
6033 The view can't switch to ls-like view as it's unable to display diff-
6034 like data.
6035
6036 Comparison views have second column displaying id of the file, files
6037 with same id are considered to be equal. The view columns configura‐
6038 tion is predefined.
6039
6040 Behaviour
6041
6042 When two views are being compared against each other the following
6043 changes to the regular behaviour apply:
6044 - views are scrolled synchronously (as if 'scrollbind' was set);
6045 - views' cursors are synchronized;
6046 - local filtering is disabled (its results wouldn't be meaningful);
6047 - zd excludes groups of adjacent identical files, 1zd gives usual be‐
6048 haviour;
6049 - sorting is permanently disabled (ordering is fixed);
6050 - removed files hide their counter pairs;
6051 - exiting one of the views terminates the other immediately;
6052 - renaming files isn't blocked, but isn't taken into account and might
6053 require regeneration of comparison;
6054 - entries which indicate absence of equivalent file have empty names
6055 and can be matched as such;
6056 - when unique files of both views are listed custom views can be
6057 empty, this absence of unique files is stated clearly.
6058
6059 One compare view has similar properties (those that are applicable for
6060 single pane).
6061
6062 Files are gathered in this way:
6063 - recursively starting at current location of the view;
6064 - dot files are excluded if view hides them at the moment of compari‐
6065 son, file name filters are obeyed as well so you end up comparing what
6066 you see;
6067 - directories are not taken into account;
6068 - symbolic links to directories are ignored.
6069
6071 On startup vifm determines several variables that are used during exe‐
6072 cution. They are determined in the order they appear below.
6073
6074 On *nix systems $HOME is normally present and used as is. On Windows
6075 systems vifm tries to find correct home directory in the following or‐
6076 der:
6077 - $HOME variable;
6078 - $USERPROFILE variable (on Windows only);
6079 - a combination of $HOMEDRIVE and $HOMEPATH variables (on Windows
6080 only).
6081
6082 vifm tries to find correct configuration directory by checking the fol‐
6083 lowing places:
6084 - $VIFM variable;
6085 - parent directory of the executable file (on Windows only);
6086 - $HOME/.vifm directory;
6087 - $APPDATA/Vifm directory (on Windows only);
6088 - $XDG_CONFIG_HOME/vifm directory;
6089 - $HOME/.config/vifm directory.
6090
6091 vifm tries to find correct configuration file by checking the following
6092 places:
6093 - $MYVIFMRC variable;
6094 - vifmrc in parent directory of the executable file (on Windows only);
6095 - $VIFM/vifmrc file.
6096
6098 See "Startup" section above for the explanations on $VIFM and $MYV‐
6099 IFMRC.
6100
6101 The vifmrc file contains commands that will be executed on vifm
6102 startup. There are two such files: global and local. Global one is at
6103 {prefix}/etc/vifm/vifmrc, see $MYVIFMRC variable description for the
6104 search algorithm used to find local vifmrc. Global vifmrc is loaded
6105 before the local one, so that the later one can redefine anything con‐
6106 figured globally.
6107
6108 Use vifmrc to set settings, mappings, filetypes etc. To use multi line
6109 commands precede each next line with a slash (whitespace before slash
6110 is ignored, but all spaces at the end of the lines are saved). For ex‐
6111 ample:
6112
6113 set
6114 \smartcase
6115
6116 equals "setsmartcase". When
6117
6118 set<space here>
6119 \ smartcase
6120
6121 equals "set smartcase".
6122
6123 The $VIFM/vifminfo file contains generic state of the application. You
6124 can control what is stored in vifminfo by setting 'vifminfo' option.
6125 Vifm always writes this file on exit unless 'vifminfo' option is empty.
6126 Marks, bookmarks, commands, histories, filetypes, fileviewers and reg‐
6127 isters in the file are merged with vifm configuration (which has bigger
6128 priority).
6129
6130 Generally, runtime configuration has bigger priority during merging,
6131 but there are some exceptions:
6132
6133 - directory stack stored in the file is not overwritten unless some‐
6134 thing is changed in vifm instance that performs merge;
6135
6136 - each mark or bookmark is marked with a timestamp, so that newer
6137 value is not overwritten by older one, thus no matter from where it
6138 comes, the newer one wins;
6139
6140 - all histories are marked with timestamps on storing, this means
6141 that last instance to quit puts its elements on top of the list;
6142
6143 - tabs are merged only if both current instance and stored state con‐
6144 tain exactly one tab of any kind.
6145
6146 The $VIFM/scripts directory can contain shell scripts. vifm modifies
6147 its PATH environment variable to let user run those scripts without
6148 specifying full path. All subdirectories of the $VIFM/scripts will be
6149 added to PATH too. Script in a subdirectory overlaps script with the
6150 same name in all its parent directories.
6151
6152 The $VIFM/colors/ and {prefix}/etc/vifm/colors/ directories contain
6153 color schemes. Available color schemes are searched in that order, so
6154 on name conflict the one in $VIFM/colors/ wins.
6155
6156 Each color scheme should have ".vifm" extension. This wasn't the case
6157 before and for this reason the following rules apply during lookup:
6158
6159 - if there is no file with .vifm extension, all regular files are
6160 listed;
6161
6162 - otherwise only files with .vifm extension are listed (with the ex‐
6163 tension being truncated).
6164
6166 Sessions provide a way to have multiple persistent runtime configura‐
6167 tions. Think of them as second-level vifminfo files in addition to the
6168 first-level one used by all sessions. In other words, they aren't a
6169 replacement for vifminfo file that exists without sessions, but an ad‐
6170 dition to it. One can empty 'vifminfo' option and rely solely on ses‐
6171 sions, but in practice one might want to share some state among in‐
6172 stances in different sessions or have an "out-of-sessions" state for
6173 tasks that don't deserve a session of their own.
6174
6175 This leads to a two-level structure where data in session files has
6176 higher priority than data in vifminfo files (where this makes sense)
6177 following the same rules that merging of vifminfo file obeys. In addi‐
6178 tion to that, history items from session files are never ordered before
6179 history items from vifminfo file.
6180
6181 Format
6182
6183 Sessions have the format of vifminfo files, they do not consist of se‐
6184 quence of command-line commands and are not meant to be sourced via
6185 :source command.
6186
6187 Storage and naming
6188
6189 `$VIFM/sessions/` directory serves as a storage for sessions. Conse‐
6190 quently names should be valid filenames. The structure of the storage
6191 is flat meaning that there are no subdirectories, that's why names of
6192 sessions can't contain slashes.
6193
6194 Usage model
6195
6196 Contrary to Vim, vifm automates basic management of sessions. You can
6197 start, switch, stop or delete a session using builtin means.
6198
6199 Current session is saved at the same time vifminfo is saved (on normal
6200 exits or explicitly on :write command) and right before switching to
6201 another session. To avoid saving in those cases use :session command
6202 to detach (without saving) from a session before proceeding.
6203
6204 Related topics
6205
6206 Commands: :session, :delsession
6207 Options: 'sessionoptions'
6208 Variables: v:session
6209
6211 vifm has a builtin support of automated FUSE file system mounts. It is
6212 implemented using file associations mechanism. To enable automated
6213 mounts, one needs to use a specially formatted program line in filetype
6214 or filextype commands. These use special macros, which differ from
6215 macros in commands unrelated to FUSE. Currently three formats are sup‐
6216 ported:
6217
6218 1) FUSE_MOUNT This format should be used in case when all information
6219 needed for mounting all files of a particular type is the same. E.g.
6220 mounting of tar files don't require any file specific options.
6221
6222 Format line:
6223 FUSE_MOUNT|mounter %SOURCE_FILE %DESTINATION_DIR [%FOREGROUND]
6224
6225 Example filetype command:
6226
6227 :filetype FUSE_MOUNT|fuse-zip %SOURCE_FILE %DESTINATION_DIR
6228
6229 2) FUSE_MOUNT2 This format allows one to use specially formatted files
6230 to perform mounting and is useful for mounting remotes, for example re‐
6231 mote file systems over ftp or ssh.
6232
6233 Format line:
6234 FUSE_MOUNT2|mounter %PARAM %DESTINATION_DIR [%FOREGROUND]
6235
6236 Example filetype command:
6237
6238 :filetype *.ssh FUSE_MOUNT2|sshfs %PARAM %DESTINATION_DIR
6239
6240 Example file content:
6241
6242 root@127.0.0.1:/
6243
6244 3) FUSE_MOUNT3
6245
6246 This format is equivalent to FUSE_MOUNT, but omits unmounting. It is
6247 useful for cases, when unmounting isn't needed, like when using AVFS.
6248
6249 Example :filetype command:
6250
6251 :filetype *.tar,*.tar.bz2,*.tbz2,*.tgz,*.tar.gz,*.tar.xz,*.txz,*.deb
6252 \ {Mount with avfs}
6253 \ FUSE_MOUNT3|mount-avfs %DESTINATION_DIR %SOURCE_FILE
6254
6255 Example `mount-avfs` helper script:
6256
6257 #!/bin/sh
6258
6259 dest=$1
6260 file=$2
6261
6262 rmdir "$dest"
6263 ln -s "$HOME/.avfs$file#/" "$dest"
6264
6265 All % macros are expanded by vifm at runtime and have the following
6266 meaning:
6267 - %SOURCE_FILE is replaced by full path to selected file;
6268 - %DESTINATION_DIR is replaced by full path to mount directory, which
6269 is created by vifm basing on the value of 'fusehome' option;
6270 - %PARAM value is filled from the first line of file (whole line),
6271 though in the future it can be changed to whole file content;
6272 - %FOREGROUND means that you want to run mount command as a regular
6273 command (required to be able to provide input for communication with
6274 mounter in interactive way).
6275
6276 %FOREGROUND is an optional macro. Other macros are not mandatory, but
6277 mount commands likely won't work without them.
6278
6279 %CLEAR is obsolete name of %FOREGROUND, which is still supported, but
6280 might be removed in future. Its use is discouraged.
6281
6282 Unlike macros elsewhere, these are recognized only if they appear at
6283 the end of a command or are followed by a space. There is no way to
6284 escape % either. These are historical limitations, which might be ad‐
6285 dressed in the future.
6286
6287 The mounted FUSE file systems will be automatically unmounted in two
6288 cases:
6289
6290 - when vifm quits (with ZZ, :q, etc. or when killed by signal);
6291
6292 - when you explicitly leave mount point going up to its parent direc‐
6293 tory (with h, Enter on "../" or ":cd ..") and other pane is not in
6294 the same directory or its child directories.
6295
6297 vifm supports displaying of file list view in two different ways:
6298
6299 - in a table mode, when multiple columns can be set using 'view‐
6300 columns' option (see "Column view" section below for details);
6301
6302 - in a multicolumn list manner which looks almost like `ls -x` com‐
6303 mand output (see "ls-like view" section below for details).
6304
6305 The look is local for each view and can be chosen by changing value of
6306 the 'lsview' boolean option.
6307
6308 Depending on view look some of keys change their meaning to allow more
6309 natural cursor moving. This concerns mainly h, j, k, l and other simi‐
6310 lar navigation keys.
6311
6312 Also some of options can be ignored if they don't affect view display‐
6313 ing in selected look. For example value of 'viewcolumns' when 'lsview'
6314 is set.
6315
6317 When this view look is enabled by setting 'lsview' option on, vifm will
6318 display files in multiple columns. Number of columns depends on the
6319 length of the longest file name present in current directory of the
6320 view. Whole file list is automatically reflowed on directory change,
6321 terminal or view resize.
6322
6323 View looks close to output of `ls -x` command, so files are listed left
6324 to right in rows.
6325
6326 In this mode file manipulation commands (e.g. d) don't work line-wise
6327 like they do in Vim, since such operations would be uncommon for file
6328 manipulation tasks. Thus, for example, dd will remove only current
6329 file.
6330
6331 By default the view is filled by lines, 'lsoptions' can be used to get
6332 filling by columns.
6333
6334 Note that tree-view and compare view inhibit ls-like view.
6335
6337 View columns are described by a comma-separated list of column descrip‐
6338 tions, each of which has the following format
6339 [ '-' | '*' ] [ fw ( [ '.' tw ] | '%' ) ] '{' type | literal '}'
6340 '.'{0,3}
6341 where fw stands for full width, tw stands for text width, bar is logi‐
6342 cal or, square brackets denote optional parts and curly braces define
6343 range of repetitions for a symbol that precedes them.
6344
6345 So it basically consists of four parts:
6346 1. Optional alignment specifier
6347 2. Optional width specifier
6348 3. Mandatory column name
6349 4. Optional cropping specifier
6350
6351 Alignment specifier
6352
6353 It's an optional minus or asterisk sign as the first symbol of the
6354 string.
6355
6356 Specifies type of text alignment within a column. Three types are sup‐
6357 ported:
6358
6359 - left align
6360
6361 set viewcolumns=-{name}
6362
6363 - right align (default)
6364
6365 set viewcolumns={name}
6366
6367 - dynamic align
6368
6369 It's like left alignment, but when the text is bigger than the col‐
6370 umn, the alignment is made at the right (so the part of the field is
6371 always visible).
6372
6373 set viewcolumns=*{name}
6374
6375 Width specifier
6376
6377 It's a number followed by a percent sign, two numbers (second one
6378 should be less than or equal to the first one) separated with a dot or
6379 a single number.
6380
6381 Specifies column width and its units. There are three size types:
6382
6383 - absolute size - column width is specified in characters
6384
6385 set viewcolumns=-100{name},20.15{ext}
6386
6387 results in two columns with lengths of 100 and 20 and a reserved
6388 space of five characters on the left of second column.
6389
6390 - relative (percent) size - column width is specified in percents of
6391 view width
6392
6393 set viewcolumns=-80%{name},15%{ext},5%{mtime}
6394
6395 results in three columns with lengths of 80/100, 15/100 and 5/100 of
6396 view width.
6397
6398 - auto size (default) - column width is automatically determined
6399
6400 set viewcolumns=-{name},{ext},{mtime}
6401
6402 results in three columns with length of one third of view width.
6403 There is no size adjustment to content, since it will slow down ren‐
6404 dering.
6405
6406 Columns of different sizing types can be freely mixed in one view.
6407 Though sometimes some of columns can be seen partly or be completely
6408 invisible if there is not enough space to display them.
6409
6410 Column contents
6411
6412 This is usually a sorting key surrounded with curly braces, e.g.
6413
6414 {name},{ext},{mtime}
6415
6416 {name} and {iname} types are the same and present both for consistency
6417 with 'sort' option.
6418
6419 Following types don't have corresponding sorting keys:
6420
6421 - {root} - display name without extension (as a complement for
6422 {ext})
6423
6424 - {fileroot} - display name without extension for anything except for
6425 directories and symbolic links to directories (as a complement for
6426 {fileext})
6427
6428 Empty curly braces ({}) are replaced with the default secondary column
6429 for primary sort key. So after the next command view will be displayed
6430 almost as if 'viewcolumns' is empty, but adding ellipsis for long file
6431 names:
6432
6433 set viewcolumns=-{name}..,6{}.
6434
6435 The last kind of column value is a string literal. The literal is used
6436 as a column value for every row. The syntax is "{#literal}", for exam‐
6437 ple:
6438
6439 3{#},{#|},{# | }
6440
6441 This can be used to draw column separators. Mind that for convenience
6442 literals have different defaults: truncation and automatically deter‐
6443 mined absolute size, which is what you usually want for them. Example:
6444
6445 set viewcolumns=*{name}..,{#|},6{}.
6446
6447 Cropping specifier
6448
6449 It's from one to three dots after closing curly brace in column format.
6450
6451 Specifies type of text truncation if it doesn't fit in the column.
6452 Currently three types are supported:
6453
6454 - truncation - text is truncated
6455
6456 set viewcolumns=-{name}.
6457
6458 results in truncation of names that are too long too fit in the
6459 view.
6460
6461 - adding of ellipsis - ellipsis on the left or right are added when
6462 needed
6463
6464 set viewcolumns=-{name}..
6465
6466 results in that ellipsis are added at the end of too long file
6467 names.
6468
6469 - none (default) - text can pass column boundaries
6470
6471 set viewcolumns=-{name}...,{ext}
6472
6473 results in that long file names can partially be written on the ext
6474 column.
6475
6477 The color schemes in vifm can be applied in two different ways:
6478
6479 - as the primary color scheme;
6480
6481 - as local to a pane color scheme.
6482
6483 Both types are set using :colorscheme command, but of different forms:
6484
6485 - :colorscheme color_scheme_name - for the primary color scheme;
6486
6487 - :colorscheme color_scheme_name directory - for local color schemes.
6488
6489 Look of different parts of the TUI (Text User Interface) is determined
6490 in this way:
6491
6492 - Border, TabLine, TabLineSel, TopLineSel, TopLine, CmdLine, Er‐
6493 rorMsg, StatusLine, JobLine, SuggestBox and WildMenu are always de‐
6494 termined by the primary color scheme;
6495
6496 - CurrLine, Selected, Directory, Link, BrokenLink, Socket, Device,
6497 Executable, Fifo, CmpMismatch, CmpUnmatched, CmpBlank, Win, AuxWin
6498 and OtherWin are determined by primary color scheme and a set of
6499 local color schemes, which can be empty.
6500
6501 There might be a set of local color schemes because they are structured
6502 hierarchically according to file system structure. For example, having
6503 the following piece of file system:
6504
6505 ~
6506 `-- bin
6507 |
6508 `-- my
6509
6510 Two color schemes:
6511
6512 # ~/.config/vifm/colors/for_bin.vifm
6513 highlight Win cterm=none ctermfg=white ctermbg=red
6514 highlight CurrLine cterm=none ctermfg=red ctermbg=black
6515
6516 # ~/.config/vifm/colors/for_bin_my.vifm
6517 highlight CurrLine cterm=none ctermfg=green ctermbg=black
6518
6519 And these three commands in the vifmrc file:
6520
6521 colorscheme Default
6522 colorscheme for_bin ~/bin
6523 colorscheme for_bin_my ~/bin/my
6524
6525 File list will look in the following way for each level:
6526
6527 - ~/ - Default color scheme
6528 black background
6529 cursor with blue background
6530
6531 - ~/bin/ - mix of Default and for_bin color schemes
6532 red background
6533 cursor with black background and red foreground
6534
6535 - ~/bin/my/ - mix of Default, for_bin and for_bin_my color schemes
6536 red background
6537 cursor with black background and green foreground
6538
6540 vifm has support of trash directory, which is used as temporary storage
6541 for deleted files or files that were cut. Using trash is controlled by
6542 the 'trash' option, and exact path to the trash can be set with
6543 'trashdir' option. Trash directory in vifm differs from the system-
6544 wide one by default, because of possible incompatibilities of storing
6545 deleted files among different file managers. But one can set
6546 'trashdir' to "~/.local/share/Trash" to use a "standard" trash direc‐
6547 tory.
6548
6549 There are two scenarios of using trash in vifm:
6550
6551 1. As a place for storing files that were cut by "d" and may be in‐
6552 serted to some other place in file system.
6553
6554 2. As a storage of files, that are deleted but not purged yet.
6555
6556 The first scenario uses deletion ("d") operations to put files to trash
6557 and put ("p") operations to restore files from trash directory. Note
6558 that such operations move files to and from trash directory, which can
6559 be long term operations in case of different partitions or remote
6560 drives mounted locally.
6561
6562 The second scenario uses deletion ("d") operations for moving files to
6563 trash directory and :empty command-line command to purge all previously
6564 deleted files.
6565
6566 Deletion and put operations depend on registers, which can point to
6567 files in trash directory. Normally, there are no nonexistent files in
6568 registers, but vifm doesn't keep track of modifications under trash di‐
6569 rectory, so one shouldn't expect value of registers to be absolutely
6570 correct if trash directory was modified not by operation that are meant
6571 for it. But this won't lead to any issues with operations, since they
6572 ignore nonexistent files.
6573
6575 vifm supports remote execution of command-line mode commands, remote
6576 changing of directories and expression evaluation. This is possible
6577 using --remote and --remote-expr command-line arguments.
6578
6579 To execute a command remotely combine --remote argument with -c <com‐
6580 mand> or +<command>. For example:
6581
6582 vifm --remote -c 'cd /'
6583 vifm --remote '+cd /'
6584
6585 To change directory not using command-line mode commands one can spec‐
6586 ify paths right after --remote argument, like this:
6587
6588 vifm --remote /
6589 vifm --remote ~
6590 vifm --remote /usr/bin /tmp
6591
6592 Evaluating expression remotely might be useful to query information
6593 about an instance, for example its location:
6594
6595 vifm --remote-expr 'expand("%d")'
6596
6597 If there are several running instances, the target can be specified
6598 with --server-name option (otherwise, the first one lexicographically
6599 is used):
6600
6601 vifm --server-name work --remote ~/work/project
6602
6603 List of names of running instances can be obtained via --server-list
6604 option. Name of the current one is available via v:servername.
6605
6606
6607 v:servername
6608 server name of the running vifm instance. Empty if client-
6609 server feature is disabled.
6610
6612 When an editor is run to edit list of file names, contents of the tem‐
6613 porary file has the following format:
6614
6615 1. Order of lines correspond to the order of files in a view.
6616
6617 2. Lines that start with a "#" are comments and are ignored.
6618
6619 3. Single backslash at the beginning of a line is ignored, so that a
6620 file starting with a backslash will appear like "\#name".
6621
6622 If an operation was rejected due to issues with file names, next time
6623 you'll see the following in this order:
6624
6625 1. Last error (in comments).
6626
6627 2. Original file names (in comments).
6628
6629 3. Failed list of new names.
6630
6631 Mind that Vim plugin will extract list of original names and show them
6632 in a vertical split.
6633
6634 You can cancel renaming by removing all non-comments from the buffer.
6635 This also erases information about previous edits.
6636
6638 Plugin for using vifm in vim as a file selector.
6639
6640 Commands:
6641
6642 :EditVifm select a file or files to open in the current buffer.
6643 :Vifm alias for :EditVifm.
6644 :SplitVifm split buffer and select a file or files to open.
6645 :VsplitVifm vertically split buffer and select a file or files to
6646 open.
6647 :DiffVifm select a file or files to compare to the current file
6648 with
6649 :vert diffsplit.
6650 :TabVifm select a file or files to open in tabs.
6651
6652 Each command accepts up to two arguments: left pane directory and right
6653 pane directory. After arguments are checked, vifm process is spawned
6654 in a special "file-picker" mode. To pick files just open them either
6655 by pressing l, i or Enter keys, or by running :edit command. If no
6656 files are selected, file under the cursor is opened, otherwise whole
6657 selection is passed to the plugin and opened in vim.
6658
6659 The plugin have only two settings. It's a string variable named
6660 g:vifm_term to let user specify command to run GUI terminal. By de‐
6661 fault it's equal to 'xterm -e'. And another string variable named
6662 g:vifm_exec, which equals "vifm" by default and specifies path to
6663 vifm's executable. To pass arguments to vifm use g:vifm_exec_args,
6664 which is empty by default.
6665
6666 To use the plugin copy the vifm.vim file to either the system wide
6667 vim/plugin directory or into ~/.vim/plugin.
6668
6669 If you would prefer not to use the plugin and it is in the system wide
6670 plugin directory add
6671
6672 let loaded_vifm=1
6673
6674 to your ~/.vimrc file.
6675
6677 The following command names are reserved and shouldn't be used for user
6678 commands.
6679
6680 g[lobal]
6681 v[global]
6682
6684 VIFM Points to main configuration directory (usually ~/.con‐
6685 fig/vifm/).
6686
6687 MYVIFMRC
6688 Points to main configuration file (usually ~/.con‐
6689 fig/vifm/vifmrc).
6690
6691 These environment variables are valid inside vifm and also can be used
6692 to configure it by setting some of them before running vifm.
6693
6694 When $MYVIFMRC isn't set, it's made as $VIFM/vifmrc (exception for Win‐
6695 dows: vifmrc in the same directory as vifm.exe has higher priority than
6696 $VIFM/vifmrc).
6697
6698 See "Startup" section above for more details.
6699
6700 VIFM_FUSE_FILE
6701 On execution of external commands this variable is set to the
6702 full path of file used to initiate FUSE mount of the closest
6703 mount point from current pane's directory up. It's not set when
6704 outside FUSE mount point. When vifm is used inside terminal
6705 multiplexer, it tries to set this variable as well (it doesn't
6706 work this way on its own).
6707
6709 vifm-convert-dircolors(1), vifm-pause(1)
6710
6711 Website: https://vifm.info/
6712 Wiki: https://wiki.vifm.info/
6713
6714 Esperanto translation of the documentation by Sebastian Cyprych:
6715 http://cyprych.neostrada.pl/tekstoj/komputiloj/vifm-help.eo.html
6716
6718 Vifm was written by ksteen <ksteen@users.sourceforge.net>
6719 And currently is developed by xaizek <xaizek@posteo.net>
6720
6721
6722
6723vifm 0.12.1 21 September 2022 VIFM(1)