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