6566 lines
219 KiB
Plaintext
6566 lines
219 KiB
Plaintext
|
VIFM(1) General Commands Manual VIFM(1)
|
||
|
|
||
|
|
||
|
|
||
|
NAME
|
||
|
vifm - vi file manager
|
||
|
|
||
|
SYNOPSIS
|
||
|
vifm [OPTION]...
|
||
|
vifm [OPTION]... path
|
||
|
vifm [OPTION]... path path
|
||
|
|
||
|
DESCRIPTION
|
||
|
Vifm is an ncurses based file manager with vi like keybindings. If you
|
||
|
use vi, vifm gives you complete keyboard control over your files with-
|
||
|
out having to learn a new set of commands.
|
||
|
|
||
|
OPTIONS
|
||
|
vifm starts in the current directory unless it is given a different di-
|
||
|
rectory on the command line or 'vifminfo' option includes "savedirs"
|
||
|
(in which case last visited directories are used as defaults).
|
||
|
|
||
|
- Read list of files from standard input stream and compose custom
|
||
|
view out of them (see "Custom views" section). Current working
|
||
|
directory is used as a base for relative paths.
|
||
|
|
||
|
<path> Starts Vifm in the specified path.
|
||
|
|
||
|
<path> <path>
|
||
|
Starts Vifm in the specified paths.
|
||
|
|
||
|
Specifying two directories triggers split view even when vifm was in
|
||
|
single-view mode on finishing previous run. To suppress this behaviour
|
||
|
:only command can be put in the vifmrc file.
|
||
|
|
||
|
When only one path argument is found on command-line, the left/top pane
|
||
|
is automatically set as the current view.
|
||
|
|
||
|
Paths to files are also allowed in case you want vifm to start with
|
||
|
some archive opened.
|
||
|
|
||
|
--select <path>
|
||
|
Open parent directory of the given path and select specified
|
||
|
file in it.
|
||
|
|
||
|
-f Makes vifm instead of opening files write selection to
|
||
|
$VIFM/vimfiles and quit.
|
||
|
|
||
|
--choose-files <path>|-
|
||
|
Sets output file to write selection into on exit instead of
|
||
|
opening files. "-" means standard output. Use empty value to
|
||
|
disable it.
|
||
|
|
||
|
--choose-dir <path>|-
|
||
|
Sets output file to write last visited directory into on exit.
|
||
|
"-" means standard output. Use empty value to disable it.
|
||
|
|
||
|
--delimiter <delimiter>
|
||
|
Sets separator for list of file paths written out by vifm.
|
||
|
Empty value means null character. Default is new line charac-
|
||
|
ter.
|
||
|
|
||
|
--on-choose <command>
|
||
|
Sets command to be executed on selected files instead of opening
|
||
|
them. The command may use any of macros described in "Command
|
||
|
macros" section below. The command is executed once for whole
|
||
|
selection.
|
||
|
|
||
|
--logging[=<startup log path>]
|
||
|
Log some operational details $VIFM/log. If the optional startup
|
||
|
log path is specified and permissions allow to open it for writ-
|
||
|
ing, then logging of early initialization (before value of $VIFM
|
||
|
is determined) is put there.
|
||
|
|
||
|
--server-list
|
||
|
List available server names and exit.
|
||
|
|
||
|
--server-name <name>
|
||
|
Name of target or this instance (sequential numbers are appended
|
||
|
on name conflict).
|
||
|
|
||
|
--remote
|
||
|
Sends the rest of the command line to another instance of vifm,
|
||
|
--server-name is treated just like any other argument and should
|
||
|
precede --remote on the command line. When there is no server,
|
||
|
quits silently. There is no limit on how many arguments can be
|
||
|
processed. One can combine --remote with -c <command> or +<com-
|
||
|
mand> to execute commands in already running instance of vifm.
|
||
|
See also "Client-Server" section below.
|
||
|
|
||
|
--remote-expr
|
||
|
passes expression to vifm server and prints result. See also
|
||
|
"Client-Server" section below.
|
||
|
|
||
|
-c <command> or +<command>
|
||
|
Run command-line mode <command> on startup. Commands in such
|
||
|
arguments are executed in the order they appear in command line.
|
||
|
Commands with spaces or special symbols must be enclosed in dou-
|
||
|
ble or single quotes or all special symbols should be escaped
|
||
|
(the exact syntax strongly depends on shell). "+" argument is
|
||
|
equivalent to "$" and thus picks last item of of the view.
|
||
|
|
||
|
--help, -h
|
||
|
Show a brief command summary and exit vifm.
|
||
|
|
||
|
--version, -v
|
||
|
Show version information and quit.
|
||
|
|
||
|
--no-configs
|
||
|
Skip reading vifmrc and vifminfo.
|
||
|
|
||
|
|
||
|
See "Startup" section below for the explanations on $VIFM.
|
||
|
|
||
|
General keys
|
||
|
Ctrl-C or Escape
|
||
|
cancel most operations (see "Cancellation" section below), clear
|
||
|
all selected files.
|
||
|
|
||
|
Ctrl-L clear and redraw the screen.
|
||
|
|
||
|
Basic Movement
|
||
|
The basic vi key bindings are used to move through the files and pop-up
|
||
|
windows.
|
||
|
|
||
|
k, gk, or Ctrl-P
|
||
|
move cursor up one line.
|
||
|
|
||
|
j, gj or Ctrl-N
|
||
|
move cursor down one line.
|
||
|
|
||
|
h when 'lsview' is off move up one directory (moves to parent di-
|
||
|
rectory node in tree view), otherwise move left one file.
|
||
|
|
||
|
l when 'lsview' is off move into a directory or launch a file,
|
||
|
otherwise move right one file. See "Selection" section below.
|
||
|
|
||
|
gg move to the first line of the file list.
|
||
|
|
||
|
G move to the last line in the file list.
|
||
|
|
||
|
gh go up one directory regardless of view representation (regular,
|
||
|
ls-like). Also can be used to leave custom views including tree
|
||
|
view.
|
||
|
|
||
|
gl or Enter
|
||
|
enter directory or launch a file. See "Selection" section be-
|
||
|
low.
|
||
|
|
||
|
H move to the first file in the window.
|
||
|
|
||
|
M move to the file in the middle of the window.
|
||
|
|
||
|
L move to the last file in the window.
|
||
|
|
||
|
Ctrl-F or Page Down
|
||
|
move forward one page.
|
||
|
|
||
|
Ctrl-B or Page Up
|
||
|
move back one page.
|
||
|
|
||
|
Ctrl-D jump back one half page.
|
||
|
|
||
|
Ctrl-U jump forward one half page.
|
||
|
|
||
|
n% move to the file that is n percent from the top of the list (for
|
||
|
example 25%).
|
||
|
|
||
|
0 or ^ move cursor to the first column. See 'lsview' option descrip-
|
||
|
tion.
|
||
|
|
||
|
$ move cursor to the last column. See 'lsview' option descrip-
|
||
|
tion.
|
||
|
|
||
|
Space switch file lists.
|
||
|
|
||
|
gt switch to the next tab (wrapping around).
|
||
|
|
||
|
{n}gt switch to the tab number {n} (wrapping around).
|
||
|
|
||
|
gT switch to the previous tab (wrapping around).
|
||
|
|
||
|
{n}gT switch to {n}-th previous tab.
|
||
|
|
||
|
Movement with Count
|
||
|
Most movement commands also accept a count, 12j would move down 12
|
||
|
files.
|
||
|
|
||
|
[count]%
|
||
|
move to percent of the file list.
|
||
|
|
||
|
[count]j
|
||
|
move down [count] files.
|
||
|
|
||
|
[count]k
|
||
|
move up [count] files.
|
||
|
|
||
|
[count]G or [count]gg
|
||
|
move to list position [count].
|
||
|
|
||
|
[count]h
|
||
|
go up [count] directories.
|
||
|
|
||
|
Scrolling panes
|
||
|
zt redraw pane with file in top of list.
|
||
|
|
||
|
zz redraw pane with file in center of list.
|
||
|
|
||
|
zb redraw pane with file in bottom of list.
|
||
|
|
||
|
Ctrl-E scroll pane one line down.
|
||
|
|
||
|
Ctrl-Y scroll pane one line up.
|
||
|
|
||
|
Pane manipulation
|
||
|
Second character can be entered with or without Control key.
|
||
|
|
||
|
Ctrl-W H
|
||
|
move the pane to the far left.
|
||
|
|
||
|
Ctrl-W J
|
||
|
move the pane to the very bottom.
|
||
|
|
||
|
Ctrl-W K
|
||
|
move the pane to the very top.
|
||
|
|
||
|
Ctrl-W L
|
||
|
move the pane to the far right.
|
||
|
|
||
|
|
||
|
Ctrl-W h
|
||
|
switch to the left pane.
|
||
|
|
||
|
Ctrl-W j
|
||
|
switch to the pane below.
|
||
|
|
||
|
Ctrl-W k
|
||
|
switch to the pane above.
|
||
|
|
||
|
Ctrl-W l
|
||
|
switch to the right pane.
|
||
|
|
||
|
|
||
|
Ctrl-W b
|
||
|
switch to bottom-right window.
|
||
|
|
||
|
Ctrl-W t
|
||
|
switch to top-left window.
|
||
|
|
||
|
|
||
|
Ctrl-W p
|
||
|
switch to previous window.
|
||
|
|
||
|
Ctrl-W w
|
||
|
switch to other pane.
|
||
|
|
||
|
|
||
|
Ctrl-W o
|
||
|
leave only one pane.
|
||
|
|
||
|
Ctrl-W s
|
||
|
split window horizontally.
|
||
|
|
||
|
Ctrl-W v
|
||
|
split window vertically.
|
||
|
|
||
|
|
||
|
Ctrl-W x
|
||
|
exchange panes.
|
||
|
|
||
|
Ctrl-W z
|
||
|
quit preview pane or view modes.
|
||
|
|
||
|
|
||
|
Ctrl-W -
|
||
|
decrease size of the view by count.
|
||
|
|
||
|
Ctrl-W +
|
||
|
increase size of the view by count.
|
||
|
|
||
|
Ctrl-W <
|
||
|
decrease size of the view by count.
|
||
|
|
||
|
Ctrl-W >
|
||
|
increase size of the view by count.
|
||
|
|
||
|
|
||
|
Ctrl-W |
|
||
|
set current view size to count.
|
||
|
|
||
|
Ctrl-W _
|
||
|
set current view size to count.
|
||
|
|
||
|
Ctrl-W =
|
||
|
make size of two views equal.
|
||
|
|
||
|
For Ctrl-W +, Ctrl-W -, Ctrl-W <, Ctrl-W >, Ctrl-W | and Ctrl-W _ com-
|
||
|
mands count can be given before and/or after Ctrl-W. The resulting
|
||
|
count is a multiplication of those two. So "2 Ctrl-W 2 -" decreases
|
||
|
window size by 4 lines or columns.
|
||
|
|
||
|
Ctrl-W | and Ctrl-W _ maximise current view by default.
|
||
|
|
||
|
Marks
|
||
|
Marks are set the same way as they are in vi.
|
||
|
|
||
|
You can use these characters for marks [a-z][A-Z][0-9].
|
||
|
|
||
|
m[a-z][A-Z][0-9]
|
||
|
set a mark for the file at the current cursor position.
|
||
|
|
||
|
'[a-z][A-Z][0-9]
|
||
|
navigate to the file set for the mark.
|
||
|
|
||
|
|
||
|
There are also several special marks that can't be set manually:
|
||
|
|
||
|
- ' (single quote) - previously visited directory of the view, thus
|
||
|
hitting '' allows switching between two last locations
|
||
|
|
||
|
- < - the first file of the last visually selected block
|
||
|
|
||
|
- > - the last file of the last visually selected block
|
||
|
|
||
|
Searching
|
||
|
/regular expression pattern
|
||
|
search for files matching regular expression in forward direc-
|
||
|
tion and advance cursor to next match.
|
||
|
|
||
|
/ perform forward search with top item of search pattern history.
|
||
|
|
||
|
?regular expression pattern
|
||
|
search for files matching regular expression in backward direc-
|
||
|
tion and advance cursor to previous match.
|
||
|
|
||
|
? perform backward search with top item of search pattern history.
|
||
|
|
||
|
Trailing slash for directories is taken into account, so /\/ searches
|
||
|
for directories and symbolic links to directories. At the moment //
|
||
|
works too, but this can change in the future, so consider escaping the
|
||
|
slash if not typing pattern by hand.
|
||
|
|
||
|
Matches are automatically selected if 'hlsearch' is set. Enabling
|
||
|
'incsearch' makes search interactive. 'ignorecase' and 'smartcase' op-
|
||
|
tions affect case sensitivity of search queries as well as local filter
|
||
|
and other things detailed in the description of 'caseoptions'.
|
||
|
|
||
|
|
||
|
[count]n
|
||
|
go to the next file matching last search pattern. Takes last
|
||
|
search direction into account.
|
||
|
|
||
|
[count]N
|
||
|
go to the previous file matching last search pattern. Takes
|
||
|
last search direction into account.
|
||
|
|
||
|
If 'hlsearch' option is set, hitting n/N to perform search and go to
|
||
|
the first matching item resets current selection in normal mode. It is
|
||
|
not the case if search was already performed on files in the directory,
|
||
|
thus selection is not reset after clearing selection with escape key
|
||
|
and hitting n/N key again.
|
||
|
|
||
|
Note: vifm uses extended regular expressions for / and ?.
|
||
|
|
||
|
|
||
|
[count]f[character]
|
||
|
search forward for file with [character] as first character in
|
||
|
name. Search wraps around the end of the list.
|
||
|
|
||
|
[count]F[character]
|
||
|
search backward for file with [character] as first character in
|
||
|
name. Search wraps around the end of the list.
|
||
|
|
||
|
[count];
|
||
|
find the next match of f or F.
|
||
|
|
||
|
[count],
|
||
|
find the previous match of f or F.
|
||
|
|
||
|
Note: f, F, ; and , wrap around list beginning and end when they are
|
||
|
used alone and they don't wrap when they are used as selectors.
|
||
|
|
||
|
File Filters
|
||
|
There are three basic file filters:
|
||
|
|
||
|
- dot files filter (does not affect "." and ".." special directories,
|
||
|
whose appearance is controlled by the 'dotdirs' option), see 'dot-
|
||
|
files' option;
|
||
|
|
||
|
- permanent filter;
|
||
|
|
||
|
- local filter (see description of the "=" normal mode command).
|
||
|
|
||
|
Permanent filter essentially allows defining a group of files names
|
||
|
which are not desirable to be seen by default, like temporary or backup
|
||
|
files, which might be created alongside normal ones. Just like you
|
||
|
don't usually need to see hidden dot files (files starting with a dot).
|
||
|
Local filter on the other hand is for temporary immediate filtering of
|
||
|
file list at hand, to get rid of uninterested files in the view or to
|
||
|
make it possible to use % range in a :command.
|
||
|
|
||
|
For the purposes of more deterministic editing permanent filter is
|
||
|
split into two parts:
|
||
|
|
||
|
- one edited explicitly via :filter command;
|
||
|
|
||
|
- another one which is edited implicitly via zf shortcut.
|
||
|
|
||
|
Files are tested against both parts and a match counts if at least one
|
||
|
of the parts matched.
|
||
|
|
||
|
|
||
|
Each file list has its own copy of each filter.
|
||
|
|
||
|
Filtered files are not checked in / search or :commands.
|
||
|
|
||
|
Files and directories are filtered separately. This is done by append-
|
||
|
ing a slash to a directory name before testing whether it matches the
|
||
|
filter. Examples:
|
||
|
|
||
|
|
||
|
" filter directories which names end with '.files'
|
||
|
:filter /^.*\.files\/$/
|
||
|
|
||
|
" filter files which names end with '.d'
|
||
|
:filter {*.d}
|
||
|
|
||
|
" filter files and directories which names end with '.o'
|
||
|
:filter /^.*\.o\/?$/
|
||
|
|
||
|
Note: vifm uses extended regular expressions.
|
||
|
|
||
|
The basic vim folding key bindings are used for managing filters.
|
||
|
|
||
|
|
||
|
za toggle visibility of dot files.
|
||
|
|
||
|
zo show dot files.
|
||
|
|
||
|
zm hide dot files.
|
||
|
|
||
|
zf add selected files to permanent filter.
|
||
|
|
||
|
zO reset permanent filter.
|
||
|
|
||
|
zR save and reset all filters.
|
||
|
|
||
|
zr clear local filter.
|
||
|
|
||
|
zM restore all filters (undoes last zR).
|
||
|
|
||
|
zd exclude selection or current file from a custom view. Does
|
||
|
nothing for regular view. For tree view excluding directory ex-
|
||
|
cludes that sub-tree. For compare views zd hides group of adja-
|
||
|
cent identical files, count can be specified as 1 to exclude
|
||
|
just single file or selected items instead. Files excluded this
|
||
|
way are not counted as filtered out and can't be returned unless
|
||
|
view is reloaded.
|
||
|
|
||
|
=regular expression pattern
|
||
|
filter out files that don't match regular expression. Whether
|
||
|
view is updated as regular expression is changed depends on the
|
||
|
value of the 'incsearch' option. This kind of filter is auto-
|
||
|
matically reset when directory is changed.
|
||
|
|
||
|
Tree-related Keys
|
||
|
While some of the keys make sense outside of tree-view, they are most
|
||
|
useful in trees.
|
||
|
|
||
|
[z go to first sibling of current entry.
|
||
|
|
||
|
]z go to last sibling of current entry.
|
||
|
|
||
|
zj go to next directory sibling of current entry or do nothing.
|
||
|
|
||
|
zk go to previous directory sibling of current entry or do nothing.
|
||
|
|
||
|
zx toggle fold under the cursor or parent entry of the current file
|
||
|
if cursor is not on a directory.
|
||
|
|
||
|
Other Normal Mode Keys
|
||
|
[count]:
|
||
|
enter command line mode. [count] generates range.
|
||
|
|
||
|
q: open external editor to prompt for command-line command. See
|
||
|
"Command line editing" section for details.
|
||
|
|
||
|
q/ open external editor to prompt for search pattern to be searched
|
||
|
in forward direction. See "Command line editing" section for
|
||
|
details.
|
||
|
|
||
|
q? open external editor to prompt for search pattern to be searched
|
||
|
in backward direction. See "Command line editing" section for
|
||
|
details.
|
||
|
|
||
|
q= open external editor to prompt for filter pattern. See "Command
|
||
|
line editing" section for details. Unlike other q{x} commands
|
||
|
this one doesn't work in Visual mode.
|
||
|
|
||
|
[count]!! and [count]!<selector>
|
||
|
enter command line mode with entered ! command. [count] modi-
|
||
|
fies range.
|
||
|
|
||
|
Ctrl-O go backwards through directory history of current view. Nonex-
|
||
|
istent directories are automatically skipped.
|
||
|
|
||
|
Ctrl-I if 'cpoptions' contains "t" flag, <tab> and <c-i> switch active
|
||
|
pane just like <space> does, otherwise it goes forward through
|
||
|
directory history of current view. Nonexistent directories are
|
||
|
automatically skipped.
|
||
|
|
||
|
Ctrl-G show a dialog with detailed information about current file. See
|
||
|
"Menus and dialogs" section for controls.
|
||
|
|
||
|
Shift-Tab
|
||
|
enter view mode (works only after activating view pane with
|
||
|
:view command).
|
||
|
|
||
|
ga calculate directory size. Uses cached directory sizes when pos-
|
||
|
sible for better performance. As a special case calculating
|
||
|
size of ".." entry results in calculation of size of current di-
|
||
|
rectory.
|
||
|
|
||
|
gA like ga, but force update. Ignores old values of directory
|
||
|
sizes.
|
||
|
|
||
|
If file under cursor is selected, each selected item is processed, oth-
|
||
|
erwise only current file is updated.
|
||
|
|
||
|
gf find link destination (like l with 'followlinks' off, but also
|
||
|
finds directories). On Windows additionally follows .lnk-files.
|
||
|
|
||
|
gF Same as gf, but resolves final path of the chain of symbolic
|
||
|
links.
|
||
|
|
||
|
gr only for MS-Windows
|
||
|
same as l key, but tries to run program with administrative
|
||
|
privileges.
|
||
|
|
||
|
av go to visual mode into selection amending state preserving cur-
|
||
|
rent selection.
|
||
|
|
||
|
gv go to visual mode restoring last selection.
|
||
|
|
||
|
[reg]gs
|
||
|
when no register is specified, restore last t selection (similar
|
||
|
to what gv does for visual mode selection). If register is
|
||
|
present, then all files listed in that register and which are
|
||
|
visible in current view are selected.
|
||
|
|
||
|
gu<selector>
|
||
|
make names of selected files lowercase.
|
||
|
|
||
|
[count]guu and [count]gugu
|
||
|
make names of [count] files starting from the current one lower-
|
||
|
case. Without [count] only current file is affected.
|
||
|
|
||
|
gU<selector>
|
||
|
make names of selected files uppercase.
|
||
|
|
||
|
[count]gUU and [count]gUgU
|
||
|
make names of [count] files starting from the current one upper-
|
||
|
case. Without [count] only current file is affected.
|
||
|
|
||
|
e explore file in the current pane.
|
||
|
|
||
|
i handle file (even if it's an executable and 'runexec' option is
|
||
|
set).
|
||
|
|
||
|
cw change word is used to rename a file or files. If multiple
|
||
|
files are selected, behaves as :rename command run without argu-
|
||
|
ments.
|
||
|
|
||
|
cW change WORD is used to change only name of file (without exten-
|
||
|
sion).
|
||
|
|
||
|
cl change link target.
|
||
|
|
||
|
co only for *nix
|
||
|
change file owner.
|
||
|
|
||
|
cg only for *nix
|
||
|
change file group.
|
||
|
|
||
|
[count]cp
|
||
|
change file attributes (permission on *nix and properties on
|
||
|
Windows). If [count] is specified, it's treated as numerical
|
||
|
argument for non-recursive `chmod` command (of the form
|
||
|
[0-7]{3,4}). See "Menus and dialogs" section for controls.
|
||
|
|
||
|
[count]C
|
||
|
clone file [count] times.
|
||
|
|
||
|
[count]dd or d[count]selector
|
||
|
move selected file or files to trash directory (if 'trash' op-
|
||
|
tion is set, otherwise delete). See "Trash directory" section
|
||
|
below.
|
||
|
|
||
|
[count]DD or D[count]selector
|
||
|
like dd and d<selector>, but omitting trash directory (even when
|
||
|
'trash' option is set).
|
||
|
|
||
|
Y, [count]yy or y[count]selector
|
||
|
yank selected files.
|
||
|
|
||
|
p copy yanked files to the current directory or move the files to
|
||
|
the current directory if they were deleted with dd or :d[elete]
|
||
|
or if the files were yanked from trash directory. See "Trash
|
||
|
directory" section below.
|
||
|
|
||
|
P move the last yanked files. The advantage of using P instead of
|
||
|
d followed by p is that P moves files only once. This isn't im-
|
||
|
portant in case you're moving files in the same file system
|
||
|
where your home directory is, but using P to move files on some
|
||
|
other file system (or file systems, in case you want to move
|
||
|
files from fs1 to fs2 and your home is on fs3) can save your
|
||
|
time.
|
||
|
|
||
|
al put symbolic links with absolute paths.
|
||
|
|
||
|
rl put symbolic links with relative paths.
|
||
|
|
||
|
t select or unselect (tag) the current file.
|
||
|
|
||
|
u undo last change.
|
||
|
|
||
|
Ctrl-R redo last change.
|
||
|
|
||
|
dp in compare view of "ofboth grouppaths" kind, makes corresponding
|
||
|
entry of the other pane equal to the current one. The semantics
|
||
|
is as follows:
|
||
|
- nothing done for identical entries
|
||
|
- if file is missing in current view, its pair gets removed
|
||
|
- if file is missing or differs in other view, it's replaced
|
||
|
- file pairs are defined by matching relative paths
|
||
|
File removal obeys 'trash' option. When the option is enabled,
|
||
|
the operation can be undone/redone (although results won't be
|
||
|
visible automatically).
|
||
|
Unlike in Vim, this operation is performed on a single line
|
||
|
rather than a set of adjacent changes.
|
||
|
|
||
|
do same as dp, but applies changes in the opposite direction.
|
||
|
|
||
|
v or V enter visual mode, clears current selection.
|
||
|
|
||
|
[count]Ctrl-A
|
||
|
increment first number in file name by [count] (1 by default).
|
||
|
|
||
|
[count]Ctrl-X
|
||
|
decrement first number in file name by [count] (1 by default).
|
||
|
|
||
|
ZQ same as :quit!.
|
||
|
|
||
|
ZZ same as :quit.
|
||
|
|
||
|
. repeat last command-line command (not normal mode command) of
|
||
|
this run (does nothing right after startup or :restart command).
|
||
|
The command doesn't depend on command-line history and can be
|
||
|
used with completely disabled history.
|
||
|
|
||
|
( go to previous group. Groups are defined by primary sorting
|
||
|
key. For name and iname members of each group have same first
|
||
|
letter, for all other sorting keys vifm uses size, uid, ...
|
||
|
|
||
|
) go to next group. See ( key description above.
|
||
|
|
||
|
{ speeds up navigation to closest previous entry of the opposite
|
||
|
type by moving to the first file backwards when cursor is on a
|
||
|
directory and to the first directory backwards when cursor is on
|
||
|
a file. This is essentially a special case of ( that is locked
|
||
|
on "dirs".
|
||
|
|
||
|
} same as {, but in forward direction.
|
||
|
|
||
|
[c go to previous mismatched entry in directory comparison view or
|
||
|
do nothing.
|
||
|
|
||
|
]c go to next mismatched entry in directory comparison view or do
|
||
|
nothing.
|
||
|
|
||
|
[d go to previous directory entry or do nothing.
|
||
|
|
||
|
]d go to next directory entry or do nothing.
|
||
|
|
||
|
[r same as :siblprev.
|
||
|
|
||
|
]r same as :siblnext.
|
||
|
|
||
|
[R same as :siblprev!.
|
||
|
|
||
|
]R same as :siblnext!.
|
||
|
|
||
|
[s go to previous selected entry or do nothing.
|
||
|
|
||
|
]s go to next selected entry or do nothing.
|
||
|
|
||
|
Using Count
|
||
|
You can use count with commands like yy.
|
||
|
|
||
|
[count]yy
|
||
|
yank count files starting from current cursor position downward.
|
||
|
|
||
|
Or you can use count with motions passed to y, d or D.
|
||
|
|
||
|
d[count]j
|
||
|
delete (count + 1) files starting from current cursor position
|
||
|
upward.
|
||
|
|
||
|
Registers
|
||
|
vifm supports multiple registers for temporary storing list of yanked
|
||
|
or deleted files.
|
||
|
|
||
|
Registers should be specified by hitting double quote key followed by a
|
||
|
register name. Count is specified after register name. By default
|
||
|
commands use unnamed register, which has double quote as its name.
|
||
|
|
||
|
Though all commands accept registers, most of commands ignores them
|
||
|
(for example H or Ctrl-U). Other commands can fill register or append
|
||
|
new files to it.
|
||
|
|
||
|
Presently vifm supports ", _, a-z and A-Z characters as register names.
|
||
|
|
||
|
As mentioned above " is unnamed register and has special meaning of the
|
||
|
default register. Every time when you use named registers (a-z and A-
|
||
|
Z) unnamed register is updated to contain same list of files as the
|
||
|
last used register.
|
||
|
|
||
|
_ is black hole register. It can be used for writing, but its list is
|
||
|
always empty.
|
||
|
|
||
|
Registers with names from a to z and from A to Z are named ones. Low-
|
||
|
ercase registers are cleared before adding new files, while uppercase
|
||
|
aren't and should be used to append new files to the existing file list
|
||
|
of appropriate lowercase register (A for a, B for b, ...).
|
||
|
|
||
|
Registers can be changed on :empty command if they contain files under
|
||
|
trash directory (see "Trash directory" section below).
|
||
|
|
||
|
Registers do not contain one file more than once.
|
||
|
|
||
|
Example:
|
||
|
|
||
|
"a2yy
|
||
|
|
||
|
puts names of two files to register a (and to the unnamed register),
|
||
|
|
||
|
"Ad
|
||
|
|
||
|
removes one file and append its name to register a (and to the unnamed
|
||
|
register),
|
||
|
|
||
|
p or "ap or "Ap
|
||
|
|
||
|
inserts previously yanked and deleted files into current directory.
|
||
|
|
||
|
Selectors
|
||
|
y, d, D, !, gu and gU commands accept selectors. You can combine them
|
||
|
with any of selectors below to quickly remove or yank several files.
|
||
|
|
||
|
Most of selectors are like vi motions: j, k, gg, G, H, L, M, %, f, F,
|
||
|
;, comma, ', ^, 0 and $. But there are some additional ones.
|
||
|
|
||
|
a all files in current view.
|
||
|
|
||
|
s selected files.
|
||
|
|
||
|
S all files except selected.
|
||
|
|
||
|
Examples:
|
||
|
|
||
|
- dj - delete file under cursor and one below;
|
||
|
|
||
|
- d2j - delete file under cursor and two below;
|
||
|
|
||
|
- y6gg - yank all files from cursor position to 6th file in the list.
|
||
|
|
||
|
When you pass a count to whole command and its selector they are multi-
|
||
|
plied. So:
|
||
|
|
||
|
- 2d2j - delete file under cursor and four below;
|
||
|
|
||
|
- 2dj - delete file under cursor and two below;
|
||
|
|
||
|
- 2y6gg - yank all files from cursor position to 12th file in the
|
||
|
list.
|
||
|
|
||
|
Visual Mode
|
||
|
Visual mode has two generic operating submodes:
|
||
|
|
||
|
- plain selection as it is in Vim;
|
||
|
|
||
|
- selection editing submode.
|
||
|
|
||
|
Both modes select files in range from cursor position at which visual
|
||
|
mode was entered to current cursor position (let's call it "selection
|
||
|
region"). Each of two borders can be adjusted by swapping them via "o"
|
||
|
or "O" keys and updating cursor position with regular cursor motion
|
||
|
keys. Obviously, once initial cursor position is altered this way,
|
||
|
real start position becomes unavailable.
|
||
|
|
||
|
Plain Vim-like visual mode starts with cleared selection, which is not
|
||
|
restored on rejecting selection ("Escape", "Ctrl-C", "v", "V"). Con-
|
||
|
trary to it, selection editing doesn't clear previously selected files
|
||
|
and restores them after reject. Accepting selection by performing an
|
||
|
operation on selected items (e.g. yanking them via "y") moves cursor to
|
||
|
the top of current selection region (not to the top most selected file
|
||
|
of the view).
|
||
|
|
||
|
In turn, selection editing supports three types of editing (look at
|
||
|
statusbar to know which one is currently active):
|
||
|
|
||
|
- append - amend selection by selecting elements in selection region;
|
||
|
|
||
|
- remove - amend selection by deselecting elements in selection re-
|
||
|
gion;
|
||
|
|
||
|
- invert - amend selection by inverting selection of elements in se-
|
||
|
lection region.
|
||
|
|
||
|
No matter how you activate selection editing it starts in "append".
|
||
|
One can switch type of operation (in the order given above) via "Ctrl-
|
||
|
G" key.
|
||
|
|
||
|
Almost all normal mode keys work in visual mode, but instead of accept-
|
||
|
ing selectors they operate on selected items.
|
||
|
|
||
|
Enter save selection and go back to normal mode not moving cursor.
|
||
|
|
||
|
av leave visual mode if in amending mode (restores previous selec-
|
||
|
tion), otherwise switch to amending selection mode.
|
||
|
|
||
|
gv restore previous visual selection.
|
||
|
|
||
|
v, V, Ctrl-C or Escape
|
||
|
leave visual mode if not in amending mode, otherwise switch to
|
||
|
normal visual selection.
|
||
|
|
||
|
Ctrl-G switch type of amending by round robin scheme: append -> remove
|
||
|
-> invert.
|
||
|
|
||
|
: enter command line mode. Selection is cleared on leaving the
|
||
|
mode.
|
||
|
|
||
|
o switch active selection bound.
|
||
|
|
||
|
O switch active selection bound.
|
||
|
|
||
|
gu, u make names of selected files lowercase.
|
||
|
|
||
|
gU, U make names of selected files uppercase.
|
||
|
|
||
|
cw same as running :rename command without arguments.
|
||
|
|
||
|
View Mode
|
||
|
This mode tries to imitate the less program. List of builtin shortcuts
|
||
|
can be found below. Shortcuts can be customized using :qmap, :qnoremap
|
||
|
and :qunmap command-line commands.
|
||
|
|
||
|
Shift-Tab, Tab, q, Q, ZZ
|
||
|
return to normal mode.
|
||
|
|
||
|
[count]e, [count]Ctrl-E, [count]j, [count]Ctrl-N, [count]Enter
|
||
|
scroll forward one line (or [count] lines).
|
||
|
|
||
|
[count]y, [count]Ctrl-Y, [count]k, [count]Ctrl-K, [count]Ctrl-P
|
||
|
scroll backward one line (or [count] lines).
|
||
|
|
||
|
[count]f, [count]Ctrl-F, [count]Ctrl-V, [count]Space
|
||
|
scroll forward one window (or [count] lines).
|
||
|
|
||
|
[count]b, [count]Ctrl-B, [count]Alt-V
|
||
|
scroll backward one window (or [count] lines).
|
||
|
|
||
|
[count]z
|
||
|
scroll forward one window (and set window to [count]).
|
||
|
|
||
|
[count]w
|
||
|
scroll backward one window (and set window to [count]).
|
||
|
|
||
|
[count]Alt-Space
|
||
|
scroll forward one window, but don't stop at end-of-file.
|
||
|
|
||
|
[count]d, [count]Ctrl-D
|
||
|
scroll forward one half-window (and set half-window to [count]).
|
||
|
|
||
|
[count]u, [count]Ctrl-U
|
||
|
scroll backward one half-window (and set half-window to
|
||
|
[count]).
|
||
|
|
||
|
r, Ctrl-R, Ctrl-L
|
||
|
repaint screen.
|
||
|
|
||
|
R reload view preserving scroll position.
|
||
|
|
||
|
F toggle automatic forwarding. Roughly equivalent to periodic
|
||
|
file reload and scrolling to the bottom. The behaviour is simi-
|
||
|
lar to `tail -F` or F key in less.
|
||
|
|
||
|
a switch to the next viewer. Does nothing for preview constructed
|
||
|
via %q macro.
|
||
|
|
||
|
A switch to the previous viewer. Does nothing for preview con-
|
||
|
structed via %q macro.
|
||
|
|
||
|
i toggle raw mode (ignoring of defined viewers). Does nothing for
|
||
|
preview constructed via %q macro.
|
||
|
|
||
|
[count]/pattern
|
||
|
search forward for ([count]-th) matching line.
|
||
|
|
||
|
[count]?pattern
|
||
|
search backward for ([count]-th) matching line.
|
||
|
|
||
|
[count]n
|
||
|
repeat previous search (for [count]-th occurrence).
|
||
|
|
||
|
[count]N
|
||
|
repeat previous search in reverse direction (for [count]-th oc-
|
||
|
currence).
|
||
|
|
||
|
[count]g, [count]<, [count]Alt-<
|
||
|
scroll to the first line of the file (or line [count]).
|
||
|
|
||
|
[count]G, [count]>, [count]Alt->
|
||
|
scroll to the last line of the file (or line [count]).
|
||
|
|
||
|
[count]p, [count]%
|
||
|
scroll to the beginning of the file (or N percent into file).
|
||
|
|
||
|
v invoke an editor to edit the current file being viewed. The
|
||
|
command for editing is taken from the 'vicmd' or 'vixcmd' option
|
||
|
value and extended with middle line number prepended by a plus
|
||
|
sign and name of the current file.
|
||
|
|
||
|
All "Ctrl-W x" keys work the same was as in Normal mode. Active mode
|
||
|
is automatically changed on navigating among windows. When less-like
|
||
|
mode activated on file preview is left using one by "Ctrl-W x" keys,
|
||
|
its state is stored until another file is displayed using preview (it's
|
||
|
possible to leave the mode, hide preview pane, do something else, then
|
||
|
get back to the file and show preview pane again with previously stored
|
||
|
state in it).
|
||
|
|
||
|
Command line Mode
|
||
|
These keys are available in all submodes of the command line mode: com-
|
||
|
mand, search, prompt and filtering.
|
||
|
|
||
|
Down, Up, Left, Right, Home, End and Delete are extended keys and they
|
||
|
are not available if vifm is compiled with --disable-extended-keys op-
|
||
|
tion.
|
||
|
|
||
|
Esc, Ctrl-C
|
||
|
leave command line mode, cancels input. Cancelled input is
|
||
|
saved into appropriate history and can be recalled later.
|
||
|
|
||
|
Ctrl-M, Enter
|
||
|
execute command and leave command line mode.
|
||
|
|
||
|
Ctrl-I, Tab
|
||
|
complete command or its argument.
|
||
|
|
||
|
Shift-Tab
|
||
|
complete in reverse order.
|
||
|
|
||
|
Ctrl-_ stop completion and return original input.
|
||
|
|
||
|
Ctrl-B, Left
|
||
|
move cursor to the left.
|
||
|
|
||
|
Ctrl-F, Right
|
||
|
move cursor to the right.
|
||
|
|
||
|
Ctrl-A, Home
|
||
|
go to line beginning.
|
||
|
|
||
|
Ctrl-E, End
|
||
|
go to line end.
|
||
|
|
||
|
Alt-B go to the beginning of previous word.
|
||
|
|
||
|
Alt-F go to the end of next word.
|
||
|
|
||
|
Ctrl-U remove characters from cursor position till the beginning of
|
||
|
line.
|
||
|
|
||
|
Ctrl-K remove characters from cursor position till the end of line.
|
||
|
|
||
|
Ctrl-H, Backspace
|
||
|
remove character before the cursor.
|
||
|
|
||
|
Ctrl-D, Delete
|
||
|
remove character under the cursor.
|
||
|
|
||
|
Ctrl-W remove characters from cursor position till the beginning of
|
||
|
previous word.
|
||
|
|
||
|
Alt-D remove characters from cursor position till the beginning of
|
||
|
next word.
|
||
|
|
||
|
Ctrl-T swap the order of current and previous character and move cursor
|
||
|
forward or, if cursor past the end of line, swap the order of
|
||
|
two last characters in the line.
|
||
|
|
||
|
Alt-. insert last part of previous command to current cursor position.
|
||
|
Each next call will insert last part of older command.
|
||
|
|
||
|
Ctrl-G edit command-line content in external editor. See "Command line
|
||
|
editing" section for details.
|
||
|
|
||
|
Ctrl-N recall more recent command-line from history.
|
||
|
|
||
|
Ctrl-P recall older command-line from history.
|
||
|
|
||
|
Up recall more recent command-line from history, that begins as the
|
||
|
current command-line.
|
||
|
|
||
|
Down recall older command-line from history, that begins as the cur-
|
||
|
rent command-line.
|
||
|
|
||
|
Ctrl-] trigger abbreviation expansion.
|
||
|
|
||
|
Pasting special values
|
||
|
The shortcuts listed below insert specified values into current cursor
|
||
|
position. Last key of every shortcut references value that it inserts:
|
||
|
- c - [c]urrent file
|
||
|
- d - [d]irectory path
|
||
|
- e - [e]xtension of a file name
|
||
|
- r - [r]oot part of a file name
|
||
|
- t - [t]ail part of directory path
|
||
|
|
||
|
- a - [a]utomatic filter
|
||
|
- m - [m]anual filter
|
||
|
- = - local filter, which is bound to "=" in normal mode
|
||
|
|
||
|
Values related to filelist in current pane are available through Ctrl-X
|
||
|
prefix, while values from the other pane have doubled Ctrl-X key as
|
||
|
their prefix (doubled Ctrl-X is presumably easier to type than upper-
|
||
|
case letters; it's still easy to remap the keys to correspond to names
|
||
|
of similar macros).
|
||
|
|
||
|
Ctrl-X c
|
||
|
name of the current file of the active pane.
|
||
|
|
||
|
Ctrl-X d
|
||
|
path to the current directory of the active pane.
|
||
|
|
||
|
Ctrl-X e
|
||
|
extension of the current file of the active pane.
|
||
|
|
||
|
Ctrl-X r
|
||
|
name root of current file of the active pane.
|
||
|
|
||
|
Ctrl-X t
|
||
|
the last component of path to the current directory of the ac-
|
||
|
tive pane.
|
||
|
|
||
|
Ctrl-X Ctrl-X c
|
||
|
name of the current file of the inactive pane.
|
||
|
|
||
|
Ctrl-X Ctrl-X d
|
||
|
path to the current directory of the inactive pane.
|
||
|
|
||
|
Ctrl-X Ctrl-X e
|
||
|
extension of the current file of the inactive pane.
|
||
|
|
||
|
Ctrl-X Ctrl-X r
|
||
|
name root of current file of the inactive pane.
|
||
|
|
||
|
Ctrl-X Ctrl-X t
|
||
|
the last component of path to the current directory of the inac-
|
||
|
tive pane.
|
||
|
|
||
|
|
||
|
Ctrl-X a
|
||
|
value of implicit permanent filter (old name "automatic") of the
|
||
|
active pane.
|
||
|
|
||
|
Ctrl-X m
|
||
|
value of explicit permanent filter (old name "manual") of the
|
||
|
active pane.
|
||
|
|
||
|
Ctrl-X =
|
||
|
value of local filter of the active pane.
|
||
|
|
||
|
|
||
|
Ctrl-X /
|
||
|
last pattern from search history.
|
||
|
|
||
|
Command line editing
|
||
|
vifm provides a facility to edit several kinds of data, that is usually
|
||
|
edited in command-line mode, in external editor (using command speci-
|
||
|
fied by 'vicmd' or 'vixcmd' option). This has at least two advantages
|
||
|
over built-in command-line mode:
|
||
|
- one can use full power of Vim to edit text;
|
||
|
- finding and reusing history entries becomes possible.
|
||
|
|
||
|
The facility is supported by four input submodes of the command-line:
|
||
|
- command;
|
||
|
- forward search;
|
||
|
- backward search;
|
||
|
- file rename (see description of cw and cW normal mode keys).
|
||
|
|
||
|
Editing command-line using external editor is activated by the Ctrl-G
|
||
|
shortcut. It's also possible to do almost the same from Normal and
|
||
|
Visual modes using q:, q/ and q? commands.
|
||
|
|
||
|
Temporary file created for the purpose of editing the line has the fol-
|
||
|
lowing structure:
|
||
|
|
||
|
1. First line, which is either empty or contains text already entered
|
||
|
in command-line.
|
||
|
|
||
|
2. 2nd and all other lines with history items starting with the most
|
||
|
recent one. Altering this lines in any way won't change history
|
||
|
items stored by vifm.
|
||
|
|
||
|
After editing application is finished the first line of the file is
|
||
|
taken as the result of operation, when the application returns zero
|
||
|
exit code. If the application returns an error (see :cquit command in
|
||
|
Vim), all the edits made to the file are ignored, but the initial value
|
||
|
of the first line is saved in appropriate history.
|
||
|
|
||
|
More Mode
|
||
|
This is the mode that appears when status bar content is so big that it
|
||
|
doesn't fit on the screen. One can identify the mode by "-- More --"
|
||
|
message at the bottom.
|
||
|
|
||
|
The following keys are handled in this mode:
|
||
|
|
||
|
|
||
|
Enter, Ctrl-J, j or Down
|
||
|
scroll one line down.
|
||
|
|
||
|
Backspace, k or Up
|
||
|
scroll one line up.
|
||
|
|
||
|
|
||
|
d scroll one page (half of a screen) down.
|
||
|
|
||
|
u scroll one page (half of a screen) up.
|
||
|
|
||
|
|
||
|
Space, f or PageDown
|
||
|
scroll down a screen.
|
||
|
|
||
|
b or PageUp
|
||
|
scroll up a screen.
|
||
|
|
||
|
|
||
|
G scroll to the bottom.
|
||
|
|
||
|
g scroll to the top.
|
||
|
|
||
|
|
||
|
q, Escape or Ctrl-C
|
||
|
quit the mode.
|
||
|
|
||
|
: switch to command-line mode.
|
||
|
|
||
|
Commands
|
||
|
Commands are executed with :command_name<Enter>
|
||
|
|
||
|
Commented out lines should start with the double quote symbol ("),
|
||
|
which may be preceded by whitespace characters intermixed with colons.
|
||
|
Inline comments can be added at the end of the line after double quote
|
||
|
symbol, only last line of a multi-line command can contain such com-
|
||
|
ment. Not all commands support inline comments as their syntax con-
|
||
|
flicts with names of registers and fields where double quotes are al-
|
||
|
lowed.
|
||
|
|
||
|
Most of the commands have two forms: complete and the short one. Exam-
|
||
|
ple:
|
||
|
|
||
|
:noh[lsearch]
|
||
|
|
||
|
This means the complete command is nohlsearch, and the short one is
|
||
|
noh.
|
||
|
|
||
|
Most of command-line commands completely reset selection in the current
|
||
|
view. However, there are several exceptions:
|
||
|
|
||
|
- `:invert s` most likely leaves some files selected;
|
||
|
|
||
|
- :normal command (when it doesn't leave command-line mode);
|
||
|
|
||
|
- :if and :else commands don't affect selection on successful execu-
|
||
|
tion.
|
||
|
|
||
|
'|' can be used to separate commands, so you can give multiple commands
|
||
|
in one line. If you want to use '|' in an argument, precede it with
|
||
|
'\'.
|
||
|
|
||
|
These commands see '|' as part of their arguments even when it's es-
|
||
|
caped:
|
||
|
|
||
|
:[range]!
|
||
|
:autocmd
|
||
|
:cabbrev
|
||
|
:cmap
|
||
|
:cnoreabbrev
|
||
|
:cnoremap
|
||
|
:command
|
||
|
:dmap
|
||
|
:dnoremap
|
||
|
:filetype
|
||
|
:fileviewer
|
||
|
:filextype
|
||
|
:map
|
||
|
:mmap
|
||
|
:mnoremap
|
||
|
:nmap
|
||
|
:nnoremap
|
||
|
:noremap
|
||
|
:normal
|
||
|
:qmap
|
||
|
:qnoremap
|
||
|
:vmap
|
||
|
:vnoremap
|
||
|
:wincmd
|
||
|
:windo
|
||
|
:winrun
|
||
|
|
||
|
To be able to use another command after one of these, wrap it with the
|
||
|
:execute command. An example:
|
||
|
|
||
|
if filetype('.') == 'reg' | execute '!!echo regular file' | endif
|
||
|
|
||
|
:[count]
|
||
|
|
||
|
:number
|
||
|
move to the file number.
|
||
|
:12 would move to the 12th file in the list.
|
||
|
:0 move to the top of the list.
|
||
|
:$ move to the bottom of the list.
|
||
|
|
||
|
:[count]command
|
||
|
The only builtin :[count]command are :[count]d[elete] and
|
||
|
:[count]y[ank].
|
||
|
|
||
|
:d3 would delete three files starting at the current file position
|
||
|
moving down.
|
||
|
|
||
|
:3d would delete one file at the third line in the list.
|
||
|
|
||
|
:command [args]
|
||
|
|
||
|
:[range]!program
|
||
|
execute command via shell. Accepts macros.
|
||
|
|
||
|
:[range]!command &
|
||
|
|
||
|
same as above, but the command is run in the background using vifm's
|
||
|
means.
|
||
|
|
||
|
Programs that write to stderr create error dialogs showing errors of
|
||
|
the command.
|
||
|
|
||
|
Note the space before ampersand symbol, if you omit it, command will be
|
||
|
run in the background using job control of your shell.
|
||
|
|
||
|
Accepts macros.
|
||
|
|
||
|
:!!
|
||
|
|
||
|
:[range]!!command
|
||
|
same as :!, but pauses before returning.
|
||
|
|
||
|
:!! repeat the last command.
|
||
|
|
||
|
:alink
|
||
|
|
||
|
:[range]alink[!?]
|
||
|
create absolute symbolic links to files in directory of inactive
|
||
|
view. With "?" prompts for destination file names in an edi-
|
||
|
tor. "!" forces overwrite.
|
||
|
|
||
|
:[range]alink[!] path
|
||
|
create absolute symbolic links to files in directory specified
|
||
|
by the path (absolute or relative to directory of inactive
|
||
|
view).
|
||
|
|
||
|
:[range]alink[!] name1 name2...
|
||
|
create absolute symbolic links of files in directory of other
|
||
|
view giving each next link a corresponding name from the argu-
|
||
|
ment list.
|
||
|
|
||
|
:apropos
|
||
|
|
||
|
:apropos keyword...
|
||
|
create a menu of items returned by the apropos command. Select-
|
||
|
ing an item in the menu opens corresponding man page. By de-
|
||
|
fault the command relies on the external "apropos" utility,
|
||
|
which can be customized by altering value of the 'aproposprg'
|
||
|
option. See "Menus and dialogs" section for controls.
|
||
|
|
||
|
:autocmd
|
||
|
|
||
|
:au[tocmd] {event} {pat} {cmd}
|
||
|
register autocommand for the {event}, which can be:
|
||
|
- DirEnter - triggered after directory is changed
|
||
|
Event name is case insensitive.
|
||
|
|
||
|
{pat} is a comma-separated list of modified globs patterns,
|
||
|
which can contain tilde or environment variables. All paths use
|
||
|
slash ('/') as directory separator. The pattern can start with
|
||
|
a '!', which negates it. Patterns that do not contain slashes
|
||
|
are matched against the last item of the path only (e.g. "dir"
|
||
|
in "/path/dir"). Literal comma can be entered by doubling it.
|
||
|
Two modifications to globs matching are as follows:
|
||
|
- * - never matches a slash (i.e., can signify single direc-
|
||
|
tory level)
|
||
|
- ** - matches any character (i.e., can match path of arbi-
|
||
|
trary depth)
|
||
|
|
||
|
{cmd} is a :command or several of them separated with '|'.
|
||
|
|
||
|
Examples of patterns:
|
||
|
- conf.d - matches conf.d directory anywhere
|
||
|
- *.d - matches directories ending with ".d" anywhere
|
||
|
- **.git - matches something.git, but not .git anywhere
|
||
|
- **/.git/** - matches /path/.git/objects, but not /path/.git
|
||
|
- **/.git/**/ - matches /path/.git/ only (because of trailing
|
||
|
slash)
|
||
|
- /etc/* - matches /etc/conf.d/, /etc/X11, but not
|
||
|
/etc/X11/fs
|
||
|
- /etc/**/*.d - matches /etc/conf.d, /etc/X11/conf.d, etc.
|
||
|
- /etc/**/* - matches /etc/ itself and any file below it
|
||
|
- /etc/**/** - matches /etc/ itself and any file below it
|
||
|
|
||
|
:au[tocmd] [{event}] [{pat}]
|
||
|
list those autocommands that match given event-pattern combina-
|
||
|
tion.
|
||
|
{event} and {pat} can be omitted to list all autocommands. To
|
||
|
list any autocommands for specific pattern one can use * place-
|
||
|
holder in place of {event}.
|
||
|
|
||
|
:au[tocmd]! [{event}] [{pat}]
|
||
|
remove autocommands that match given event-pattern combination.
|
||
|
Syntax is the same as for listing above.
|
||
|
|
||
|
:apropos
|
||
|
repeat last :apropos command.
|
||
|
|
||
|
:bmark
|
||
|
|
||
|
:bmark tag1 [tag2 [tag3...]]
|
||
|
bookmark current directory with specified tags.
|
||
|
|
||
|
:bmark! path tag1 [tag2 [tag3...]]
|
||
|
same as :bmark, but allows bookmarking specific path instead of
|
||
|
current directory. This is for use in vifmrc and for bookmark-
|
||
|
ing files.
|
||
|
|
||
|
Path can contain macros that expand to single path (%c, %C, %d,
|
||
|
%D) or those that can expand to multiple paths, but contain only
|
||
|
one (%f, %F, %rx). The latter is done for convenience on using
|
||
|
the command interactively. Complex macros that include spaces
|
||
|
(e.g. "%c:gs/ /_") should be escaped.
|
||
|
|
||
|
:bmarks
|
||
|
|
||
|
:bmarks
|
||
|
display all bookmarks in a menu.
|
||
|
|
||
|
:bmarks [tag1 [tag2...]]
|
||
|
display menu of bookmarks that include all of the specified
|
||
|
tags. See "Menus and dialogs" section for controls.
|
||
|
|
||
|
:bmgo
|
||
|
|
||
|
:bmgo [tag1 [tag2...]]
|
||
|
when there are more than one match acts exactly like :bmarks,
|
||
|
otherwise navigates to single match immediately (and fails if
|
||
|
there is no match).
|
||
|
|
||
|
:cabbrev
|
||
|
|
||
|
:ca[bbrev]
|
||
|
display menu of command-line mode abbreviations. See "Menus and
|
||
|
dialogs" section for controls.
|
||
|
|
||
|
:ca[bbrev] lhs-prefix
|
||
|
display command-line mode abbreviations which left-hand side
|
||
|
starts with specified prefix.
|
||
|
|
||
|
:ca[bbrev] lhs rhs
|
||
|
register new or overwrites existing abbreviation for command-
|
||
|
line mode. rhs can contain spaces and any special sequences ac-
|
||
|
cepted in rhs of mappings (see "Mappings" section below). Ab-
|
||
|
breviations are expanded non-recursively.
|
||
|
|
||
|
:cnoreabbrev
|
||
|
|
||
|
:cnorea[bbrev]
|
||
|
display menu of command-line mode abbreviations. See "Menus and
|
||
|
dialogs" section for controls.
|
||
|
|
||
|
:cnorea[bbrev] lhs-prefix
|
||
|
display command-line mode abbreviations which left-hand side
|
||
|
starts with specified prefix.
|
||
|
|
||
|
:cnorea[bbrev] lhs rhs
|
||
|
same as :cabbrev, but mappings in rhs are ignored during expan-
|
||
|
sion.
|
||
|
|
||
|
:cd
|
||
|
|
||
|
:cd or :cd ~ or :cd $HOME
|
||
|
change to home directory.
|
||
|
|
||
|
:cd - go to the last visited directory.
|
||
|
|
||
|
:cd ~/dir
|
||
|
change directory to ~/dir.
|
||
|
|
||
|
:cd /curr/dir /other/dir
|
||
|
change directory of the current pane to /curr/dir and directory
|
||
|
of the other pane to /other/dir. Relative paths are assumed to
|
||
|
be relative to directory of current view. Command won't fail if
|
||
|
one of directories is invalid. All forms of the command accept
|
||
|
macros.
|
||
|
|
||
|
:cd! /dir
|
||
|
same as :cd /dir /dir.
|
||
|
|
||
|
:cds
|
||
|
|
||
|
:cds[!] pattern string
|
||
|
navigate to path obtained by substituting first match in current
|
||
|
path. Arguments can include slashes, but starting first argu-
|
||
|
ment with a separator will activate below form of the command.
|
||
|
Specifying "!" changes directory of both panes.
|
||
|
|
||
|
Available flags:
|
||
|
|
||
|
- i - ignore case (the 'ignorecase' and 'smartcase' options are not
|
||
|
used)
|
||
|
|
||
|
- I - don't ignore case (the 'ignorecase' and 'smartcase' options are
|
||
|
not used)
|
||
|
|
||
|
:cds[!]/pattern/string/[flags]
|
||
|
same as above, but with :substitute-like syntax. Other punctua-
|
||
|
tion characters can be used as separators.
|
||
|
|
||
|
:change
|
||
|
|
||
|
:c[hange]
|
||
|
show a dialog to alter properties of files.
|
||
|
|
||
|
:chmod
|
||
|
|
||
|
:[range]chmod
|
||
|
display file attributes (permission on *nix and properties on
|
||
|
Windows) change dialog.
|
||
|
|
||
|
:[range]chmod[!] arg...
|
||
|
only for *nix
|
||
|
change permissions for files. See `man 1 chmod` for arg format.
|
||
|
"!" means set permissions recursively.
|
||
|
|
||
|
:chown
|
||
|
|
||
|
:[range]chown
|
||
|
only for *nix
|
||
|
same as co key in normal mode.
|
||
|
|
||
|
:[range]chown [user][:][group]
|
||
|
only for *nix
|
||
|
change owner and/or group of files. Operates on directories re-
|
||
|
cursively.
|
||
|
|
||
|
:clone
|
||
|
|
||
|
:[range]clone[!?]
|
||
|
clones files in current directory. With "?" vifm will open vi
|
||
|
to edit file names. "!" forces overwrite. Macros are expanded.
|
||
|
|
||
|
:[range]clone[!] path
|
||
|
clones files to directory specified with the path (absolute or
|
||
|
relative to current directory). "!" forces overwrite. Macros
|
||
|
are expanded.
|
||
|
|
||
|
:[range]clone[!] name1 name2...
|
||
|
clones files in current directory giving each next clone a cor-
|
||
|
responding name from the argument list. "!" forces overwrite.
|
||
|
Macros are expanded.
|
||
|
|
||
|
:colorscheme
|
||
|
|
||
|
:colo[rscheme]?
|
||
|
print current color scheme name on the status bar.
|
||
|
|
||
|
:colo[rscheme]
|
||
|
display a menu with a list of available color schemes. You can
|
||
|
choose primary color scheme here. It is used for view if no di-
|
||
|
rectory specific colorscheme fits current path. It's also used
|
||
|
to set border color (except view titles) and colors in menus and
|
||
|
dialogs. See "Menus and dialogs" section for controls.
|
||
|
|
||
|
:colo[rscheme] color_scheme_name
|
||
|
change primary color scheme to color_scheme_name. In case of
|
||
|
errors (e.g. some colors are not supported by terminal) either
|
||
|
nothing is changed or color scheme is reset to builtin colors to
|
||
|
ensure that TUI is left in a usable state.
|
||
|
|
||
|
:colo[rscheme] color_scheme_name directory
|
||
|
associate directory with the color scheme. The directory argu-
|
||
|
ment can be either absolute or relative path when :colorscheme
|
||
|
command is executed from command line, but mandatory should be
|
||
|
an absolute path when the command is executed in scripts loaded
|
||
|
at startup (until vifm is completely loaded).
|
||
|
|
||
|
:colo[rscheme] color_scheme_name color_scheme_name...
|
||
|
loads the first color scheme in the order given that exists and
|
||
|
is supported by the terminal. If none matches, current one re-
|
||
|
mains unchanged. For example:
|
||
|
|
||
|
" use a separate color scheme for panes which are inside FUSE mounts
|
||
|
execute 'colorscheme in-fuse' &fusehome
|
||
|
|
||
|
:comclear
|
||
|
|
||
|
:comc[lear]
|
||
|
remove all user defined commands.
|
||
|
|
||
|
:command
|
||
|
|
||
|
:com[mand]
|
||
|
display a menu of user commands. See "Menus and dialogs" sec-
|
||
|
tion for controls.
|
||
|
|
||
|
:com[mand] prefix
|
||
|
display user defined commands that start with the prefix.
|
||
|
|
||
|
:com[mand] name action[ &]
|
||
|
set or redefine a user command.
|
||
|
Use :com[mand]! to overwrite a previously set command of the
|
||
|
same name. Builtin commands can't be redefined.
|
||
|
User commands must start with an upper or lower case letter.
|
||
|
Command name can't contain special symbols except for a single
|
||
|
trailing '?' or '!'. Numbers are allowed provided that they
|
||
|
don't cause parsing ambiguity (no command name prefix that pre-
|
||
|
cedes a digit can match an existing command unless it has a
|
||
|
digit in the same place), for example:
|
||
|
" good
|
||
|
:command mp3 command
|
||
|
" good
|
||
|
:command mp4 command
|
||
|
:command mp3! command
|
||
|
:command mp4? command
|
||
|
" bad
|
||
|
:command mp command
|
||
|
:command mp44 command
|
||
|
" good
|
||
|
:command mp4c command
|
||
|
|
||
|
User commands are run in a shell by default (see below for syn-
|
||
|
tax of other options). To run a command in the background you
|
||
|
must mark it as a background command by adding " &" after the
|
||
|
command's action (e.g., `:com rm rm %f &`).
|
||
|
User commands of all kinds have macros expanded in them. See
|
||
|
"Command macros" section for more information.
|
||
|
|
||
|
:com[mand] name /pattern
|
||
|
set search pattern.
|
||
|
|
||
|
:com[mand] name =pattern
|
||
|
set local filter value.
|
||
|
|
||
|
:com[mand] name filter{:filter args}
|
||
|
set file name filter (see :filter command description). For ex-
|
||
|
ample:
|
||
|
|
||
|
" display only audio files
|
||
|
:command onlyaudio filter/.+.\(mp3|wav|mp3|flac|ogg|m4a|wma|ape\)$/i
|
||
|
" display everything except audio files
|
||
|
:command noaudio filter!/.+.\(mp3|wav|mp3|flac|ogg|m4a|wma|ape\)$/i
|
||
|
|
||
|
:com[mand] name :commands
|
||
|
set kind of an alias for internal commands (like in a shell).
|
||
|
Passes range given to alias to an aliased command, so running
|
||
|
:%cp after
|
||
|
:command cp :copy %a
|
||
|
equals
|
||
|
:%copy
|
||
|
|
||
|
:compare
|
||
|
|
||
|
:compare [byname | bysize | bycontents | listall | listunique |
|
||
|
listdups | ofboth | ofone | groupids | grouppaths | skipempty]...
|
||
|
compare files in one or two views according to the arguments.
|
||
|
The default is "bycontents listall ofboth grouppaths". See
|
||
|
"Compare views" section below for details. Diff structure is
|
||
|
incompatible with alternative representations, so values of
|
||
|
'lsview' and 'millerview' options are ignored.
|
||
|
|
||
|
:copen
|
||
|
|
||
|
:cope[n]
|
||
|
opens menu with contents of the last displayed menu with naviga-
|
||
|
tion to files by default, if any.
|
||
|
|
||
|
:copy
|
||
|
|
||
|
:[range]co[py][!?][ &]
|
||
|
copy files to directory of other view. With "?" prompts for
|
||
|
destination file names in an editor. "!" forces overwrite.
|
||
|
|
||
|
:[range]co[py][!] path[ &]
|
||
|
copy files to directory specified with the path (absolute or
|
||
|
relative to directory of other view). "!" forces overwrite.
|
||
|
|
||
|
:[range]co[py][!] name1 name2...[ &]
|
||
|
copy files to directory of other view giving each next file a
|
||
|
corresponding name from the argument list. "!" forces over-
|
||
|
write.
|
||
|
|
||
|
:cquit
|
||
|
|
||
|
:cq[uit][!]
|
||
|
same as :quit, but also aborts directory choosing via
|
||
|
--choose-dir (empties output file) and returns non-zero exit
|
||
|
code.
|
||
|
|
||
|
:cunabbrev
|
||
|
|
||
|
:cuna[bbrev] lhs
|
||
|
unregister command-line mode abbreviation by its lhs.
|
||
|
|
||
|
:cuna[bbrev] rhs
|
||
|
unregister command-line mode abbreviation by its rhs, so that
|
||
|
abbreviation could be removed even after expansion.
|
||
|
|
||
|
:delbmarks
|
||
|
|
||
|
:delbmarks
|
||
|
remove bookmarks from current directory.
|
||
|
|
||
|
:delbmarks tag1 [tag2 [tag3...]]
|
||
|
remove set of bookmarks that include all of the specified tags.
|
||
|
|
||
|
:delbmarks!
|
||
|
remove all bookmarks.
|
||
|
|
||
|
:delbmarks! path1 [path2 [path3...]]
|
||
|
remove bookmarks of listed paths.
|
||
|
|
||
|
:delcommand
|
||
|
|
||
|
:delc[ommand] user_command
|
||
|
remove user defined command named user_command.
|
||
|
|
||
|
:delete
|
||
|
|
||
|
:[range]d[elete][!][ &]
|
||
|
delete selected file or files. "!" means complete removal
|
||
|
(omitting trash).
|
||
|
|
||
|
:[range]d[elete][!] [reg] [count][ &]
|
||
|
delete selected or [count] files to the reg register. "!" means
|
||
|
complete removal (omitting trash).
|
||
|
|
||
|
:delmarks
|
||
|
|
||
|
:delm[arks]!
|
||
|
delete all marks.
|
||
|
|
||
|
:delm[arks] marks ...
|
||
|
delete specified marks, each argument is treated as a set of
|
||
|
marks.
|
||
|
|
||
|
:delsession
|
||
|
|
||
|
:delsession
|
||
|
delete specified session if it was stored previously. Deleting
|
||
|
current session doesn't detach it.
|
||
|
|
||
|
:display
|
||
|
|
||
|
:di[splay]
|
||
|
display menu with registers content.
|
||
|
|
||
|
:di[splay] list ...
|
||
|
display the contents of the numbered and named registers that
|
||
|
are mentioned in list (for example "az to display "", "a and "z
|
||
|
content).
|
||
|
|
||
|
:dirs
|
||
|
|
||
|
:dirs display directory stack in a menu. See "Menus and dialogs" sec-
|
||
|
tion for controls.
|
||
|
|
||
|
:echo
|
||
|
|
||
|
:ec[ho] [<expr>...]
|
||
|
evaluate each argument as an expression and output them sepa-
|
||
|
rated with a space. See help on :let command for a definition
|
||
|
of <expr>.
|
||
|
|
||
|
:edit
|
||
|
|
||
|
:[range]e[dit] [file...]
|
||
|
open selected or passed file(s) in editor. Macros and environ-
|
||
|
ment variables are expanded.
|
||
|
|
||
|
:else
|
||
|
|
||
|
:el[se]
|
||
|
execute commands until next matching :endif if all other condi-
|
||
|
tions didn't match. See also help on :if and :endif commands.
|
||
|
|
||
|
:elseif
|
||
|
|
||
|
:elsei[f] {expr1}
|
||
|
execute commands until next matching :elseif, :else or :endif if
|
||
|
conditions of previous :if and :elseif branches were evaluated
|
||
|
to zero. See also help on :if and :endif commands.
|
||
|
|
||
|
:empty
|
||
|
|
||
|
:empty permanently remove files from all existing non-empty trash di-
|
||
|
rectories (see "Trash directory" section below). Trash directo-
|
||
|
ries which are specified via %r and/or %u also get deleted com-
|
||
|
pletely. Also remove all operations from undolist that have no
|
||
|
sense after :empty and remove all records about files located
|
||
|
inside directories from all registers. Removal is performed as
|
||
|
background task with undetermined amount of work and can be
|
||
|
checked via :jobs menu.
|
||
|
|
||
|
:endif
|
||
|
|
||
|
:en[dif]
|
||
|
end conditional block. See also help on :if and :else commands.
|
||
|
|
||
|
:execute
|
||
|
|
||
|
:exe[cute] [<expr>...]
|
||
|
evaluate each argument as an expression and join results sepa-
|
||
|
rated by a space to get a single string which is then executed
|
||
|
as a command-line command. See help on :let command for a defi-
|
||
|
nition of <expr>.
|
||
|
|
||
|
:exit
|
||
|
|
||
|
:exi[t][!]
|
||
|
same as :quit.
|
||
|
|
||
|
:file
|
||
|
|
||
|
:f[ile][ &]
|
||
|
display menu of programs set for the file type of the current
|
||
|
file. " &" forces running associated program in background.
|
||
|
See "Menus and dialogs" section for controls.
|
||
|
|
||
|
:f[ile] arg[ &]
|
||
|
run associated command that begins with the arg skipping opening
|
||
|
menu. " &" forces running associated program in background.
|
||
|
|
||
|
:filetype
|
||
|
|
||
|
:filet[ype] pattern-list [{descr}]def_prog[ &],[{descr}]prog2[ &],...
|
||
|
associate given program list to each of the patterns. Associ-
|
||
|
ated program (command) is used by handlers of l and Enter keys
|
||
|
(and also in the :file menu). If you need to insert comma into
|
||
|
command just double it (",,"). Space followed by an ampersand
|
||
|
as two last characters of a command means running of the command
|
||
|
in the background. Optional description can be given to each
|
||
|
command to ease understanding of what command will do in the
|
||
|
:file menu. Vifm will try the rest of the programs for an asso-
|
||
|
ciation when the default isn't found. When program entry
|
||
|
doesn't contain any of vifm macros, name of current file is ap-
|
||
|
pended as if program entry ended with %c macro on *nix and %"c
|
||
|
on Windows. On Windows path to executables containing spaces
|
||
|
can (and should be for correct work with such paths) be double
|
||
|
quoted. See "Patterns" section below for pattern definition and
|
||
|
"Selection" section for how selection is handled. See also "Au-
|
||
|
tomatic FUSE mounts" section below. Example for zip archives
|
||
|
and several actions:
|
||
|
|
||
|
filetype *.zip,*.jar,*.war,*.ear
|
||
|
\ {Mount with fuse-zip}
|
||
|
\ FUSE_MOUNT|fuse-zip %SOURCE_FILE %DESTINATION_DIR,
|
||
|
\ {View contents}
|
||
|
\ zip -sf %c | less,
|
||
|
\ {Extract here}
|
||
|
\ tar -xf %c,
|
||
|
|
||
|
Note that on OS X when `open` is used to call an app, vifm is
|
||
|
unable to check whether that app is actually available. So if
|
||
|
automatic skipping of programs that aren't there is desirable,
|
||
|
`open` should be replaced with an actual command.
|
||
|
|
||
|
:filet[ype] filename
|
||
|
list (in menu mode) currently registered patterns that match
|
||
|
specified file name. Same as ":filextype filename".
|
||
|
|
||
|
:filextype
|
||
|
|
||
|
:filex[type] pattern-list [{ description }] def_program,program2,...
|
||
|
same as :filetype, but this command is ignored if not running in
|
||
|
X. In X :filextype is equal to :filetype. See "Patterns" sec-
|
||
|
tion below for pattern definition and "Selection" section for
|
||
|
how selection is handled. See also "Automatic FUSE mounts" sec-
|
||
|
tion below.
|
||
|
|
||
|
For example, consider the following settings (the order might
|
||
|
seem strange, but it's for the demonstration purpose):
|
||
|
|
||
|
filetype *.html,*.htm
|
||
|
\ {View in lynx}
|
||
|
\ lynx
|
||
|
filextype *.html,*.htm
|
||
|
\ {Open with dwb}
|
||
|
\ dwb %f %i &,
|
||
|
filetype *.html,*.htm
|
||
|
\ {View in links}
|
||
|
\ links
|
||
|
filextype *.html,*.htm
|
||
|
\ {Open with firefox}
|
||
|
\ firefox %f &,
|
||
|
\ {Open with uzbl}
|
||
|
\ uzbl-browser %f %i &,
|
||
|
|
||
|
If you're using vifm inside a terminal emulator that is running
|
||
|
in graphical environment (when X is used on *nix; always on Win-
|
||
|
dows), vifm attempts to run application in this order:
|
||
|
|
||
|
1. lynx
|
||
|
2. dwb
|
||
|
3. links
|
||
|
4. firefox
|
||
|
5. uzbl
|
||
|
|
||
|
If there is no graphical environment (checked by presence of
|
||
|
non-empty $DISPLAY or $WAYLAND_DISPLAY environment variable on
|
||
|
*nix; never happens on Windows), the list will look like:
|
||
|
|
||
|
1. lynx
|
||
|
2. links
|
||
|
|
||
|
Just as if all :filextype commands were not there.
|
||
|
|
||
|
The purpose of such differentiation is to allow comfortable use
|
||
|
of vifm with same settings in desktop environment/through remote
|
||
|
connection (SSH)/in native console.
|
||
|
|
||
|
Note that on OS X $DISPLAY isn't defined unless you define it,
|
||
|
so :filextype should be used only if you set $DISPLAY in some
|
||
|
way.
|
||
|
|
||
|
:filext[ype] filename
|
||
|
list (in menu mode) currently registered patterns that match
|
||
|
specified file name. Same as ":filetype filename".
|
||
|
|
||
|
:fileviewer
|
||
|
|
||
|
:filev[iewer] pattern-list command1,command2,...
|
||
|
register specified list of commands as viewers for each of the
|
||
|
patterns. Viewer is a command which output is captured and dis-
|
||
|
played in one of the panes of vifm after pressing "e" or running
|
||
|
:view command. When the command doesn't contain any of vifm
|
||
|
macros, name of current file is appended as if command ended
|
||
|
with %c macro. Comma escaping and missing commands processing
|
||
|
rules as for :filetype apply to this command. See "Patterns"
|
||
|
section below for pattern definition. Supports Lua handlers.
|
||
|
|
||
|
Example for zip archives:
|
||
|
|
||
|
fileviewer *.zip,*.jar,*.war,*.ear zip -sf %c, echo "No zip to preview:"
|
||
|
|
||
|
:filev[iewer] filename
|
||
|
list (in menu mode) currently registered patterns that match
|
||
|
specified filename.
|
||
|
|
||
|
:filter
|
||
|
|
||
|
:filter[!] {pattern}
|
||
|
filter files matching the pattern out of directory listings.
|
||
|
'!' controls state of filter inversion after updating filter
|
||
|
value (see also 'cpoptions' description). Filter is matched
|
||
|
case sensitively on *nix and case insensitively on Windows. See
|
||
|
"File Filters" and "Patterns" sections.
|
||
|
|
||
|
Example:
|
||
|
|
||
|
" filter all files ending in .o from the filelist.
|
||
|
:filter /.o$/
|
||
|
|
||
|
|
||
|
:filter[!] {empty-pattern}
|
||
|
same as above, but use last search pattern as pattern value.
|
||
|
|
||
|
Example:
|
||
|
|
||
|
:filter //I
|
||
|
|
||
|
|
||
|
:filter
|
||
|
reset filter (set it to an empty string) and show all files.
|
||
|
|
||
|
:filter!
|
||
|
same as :invert.
|
||
|
|
||
|
:filter?
|
||
|
show information on local, name and auto filters.
|
||
|
|
||
|
:find
|
||
|
|
||
|
:[range]fin[d] pattern
|
||
|
display results of find command in the menu. Searches among se-
|
||
|
lected files if any. Accepts macros. By default the command
|
||
|
relies on the external "find" utility, which can be customized
|
||
|
by altering value of the 'findprg' option.
|
||
|
|
||
|
:[range]fin[d] -opt...
|
||
|
same as :find above, but user defines all find arguments.
|
||
|
Searches among selected files if any.
|
||
|
|
||
|
:[range]fin[d] path -opt...
|
||
|
same as :find above, but user defines all find arguments. Ig-
|
||
|
nores selection and range.
|
||
|
|
||
|
:[range]fin[d]
|
||
|
repeat last :find command.
|
||
|
|
||
|
:finish
|
||
|
|
||
|
:fini[sh]
|
||
|
stop sourcing a script. Can only be used in a vifm script file.
|
||
|
This is a quick way to skip the rest of the file.
|
||
|
|
||
|
:goto
|
||
|
|
||
|
:go[to]
|
||
|
change directory if necessary and put specified path under the
|
||
|
cursor. The path should be existing non-root path. Macros and
|
||
|
environment variables are expanded.
|
||
|
|
||
|
:grep
|
||
|
|
||
|
:[range]gr[ep][!] pattern
|
||
|
will show results of grep command in the menu. Add "!" to re-
|
||
|
quest inversion of search (look for lines that do not match pat-
|
||
|
tern). Searches among selected files if any and no range given.
|
||
|
Ignores binary files by default. By default the command relies
|
||
|
on the external "grep" utility, which can be customized by al-
|
||
|
tering value of the 'grepprg' option.
|
||
|
|
||
|
:[range]gr[ep][!] -opt...
|
||
|
same as :grep above, but user defines all grep arguments, which
|
||
|
are not escaped. Searches among selected files if any.
|
||
|
|
||
|
:[range]gr[ep][!]
|
||
|
repeat last :grep command. "!" of this command inverts "!" in
|
||
|
repeated command.
|
||
|
|
||
|
:help
|
||
|
|
||
|
:h[elp]
|
||
|
show the help file.
|
||
|
|
||
|
:h[elp] argument
|
||
|
is the same as using ':h argument' in vim. Use vifm-<something>
|
||
|
to get help on vifm (tab completion works). This form of the
|
||
|
command doesn't work when 'vimhelp' option is off.
|
||
|
|
||
|
:hideui
|
||
|
|
||
|
:hideui
|
||
|
hide interface to show previous commands' output.
|
||
|
|
||
|
:highlight
|
||
|
|
||
|
:hi[ghlight]
|
||
|
display information about all highlight groups active at the mo-
|
||
|
ment.
|
||
|
|
||
|
:hi[ghlight] clear
|
||
|
reset all highlighting to builtin defaults and removed all file-
|
||
|
name-specific rules.
|
||
|
|
||
|
:hi[ghlight] clear ( {pat1,pat2,...} | /regexp/ )
|
||
|
remove specified rule.
|
||
|
|
||
|
:hi[ghlight] ( group-name | {pat1,pat2,...} | /regexp/ )
|
||
|
display information on given highlight group or file name pat-
|
||
|
tern of color scheme used in the active view.
|
||
|
|
||
|
:hi[ghlight] ( group-name | {pat1,pat2,...} | /regexp/[iI] )
|
||
|
cterm=style | ctermfg=color | ctermbg=color | gui=style | guifg=color |
|
||
|
guibg=color
|
||
|
set style (cterm, gui), foreground (ctermfg, guifg) and/or back-
|
||
|
ground (ctermbg, guibg) parameters of highlight group or file
|
||
|
name pattern for color scheme used in the active view.
|
||
|
|
||
|
All style values as well as color names are case insensitive.
|
||
|
|
||
|
Available style values (some of them can be combined):
|
||
|
- bold
|
||
|
- underline
|
||
|
- reverse or inverse
|
||
|
- standout
|
||
|
- italic (on unsupported systems becomes reverse)
|
||
|
- combine - add attributes of current group to attributes of the par-
|
||
|
ent in group hierarchy (see below) instead of replacing them
|
||
|
- none
|
||
|
|
||
|
Available group-name values:
|
||
|
- Win - color of all windows (views, dialogs, menus) and default color
|
||
|
for their content (e.g. regular files in views)
|
||
|
- AuxWin - color of auxiliary areas of windows
|
||
|
- OtherWin - color of inactive pane
|
||
|
- Border - color of vertical parts of the border
|
||
|
- TabLine - tab line color (for 'tabscope' set to "global")
|
||
|
- TabLineSel - color of the tip of selected tab (regardless of 'tab-
|
||
|
scope')
|
||
|
- TopLine - top line color of the other pane
|
||
|
- TopLineSel - top line color of the current pane
|
||
|
- CmdLine - the command line/status bar color
|
||
|
- ErrorMsg - color of error messages in the status bar
|
||
|
- StatusLine - color of the line above the status bar
|
||
|
- JobLine - color of job line that appears above the status line
|
||
|
- WildMenu - color of the wild menu items
|
||
|
- SuggestBox - color of key suggestion box
|
||
|
- CurrLine - line at cursor position in active view
|
||
|
- OtherLine - line at cursor position in inactive view
|
||
|
- OddLine - color of every second entry line in a pane
|
||
|
- LineNr - line number column of views
|
||
|
- Selected - color of selected files
|
||
|
- Directory - color of directories
|
||
|
- Link - color of symbolic links in the views
|
||
|
- BrokenLink - color of broken symbolic links
|
||
|
- HardLink - color of regular files with more than one hard link
|
||
|
- Socket - color of sockets
|
||
|
- Device - color of block and character devices
|
||
|
- Executable - color of executable files
|
||
|
- Fifo - color of fifo pipes
|
||
|
- CmpMismatch - color of mismatched files in side-by-side comparison
|
||
|
by path
|
||
|
- User1..User9 - 9 colors which can be used via %* 'statusline' macro
|
||
|
|
||
|
Available colors:
|
||
|
- -1 or default or none - default or transparent
|
||
|
- black and lightblack
|
||
|
- red and lightred
|
||
|
- green and lightgreen
|
||
|
- yellow and lightyellow
|
||
|
- blue and lightblue
|
||
|
- magenta and lightmagenta
|
||
|
- cyan and lightcyan
|
||
|
- white and lightwhite
|
||
|
- 0-255 - corresponding colors from 256-color palette (for ctermfg and
|
||
|
ctermbg)
|
||
|
- #rrggbb - direct ("gui", "true", 24-bit) color in hex-notation, each
|
||
|
of the three compontents are in the range 0x00 to 0xff (for guifg and
|
||
|
guibg)
|
||
|
|
||
|
Light versions of colors are regular colors with bold attribute set au-
|
||
|
tomatically in terminals that have less than 16 colors. So order of
|
||
|
arguments of :highlight command is important and it's better to put
|
||
|
"cterm" in front of others to prevent it from overwriting attributes
|
||
|
set by "ctermfg" or "ctermbg" arguments.
|
||
|
|
||
|
For convenience of color scheme authors xterm-like names for 256 color
|
||
|
palette is also supported. The mapping is taken from
|
||
|
http://vim.wikia.com/wiki/Xterm256_color_names_for_console_Vim
|
||
|
Duplicated entries were altered by adding an underscore followed by nu-
|
||
|
merical suffix.
|
||
|
|
||
|
0 Black 86 Aquamarine1 172 Orange3
|
||
|
1 Red 87 DarkSlateGray2 173 LightSalmon3_2
|
||
|
2 Green 88 DarkRed_2 174 LightPink3
|
||
|
3 Yellow 89 DeepPink4_2 175 Pink3
|
||
|
4 Blue 90 DarkMagenta 176 Plum3
|
||
|
5 Magenta 91 DarkMagenta_2 177 Violet
|
||
|
6 Cyan 92 DarkViolet 178 Gold3_2
|
||
|
7 White 93 Purple 179 LightGoldenrod3
|
||
|
8 LightBlack 94 Orange4_2 180 Tan
|
||
|
9 LightRed 95 LightPink4 181 MistyRose3
|
||
|
10 LightGreen 96 Plum4 182 Thistle3
|
||
|
11 LightYellow 97 MediumPurple3 183 Plum2
|
||
|
12 LightBlue 98 MediumPurple3_2 184 Yellow3_2
|
||
|
13 LightMagenta 99 SlateBlue1 185 Khaki3
|
||
|
14 LightCyan 100 Yellow4 186 LightGoldenrod2
|
||
|
15 LightWhite 101 Wheat4 187 LightYellow3
|
||
|
16 Grey0 102 Grey53 188 Grey84
|
||
|
17 NavyBlue 103 LightSlateGrey 189 LightSteelBlue1
|
||
|
18 DarkBlue 104 MediumPurple 190 Yellow2
|
||
|
19 Blue3 105 LightSlateBlue 191 DarkOliveGreen1
|
||
|
20 Blue3_2 106 Yellow4_2 192 DarkOliveG-
|
||
|
reen1_2
|
||
|
21 Blue1 107 DarkOliveGreen3 193 DarkSeaGreen1_2
|
||
|
22 DarkGreen 108 DarkSeaGreen 194 Honeydew2
|
||
|
23 DeepSkyBlue4 109 LightSkyBlue3 195 LightCyan1
|
||
|
24 DeepSkyBlue4_2 110 LightSkyBlue3_2 196 Red1
|
||
|
25 DeepSkyBlue4_3 111 SkyBlue2 197 DeepPink2
|
||
|
26 DodgerBlue3 112 Chartreuse2_2 198 DeepPink1
|
||
|
27 DodgerBlue2 113 DarkOliveGreen3_2 199 DeepPink1_2
|
||
|
28 Green4 114 PaleGreen3_2 200 Magenta2_2
|
||
|
29 SpringGreen4 115 DarkSeaGreen3 201 Magenta1
|
||
|
30 Turquoise4 116 DarkSlateGray3 202 OrangeRed1
|
||
|
31 DeepSkyBlue3 117 SkyBlue1 203 IndianRed1
|
||
|
32 DeepSkyBlue3_2 118 Chartreuse1 204 IndianRed1_2
|
||
|
33 DodgerBlue1 119 LightGreen_2 205 HotPink
|
||
|
34 Green3 120 LightGreen_3 206 HotPink_2
|
||
|
35 SpringGreen3 121 PaleGreen1 207 MediumOrchid1_2
|
||
|
36 DarkCyan 122 Aquamarine1_2 208 DarkOrange
|
||
|
37 LightSeaGreen 123 DarkSlateGray1 209 Salmon1
|
||
|
38 DeepSkyBlue2 124 Red3 210 LightCoral
|
||
|
39 DeepSkyBlue1 125 DeepPink4_3 211 PaleVioletRed1
|
||
|
40 Green3_2 126 MediumVioletRed 212 Orchid2
|
||
|
41 SpringGreen3_2 127 Magenta3 213 Orchid1
|
||
|
42 SpringGreen2 128 DarkViolet_2 214 Orange1
|
||
|
43 Cyan3 129 Purple_2 215 SandyBrown
|
||
|
44 DarkTurquoise 130 DarkOrange3 216 LightSalmon1
|
||
|
45 Turquoise2 131 IndianRed 217 LightPink1
|
||
|
46 Green1 132 HotPink3 218 Pink1
|
||
|
47 SpringGreen2_2 133 MediumOrchid3 219 Plum1
|
||
|
48 SpringGreen1 134 MediumOrchid 220 Gold1
|
||
|
49 MediumSpringGreen 135 MediumPurple2 221 LightGolden-
|
||
|
rod2_2
|
||
|
50 Cyan2 136 DarkGoldenrod 222 LightGolden-
|
||
|
rod2_3
|
||
|
51 Cyan1 137 LightSalmon3 223 NavajoWhite1
|
||
|
52 DarkRed 138 RosyBrown 224 MistyRose1
|
||
|
53 DeepPink4 139 Grey63 225 Thistle1
|
||
|
54 Purple4 140 MediumPurple2_2 226 Yellow1
|
||
|
55 Purple4_2 141 MediumPurple1 227 LightGoldenrod1
|
||
|
56 Purple3 142 Gold3 228 Khaki1
|
||
|
57 BlueViolet 143 DarkKhaki 229 Wheat1
|
||
|
58 Orange4 144 NavajoWhite3 230 Cornsilk1
|
||
|
59 Grey37 145 Grey69 231 Grey100
|
||
|
60 MediumPurple4 146 LightSteelBlue3 232 Grey3
|
||
|
61 SlateBlue3 147 LightSteelBlue 233 Grey7
|
||
|
62 SlateBlue3_2 148 Yellow3 234 Grey11
|
||
|
63 RoyalBlue1 149 DarkOliveGreen3_3 235 Grey15
|
||
|
64 Chartreuse4 150 DarkSeaGreen3_2 236 Grey19
|
||
|
65 DarkSeaGreen4 151 DarkSeaGreen2 237 Grey23
|
||
|
66 PaleTurquoise4 152 LightCyan3 238 Grey27
|
||
|
67 SteelBlue 153 LightSkyBlue1 239 Grey30
|
||
|
68 SteelBlue3 154 GreenYellow 240 Grey35
|
||
|
69 CornflowerBlue 155 DarkOliveGreen2 241 Grey39
|
||
|
70 Chartreuse3 156 PaleGreen1_2 242 Grey42
|
||
|
71 DarkSeaGreen4_2 157 DarkSeaGreen2_2 243 Grey46
|
||
|
72 CadetBlue 158 DarkSeaGreen1 244 Grey50
|
||
|
73 CadetBlue_2 159 PaleTurquoise1 245 Grey54
|
||
|
74 SkyBlue3 160 Red3_2 246 Grey58
|
||
|
75 SteelBlue1 161 DeepPink3 247 Grey62
|
||
|
76 Chartreuse3_2 162 DeepPink3_2 248 Grey66
|
||
|
77 PaleGreen3 163 Magenta3_2 249 Grey70
|
||
|
78 SeaGreen3 164 Magenta3_3 250 Grey74
|
||
|
79 Aquamarine3 165 Magenta2 251 Grey78
|
||
|
80 MediumTurquoise 166 DarkOrange3_2 252 Grey82
|
||
|
81 SteelBlue1_2 167 IndianRed_2 253 Grey85
|
||
|
82 Chartreuse2 168 HotPink3_2 254 Grey89
|
||
|
83 SeaGreen2 169 HotPink2 255 Grey93
|
||
|
84 SeaGreen1 170 Orchid
|
||
|
85 SeaGreen1_2 171 MediumOrchid1
|
||
|
|
||
|
There are two colors (foreground and background) and only one bold at-
|
||
|
tribute. Thus single bold attribute affects both colors when "reverse"
|
||
|
attribute is used in vifm run inside terminal emulator. At the same
|
||
|
time linux native console can handle boldness of foreground and back-
|
||
|
ground colors independently, but for consistency with terminal emula-
|
||
|
tors this is available only implicitly by using light versions of col-
|
||
|
ors. This behaviour might be changed in the future.
|
||
|
|
||
|
Although vifm supports 256 colors in a sense they are supported by UI
|
||
|
drawing library, whether you will be able to use all of them highly de-
|
||
|
pends on your terminal. To set up terminal properly, make sure that
|
||
|
$TERM in the environment you run vifm is set to name of 256-color ter-
|
||
|
minal (on *nixes it can also be set via X resources), e.g.
|
||
|
xterm-256color. One can find list of available terminal names by list-
|
||
|
ing /usr/lib/terminfo/. Number of colors supported by terminal with
|
||
|
current settings can be checked via "tput colors" command.
|
||
|
|
||
|
In order to use 24-bit colors one needs a terminal that supports them,
|
||
|
corresponding terminfo record (probably ends in "-direct" like in
|
||
|
"xterm-direct") and $TERM pointing to it. When vifm detects direct
|
||
|
color support "cterm*" values are ignored for groups which have at
|
||
|
least one of "gui*" values set, otherwise they are used after translat-
|
||
|
ing via a builtin palette.
|
||
|
|
||
|
Here is the hierarchy of highlight groups, which you need to know for
|
||
|
using transparency:
|
||
|
JobLine
|
||
|
SuggestBox
|
||
|
StatusLine
|
||
|
WildMenu
|
||
|
User1..User9
|
||
|
Border
|
||
|
CmdLine
|
||
|
ErrorMsg
|
||
|
Win
|
||
|
OtherWin
|
||
|
AuxWin
|
||
|
OddLine
|
||
|
File name specific highlights
|
||
|
Directory
|
||
|
Link
|
||
|
BrokenLink
|
||
|
HardLink
|
||
|
Socket
|
||
|
Device
|
||
|
Fifo
|
||
|
Executable
|
||
|
Selected
|
||
|
CurrLine
|
||
|
LineNr (in active pane)
|
||
|
OtherLine
|
||
|
LineNr (in inactive pane)
|
||
|
TopLine
|
||
|
TopLineSel
|
||
|
TabLineSel (for pane tabs)
|
||
|
User1..User9
|
||
|
TabLine
|
||
|
TabLineSel
|
||
|
User1..User9
|
||
|
|
||
|
"none" means default terminal color for highlight groups at the first
|
||
|
level of the hierarchy and transparency for all others.
|
||
|
|
||
|
Here file name specific highlights mean those configured via globs ({})
|
||
|
or regular expressions (//). At most one of them is applied per file
|
||
|
entry, namely the first that matches file name, hence order of :high-
|
||
|
light commands might be important in certain cases.
|
||
|
|
||
|
:history
|
||
|
|
||
|
:his[tory]
|
||
|
display a menu with list of visited directories. See "Menus and
|
||
|
dialogs" section for controls.
|
||
|
|
||
|
:his[tory] x
|
||
|
x can be:
|
||
|
d[ir] or . show directory history.
|
||
|
c[md] or : show command line history.
|
||
|
s[earch] or / show search history and search forward on l
|
||
|
key.
|
||
|
f[search] or / show search history and search forward on l
|
||
|
key.
|
||
|
b[search] or ? show search history and search backward on l
|
||
|
key.
|
||
|
i[nput] or @ show prompt history (e.g. on one file renam-
|
||
|
ing).
|
||
|
fi[lter] or = show filter history (see description of the "="
|
||
|
normal mode command).
|
||
|
See "Menus and dialogs" section for controls.
|
||
|
|
||
|
:histnext
|
||
|
|
||
|
:histnext
|
||
|
same as <c-i>. The main use case for this command is to work
|
||
|
around the common pain point of <tab> and <c-i> being the same
|
||
|
ASCII character: one could alter the terminal emulator settings
|
||
|
to emit, for example, the `F1` keycode when Ctrl-I is pressed,
|
||
|
then `:noremap <f1> :histnext<cr>` in vifm, add "t" flag to the
|
||
|
'cpoptions', and thus have both <c-i> and <tab> working as ex-
|
||
|
pected.
|
||
|
|
||
|
:histprev
|
||
|
|
||
|
:histprev
|
||
|
same as <c-o>.
|
||
|
|
||
|
:if
|
||
|
|
||
|
:if {expr1}
|
||
|
start conditional block. Commands are executed until next
|
||
|
matching :elseif, :else or :endif command if {expr1} evaluates
|
||
|
to non-zero, otherwise they are ignored. See also help on :else
|
||
|
and :endif commands.
|
||
|
|
||
|
Example:
|
||
|
|
||
|
if $TERM == 'screen.linux'
|
||
|
highlight CurrLine ctermfg=lightwhite ctermbg=lightblack
|
||
|
elseif $TERM == 'tmux'
|
||
|
highlight CurrLine cterm=reverse ctermfg=black ctermbg=white
|
||
|
else
|
||
|
highlight CurrLine cterm=bold,reverse ctermfg=black ctermbg=white
|
||
|
endif
|
||
|
|
||
|
:invert
|
||
|
|
||
|
:invert [f]
|
||
|
invert file name filter.
|
||
|
|
||
|
:invert? [f]
|
||
|
show current filter state.
|
||
|
|
||
|
:invert s
|
||
|
invert selection.
|
||
|
|
||
|
:invert o
|
||
|
invert sorting order of the primary sorting key.
|
||
|
|
||
|
:invert? o
|
||
|
show sorting order of the primary sorting key.
|
||
|
|
||
|
:jobs
|
||
|
|
||
|
:jobs display menu of current backgrounded processes. See "Menus and
|
||
|
dialogs" section for controls.
|
||
|
|
||
|
:let
|
||
|
|
||
|
:let $ENV_VAR = <expr>
|
||
|
set an environment variable. Warning: setting environment vari-
|
||
|
able to an empty string on Windows removes it.
|
||
|
|
||
|
:let $ENV_VAR .= <expr>
|
||
|
append value to environment variable.
|
||
|
|
||
|
:let &[l:|g:]opt = <expr>
|
||
|
sets option value.
|
||
|
|
||
|
:let &[l:|g:]opt .= <expr>
|
||
|
append value to string option.
|
||
|
|
||
|
:let &[l:|g:]opt += <expr>
|
||
|
increasing option value, adding sub-values.
|
||
|
|
||
|
:let &[l:|g:]opt -= <expr>
|
||
|
decreasing option value, removing sub-values.
|
||
|
|
||
|
Where <expr> could be a single-quoted string, double-quoted string, an
|
||
|
environment variable, function call or a concatanation of any of them
|
||
|
in any order using the '.' operator. Any whitespace is ignored.
|
||
|
|
||
|
:locate
|
||
|
|
||
|
:locate filename
|
||
|
use "locate" command to create a menu of filenames. Selecting a
|
||
|
file from the menu will reload the current file list in vifm to
|
||
|
show the selected file. By default the command relies on the
|
||
|
external "locate" utility (it's assumed that its database is al-
|
||
|
ready built), which can be customized by altering value of the
|
||
|
'locateprg' option. See "Menus and dialogs" section for con-
|
||
|
trols.
|
||
|
|
||
|
:locate
|
||
|
repeat last :locate command.
|
||
|
|
||
|
:ls
|
||
|
|
||
|
:ls lists windows of active terminal multiplexer (only when terminal
|
||
|
multiplexer is used). This is achieved by issuing proper com-
|
||
|
mand for active terminal multiplexer, thus the list is not han-
|
||
|
dled by vifm.
|
||
|
|
||
|
:lstrash
|
||
|
|
||
|
:lstrash
|
||
|
display a menu with list of files in trash. Each element of the
|
||
|
list is original path of a deleted file, thus the list can con-
|
||
|
tain duplicates. See "Menus and dialogs" section for controls.
|
||
|
|
||
|
:mark
|
||
|
|
||
|
:[range]ma[rk][?] x [/full/path] [filename]
|
||
|
Set mark x (a-zA-Z0-9) at /full/path and filename. By default
|
||
|
current directory is being used. If no filename was given and
|
||
|
/full/path is current directory then last file in [range] is
|
||
|
used. Using of macros is allowed. Question mark will stop com-
|
||
|
mand from overwriting existing marks.
|
||
|
|
||
|
:marks
|
||
|
|
||
|
:marks create a pop-up menu of marks. See "Menus and dialogs" section
|
||
|
for controls.
|
||
|
|
||
|
:marks list ...
|
||
|
display the contents of the marks that are mentioned in list.
|
||
|
|
||
|
:media
|
||
|
|
||
|
:media only for *nix
|
||
|
display media management menu. See "Menus and dialogs" section
|
||
|
for controls. See also 'mediaprg' option.
|
||
|
|
||
|
:messages
|
||
|
|
||
|
:mes[sages]
|
||
|
shows previously given messages (up to 50).
|
||
|
|
||
|
:mkdir
|
||
|
|
||
|
:[line]mkdir[!] dir ...
|
||
|
create directories at specified paths. The [line] can be used
|
||
|
to pick node in a tree-view. "!" means make parent directories
|
||
|
as needed. Macros are expanded.
|
||
|
|
||
|
:move
|
||
|
|
||
|
:[range]m[ove][!?][ &]
|
||
|
move files to directory of other view. With "?" prompts for
|
||
|
destination file names in an editor. "!" forces overwrite.
|
||
|
|
||
|
:[range]m[ove][!] path[ &]
|
||
|
move files to directory specified with the path (absolute or
|
||
|
relative to directory of other view). "!" forces overwrite.
|
||
|
|
||
|
:[range]m[ove][!] name1 name2...[ &]
|
||
|
move files to directory of other view giving each next file a
|
||
|
corresponding name from the argument list. "!" forces over-
|
||
|
write.
|
||
|
|
||
|
:nohlsearch
|
||
|
|
||
|
:noh[lsearch]
|
||
|
clear selection in current pane.
|
||
|
|
||
|
:normal
|
||
|
|
||
|
:norm[al][!] commands
|
||
|
execute normal mode commands. If "!" is used, user defined map-
|
||
|
pings are ignored. Unfinished last command is aborted as if
|
||
|
<esc> or <c-c> was typed. A ":" should be completed as well.
|
||
|
Commands can't start with a space, so put a count of 1 (one) be-
|
||
|
fore it.
|
||
|
|
||
|
:only
|
||
|
|
||
|
:on[ly]
|
||
|
switch to a one window view.
|
||
|
|
||
|
:plugin
|
||
|
|
||
|
:plugin load
|
||
|
loads all plugins. To be used in configuration file to manually
|
||
|
load plugins at an earlier point. The plugins can be loaded
|
||
|
only once, additional calls will do nothing.
|
||
|
|
||
|
|
||
|
:plugin blacklist {plugin}
|
||
|
adds {plugin} to the list of plugins to be ignored.
|
||
|
|
||
|
:plugin whitelist {plugin}
|
||
|
adds {plugin} to the list of plugins to be loaded while ignoring
|
||
|
all other plugins. This list should normally be empty.
|
||
|
|
||
|
:plugins
|
||
|
|
||
|
:plugins
|
||
|
open plugins menu. See "Menus and dialogs" section for con-
|
||
|
trols.
|
||
|
|
||
|
:popd
|
||
|
|
||
|
:popd remove pane directories from stack.
|
||
|
|
||
|
:pushd
|
||
|
|
||
|
:pushd[!] /curr/dir [/other/dir]
|
||
|
add pane directories to stack and process arguments like :cd
|
||
|
command.
|
||
|
|
||
|
:pushd exchange the top two items of the directory stack.
|
||
|
|
||
|
:put
|
||
|
|
||
|
:[line]pu[t][!] [reg] [ &]
|
||
|
put files from specified register (" by default) into current
|
||
|
directory. The [line] can be used to pick node in a tree-view.
|
||
|
"!" moves files "!" moves files from their original location in-
|
||
|
stead of copying them. During this operation no confirmation
|
||
|
dialogs will be shown, all checks are performed beforehand.
|
||
|
|
||
|
:pwd
|
||
|
|
||
|
:pw[d] show the present working directory.
|
||
|
|
||
|
:qall
|
||
|
|
||
|
:qa[ll][!]
|
||
|
exit vifm (add ! to skip saving changes and checking for active
|
||
|
backgrounded commands).
|
||
|
|
||
|
:quit
|
||
|
|
||
|
:q[uit][!]
|
||
|
if there is more than one tab, close the current one, otherwise
|
||
|
exit vifm (add ! to skip saving state and checking for active
|
||
|
backgrounded commands).
|
||
|
|
||
|
:redraw
|
||
|
|
||
|
:redr[aw]
|
||
|
redraw the screen immediately.
|
||
|
|
||
|
:registers
|
||
|
|
||
|
:reg[isters]
|
||
|
display menu with registers content.
|
||
|
|
||
|
:reg[isters] list ...
|
||
|
display the contents of the numbered and named registers that
|
||
|
are mentioned in list (for example "az to display "", "a and "z
|
||
|
content).
|
||
|
|
||
|
:regular
|
||
|
|
||
|
:regular
|
||
|
|
||
|
switch to regular view leaving custom view.
|
||
|
:rename
|
||
|
|
||
|
:[range]rename[!]
|
||
|
rename files by editing their names in an editor. "!" renames
|
||
|
files recursively in subdirectories. See "External Renaming"
|
||
|
section.
|
||
|
|
||
|
:[range]rename name1 name2...
|
||
|
rename each of selected files to a corresponding name.
|
||
|
|
||
|
:restart
|
||
|
|
||
|
:restart
|
||
|
free a lot of things (histories, commands, etc.), reread
|
||
|
vifminfo, vifmrc and session files and run startup commands
|
||
|
passed in the argument list, thus losing all unsaved changes
|
||
|
(e.g. recent history or keys mapped after starting this in-
|
||
|
stance). Session that wasn't yet stored gets reset.
|
||
|
|
||
|
While many things get reset, some basic UI state and current lo-
|
||
|
cations are preserved, including tabs.
|
||
|
|
||
|
:restart full
|
||
|
variation of :restart that makes no attempt to preserve any-
|
||
|
thing.
|
||
|
|
||
|
:restore
|
||
|
|
||
|
:[range]restore
|
||
|
restore file from trash directory, doesn't work outside one of
|
||
|
trash directories. See "Trash directory" section below.
|
||
|
|
||
|
:rlink
|
||
|
|
||
|
:[range]rlink[!?]
|
||
|
create relative symbolic links to files in directory of other
|
||
|
view. With "?" prompts for destination file names in an editor.
|
||
|
"!" forces overwrite.
|
||
|
|
||
|
:[range]rlink[!] path
|
||
|
create relative symbolic links of files in directory specified
|
||
|
with the path (absolute or relative to directory of other view).
|
||
|
"!" forces overwrite.
|
||
|
|
||
|
:[range]rlink[!] name1 name2...
|
||
|
create relative symbolic links of files in directory of other
|
||
|
view giving each next link a corresponding name from the argu-
|
||
|
ment list. "!" forces overwrite.
|
||
|
|
||
|
:screen
|
||
|
|
||
|
:screen
|
||
|
toggle whether to use the terminal multiplexer or not.
|
||
|
A terminal multiplexer uses pseudo terminals to allow multiple
|
||
|
windows to be used in the console or in a single xterm. Start-
|
||
|
ing vifm from terminal multiplexer with appropriate support
|
||
|
turned on will cause vifm to open a new terminal multiplexer
|
||
|
window for each new file edited or program launched from vifm.
|
||
|
This requires screen version 3.9.9 or newer for the screen -X
|
||
|
argument or tmux (1.8 version or newer is recommended).
|
||
|
|
||
|
:screen!
|
||
|
enable integration with terminal multiplexers.
|
||
|
|
||
|
:screen?
|
||
|
display whether integration with terminal multiplexers is en-
|
||
|
abled.
|
||
|
|
||
|
Note: the command is called screen for historical reasons (when tmux
|
||
|
wasn't yet supported) and might be changed in future releases, or get
|
||
|
an alias.
|
||
|
|
||
|
:select
|
||
|
|
||
|
:[range]select
|
||
|
select files in the given range (current file if no range is
|
||
|
given).
|
||
|
|
||
|
:select {pattern}
|
||
|
select files that match specified pattern. Possible {pattern}
|
||
|
forms are described in "Patterns" section below. Trailing slash
|
||
|
for directories is taken into account, so `:select! */ | invert
|
||
|
s` selects only files.
|
||
|
|
||
|
:select //[iI]
|
||
|
same as item above, but reuses last search pattern.
|
||
|
|
||
|
:select !{external command}
|
||
|
select files from the list supplied by external command. Files
|
||
|
are matched by full paths, relative paths are converted to abso-
|
||
|
lute ones beforehand.
|
||
|
|
||
|
:[range]select! [{pattern}]
|
||
|
same as above, but resets previously selected items before pro-
|
||
|
ceeding.
|
||
|
|
||
|
:session
|
||
|
|
||
|
:session?
|
||
|
print name of the current session.
|
||
|
|
||
|
:session
|
||
|
detach current session without saving it. Resets v:session.
|
||
|
|
||
|
:session name
|
||
|
create or load and switch to a session with the specified name.
|
||
|
Name can't contain slashes. Session active at the moment is
|
||
|
saved before the switch. Session is also automatically saved
|
||
|
when quiting the application in usual ways. Sets v:session.
|
||
|
|
||
|
:set
|
||
|
|
||
|
:se[t] display all options that differ from their default value.
|
||
|
|
||
|
:se[t] all
|
||
|
display all options.
|
||
|
|
||
|
:se[t] opt1=val1 opt2='val2' opt3="val3" ...
|
||
|
sets given options. For local options both values are set.
|
||
|
You can use following syntax:
|
||
|
- for all options - option, option? and option&
|
||
|
- for boolean options - nooption, invoption and option!
|
||
|
- for integer options - option=x, option+=x and option-=x
|
||
|
- for string options - option=x and option+=x
|
||
|
- for string list options - option=x, option+=x, option-=x and
|
||
|
option^=x
|
||
|
- for enumeration options - option=x, option+=x and option-=x
|
||
|
- for set options - option=x, option+=x, option-=x and op-
|
||
|
tion^=x
|
||
|
- for charset options - option=x, option+=x, option-=x and op-
|
||
|
tion^=x
|
||
|
|
||
|
the meaning:
|
||
|
- option - turn option on (for boolean) or print its value (for
|
||
|
all others)
|
||
|
- nooption - turn option off
|
||
|
- invoption - invert option state
|
||
|
- option! - invert option state
|
||
|
- option? - print option value
|
||
|
- option& - reset option to its default value
|
||
|
- option=x or option:x - set option to x
|
||
|
- option+=x - add/append x to option
|
||
|
- option-=x - remove (or subtract) x from option
|
||
|
- option^=x - toggle x presence among values of the option
|
||
|
|
||
|
Option name can be prepended and appended by any number of
|
||
|
whitespace characters.
|
||
|
|
||
|
:setglobal
|
||
|
|
||
|
:setg[lobal]
|
||
|
display all global options that differ from their default value.
|
||
|
|
||
|
:setg[lobal] all
|
||
|
display all global options.
|
||
|
|
||
|
:setg[lobal] opt1=val1 opt2='val2' opt3="val3" ...
|
||
|
same as :set, but changes/prints only global options or global
|
||
|
values of local options. Changes to the latter might be not
|
||
|
visible until directory is changed.
|
||
|
|
||
|
:setlocal
|
||
|
|
||
|
:setl[ocal]
|
||
|
display all local options that differ from their default value.
|
||
|
|
||
|
:setl[ocal] all
|
||
|
display all local options.
|
||
|
|
||
|
:setl[ocal] opt1=val1 opt2='val2' opt3="val3" ...
|
||
|
same as :set, but changes/prints only local values of local op-
|
||
|
tions.
|
||
|
|
||
|
:shell
|
||
|
|
||
|
:sh[ell][!]
|
||
|
start a shell in current directory. "!" suppresses spawning
|
||
|
dedicated window of terminal multiplexer for a shell. To make
|
||
|
vifm adaptive to environment it uses $SHELL if it's defined,
|
||
|
otherwise 'shell' value is used.
|
||
|
|
||
|
|
||
|
:siblnext
|
||
|
|
||
|
:[count]siblnext[!]
|
||
|
|
||
|
change directory to [count]th next sibling directory after cur-
|
||
|
rent path using value of global sort option of current pane.
|
||
|
"!" enables wrapping.
|
||
|
|
||
|
For example, say, you're at /boot and root listing starts like
|
||
|
this:
|
||
|
|
||
|
bin/
|
||
|
boot/
|
||
|
dev/
|
||
|
...
|
||
|
|
||
|
Issuing :siblnext will navigate to /dev.
|
||
|
|
||
|
|
||
|
:siblprev
|
||
|
|
||
|
:[count]siblprev[!]
|
||
|
same as :siblnext, but in the opposite direction.
|
||
|
|
||
|
:sort
|
||
|
|
||
|
:sor[t]
|
||
|
display dialog with different sorting methods, where one can se-
|
||
|
lect the primary sorting key. When 'viewcolumns' options is
|
||
|
empty and 'lsview' is off, changing primary sorting key will
|
||
|
also affect view look (in particular the second column of the
|
||
|
view will be changed). See "Menus and dialogs" section for con-
|
||
|
trols.
|
||
|
|
||
|
:source
|
||
|
|
||
|
:so[urce] file
|
||
|
read command-line commands from the file.
|
||
|
|
||
|
:split
|
||
|
|
||
|
:sp[lit]
|
||
|
switch to a two window horizontal view.
|
||
|
|
||
|
:sp[lit]!
|
||
|
toggle horizontal window splitting.
|
||
|
|
||
|
:sp[lit] path
|
||
|
splits the window horizontally to show both file directories.
|
||
|
Also changes other pane to path (absolute or relative to current
|
||
|
directory of active pane).
|
||
|
|
||
|
:stop
|
||
|
|
||
|
:st[op]
|
||
|
suspend vifm (same as pressing Ctrl-Z). Does nothing if this
|
||
|
instance isn't running in a shell. The command exists to allow
|
||
|
mapping to the action of Ctrl-Z.
|
||
|
|
||
|
:substitute
|
||
|
|
||
|
:[range]s[ubstitute]/pattern/string/[flags]
|
||
|
for each file in range replace a match of pattern with string.
|
||
|
|
||
|
String can contain \0...\9 to link to capture groups (\0 - all match,
|
||
|
\1 - first group, etc.).
|
||
|
|
||
|
Pattern is stored in search history.
|
||
|
|
||
|
Available flags:
|
||
|
|
||
|
- i - ignore case (the 'ignorecase' and 'smartcase' options are not
|
||
|
used)
|
||
|
|
||
|
- I - don't ignore case (the 'ignorecase' and 'smartcase' options are
|
||
|
not used)
|
||
|
|
||
|
- g - substitute all matches in each file name (each g toggles this)
|
||
|
|
||
|
:[range]s[ubstitute]/pattern
|
||
|
substitute pattern with an empty string.
|
||
|
|
||
|
:[range]s[ubstitute]//string/[flags]
|
||
|
use last pattern from search history.
|
||
|
|
||
|
:[range]s[ubstitute]
|
||
|
repeat previous substitution command.
|
||
|
|
||
|
:sync
|
||
|
|
||
|
:sync [relative path]
|
||
|
change the other pane to the current pane directory or to some
|
||
|
path relative to the current directory. Using macros is al-
|
||
|
lowed.
|
||
|
|
||
|
:sync! change the other pane to the current pane directory and synchro-
|
||
|
nize cursor position. If current pane displays custom list of
|
||
|
files, position before entering it is used (current one might
|
||
|
not make any sense).
|
||
|
|
||
|
|
||
|
:sync! [location | cursorpos | localopts | filters | filelist | tree |
|
||
|
all]...
|
||
|
change enumerated properties of the other pane to match corre-
|
||
|
sponding properties of the current pane. Arguments have the
|
||
|
following meanings:
|
||
|
|
||
|
- location - current directory of the pane;
|
||
|
|
||
|
- cursorpos - cursor position (doesn't make sense without "lo-
|
||
|
cation");
|
||
|
|
||
|
- localopts - all local options;
|
||
|
|
||
|
- filters - all filters;
|
||
|
|
||
|
- filelist - list of files for custom view (implies "loca-
|
||
|
tion");
|
||
|
|
||
|
- tree - tree structure for tree view (implies "location");
|
||
|
|
||
|
- all - all of the above.
|
||
|
|
||
|
:tabclose
|
||
|
|
||
|
:tabc[lose]
|
||
|
close current tab, unless it's the only one open at current
|
||
|
scope.
|
||
|
|
||
|
:tabmove
|
||
|
|
||
|
:tabm[ove] [N]
|
||
|
without the argument or with `$` as the argument, current tab
|
||
|
becomes the last tab. With the argument, current tab is moved
|
||
|
after the tab with the specified number. Argument of `0` moves
|
||
|
current tab to the first position.
|
||
|
|
||
|
:tabname
|
||
|
|
||
|
:tabname [name]
|
||
|
set, update or reset (when no argument is provided) name of the
|
||
|
current tab.
|
||
|
|
||
|
:tabnew
|
||
|
|
||
|
:tabnew [path]
|
||
|
create new tab. Accepts optional path for the new tab. Macros
|
||
|
and environment variables are expanded.
|
||
|
|
||
|
:tabnext
|
||
|
|
||
|
:tabn[ext]
|
||
|
switch to the next tab (wrapping around).
|
||
|
|
||
|
:tabn[ext] {n}
|
||
|
go to the tab number {n}. Tab numeration starts with 1.
|
||
|
|
||
|
:tabonly
|
||
|
|
||
|
:tabo[nly]
|
||
|
close all tabs but the current one. Closes pane tabs only at
|
||
|
the active side.
|
||
|
|
||
|
:tabprevious
|
||
|
|
||
|
:tabp[revious]
|
||
|
switch to the previous tab (wrapping around).
|
||
|
|
||
|
:tabp[revious] {n}
|
||
|
go to the {n}-th previous tab. Note that :tabnext handles its
|
||
|
argument differently.
|
||
|
|
||
|
:touch
|
||
|
|
||
|
:[line]touch file...
|
||
|
create files at specified paths. Aborts on errors. Doesn't up-
|
||
|
date time of existing files. The [line] can be used to pick
|
||
|
node in a tree-view. Macros are expanded.
|
||
|
|
||
|
:tr
|
||
|
|
||
|
:[range]tr/pattern/string/
|
||
|
for each file in range transliterate the characters which appear
|
||
|
in pattern to the corresponding character in string. When
|
||
|
string is shorter than pattern, it's padded with its last char-
|
||
|
acter.
|
||
|
|
||
|
:trashes
|
||
|
|
||
|
:trashes
|
||
|
lists all valid trash directories in a menu. Only non-empty and
|
||
|
writable trash directories are shown. This is exactly the list
|
||
|
of directories that are cleared when :empty command is executed.
|
||
|
|
||
|
:trashes?
|
||
|
same as :trashes, but also displays size of each trash direc-
|
||
|
tory.
|
||
|
|
||
|
:tree
|
||
|
|
||
|
:tree turn pane into tree view with current directory as its root.
|
||
|
The tree view is implemented on top of a custom view, but is au-
|
||
|
tomatically kept in sync with file system state and considers
|
||
|
all the filters. Thus the structure corresponds to what one
|
||
|
would see on visiting the directories manually. As a special
|
||
|
case for trees built out of custom view file-system tracking
|
||
|
isn't performed.
|
||
|
|
||
|
To leave tree view go up from its root or use gh at any level of
|
||
|
the tree. Any command that changes directory will also do, in
|
||
|
particular, `:cd ..`.
|
||
|
|
||
|
Tree structure is incompatible with alternative representations,
|
||
|
so values of 'lsview' and 'millerview' options are ignored.
|
||
|
|
||
|
The "depth" argument specifies nesting level on which loading of
|
||
|
subdirectories won't happen (they will be folded). Values start
|
||
|
at 1.
|
||
|
|
||
|
:tree! toggle current view in and out of tree mode.
|
||
|
|
||
|
:undolist
|
||
|
|
||
|
:undol[ist]
|
||
|
display list of latest changes. Use "!" to see actual commands.
|
||
|
See "Menus and dialogs" section for controls.
|
||
|
|
||
|
:unlet
|
||
|
|
||
|
:unl[et][!] $ENV_VAR1 $ENV_VAR2 ...
|
||
|
remove environment variables. Add ! to omit displaying of warn-
|
||
|
ings about nonexistent variables.
|
||
|
|
||
|
:unselect
|
||
|
|
||
|
:[range]unselect
|
||
|
unselect files in the given range (current file if no range is
|
||
|
given).
|
||
|
|
||
|
:unselect {pattern}
|
||
|
unselect files that match specified pattern. Possible {pattern}
|
||
|
forms are described in "Patterns" section below. Trailing slash
|
||
|
for directories is taken into account, so `:unselect */` unse-
|
||
|
lects directories.
|
||
|
|
||
|
:unselect !{external command}
|
||
|
unselect files from the list supplied by external command.
|
||
|
Files are matched by full paths, relative paths are converted to
|
||
|
absolute ones beforehand.
|
||
|
|
||
|
:unselect //[iI]
|
||
|
same as item above, but reuses last search pattern.
|
||
|
|
||
|
:version
|
||
|
|
||
|
:ve[rsion]
|
||
|
show menu with version information.
|
||
|
|
||
|
:vifm
|
||
|
|
||
|
:vifm same as :version.
|
||
|
|
||
|
:view
|
||
|
|
||
|
:vie[w]
|
||
|
toggle on and off the quick file view (preview of file's con-
|
||
|
tents). See also 'quickview' option.
|
||
|
|
||
|
:vie[w]!
|
||
|
turn on quick file view if it's off.
|
||
|
|
||
|
:volumes
|
||
|
|
||
|
:volumes
|
||
|
only for MS-Windows
|
||
|
display menu with volume list. Hitting l (or Enter) key opens
|
||
|
appropriate volume in the current pane. See "Menus and dialogs"
|
||
|
section for controls.
|
||
|
|
||
|
:vsplit
|
||
|
|
||
|
:vs[plit]
|
||
|
switch to a two window vertical view.
|
||
|
|
||
|
:vs[plit]!
|
||
|
toggle window vertical splitting.
|
||
|
|
||
|
:vs[plit] path
|
||
|
split the window vertically to show both file directories. And
|
||
|
changes other pane to path (absolute or relative to current di-
|
||
|
rectory of active pane).
|
||
|
|
||
|
:wincmd
|
||
|
|
||
|
:[count]winc[md] {arg}
|
||
|
same as running Ctrl-W [count] {arg}.
|
||
|
|
||
|
:windo
|
||
|
|
||
|
:windo [command...]
|
||
|
execute command for each pane (same as :winrun % command).
|
||
|
|
||
|
:winrun
|
||
|
|
||
|
:winrun type [command...]
|
||
|
execute command for pane(s), which is determined by type argu-
|
||
|
ment:
|
||
|
- ^ - top-left pane
|
||
|
- $ - bottom-right pane
|
||
|
- % - all panes
|
||
|
- . - current pane
|
||
|
- , - other pane
|
||
|
|
||
|
:write
|
||
|
|
||
|
:w[rite]
|
||
|
write current state to vifminfo and session files (if a session
|
||
|
is active).
|
||
|
|
||
|
:wq
|
||
|
|
||
|
:wq[!] same as :quit, but ! disables only the check of backgrounded
|
||
|
commands, while state of the application is always written.
|
||
|
:wqall
|
||
|
|
||
|
:wqa[ll][!]
|
||
|
same as :qall, but ! disables only the check of backgrounded
|
||
|
commands, while state of the application is always written.
|
||
|
|
||
|
:xall
|
||
|
|
||
|
:xa[ll][!]
|
||
|
same as :qall.
|
||
|
|
||
|
:xit
|
||
|
|
||
|
:x[it][!]
|
||
|
same as :quit.
|
||
|
|
||
|
:yank
|
||
|
|
||
|
:[range]y[ank] [reg] [count]
|
||
|
will yank files to the reg register.
|
||
|
|
||
|
:map lhs rhs
|
||
|
|
||
|
:map lhs rhs
|
||
|
map lhs key sequence to rhs in normal and visual modes.
|
||
|
|
||
|
:map! lhs rhs
|
||
|
map lhs key sequence to rhs in command line mode.
|
||
|
|
||
|
|
||
|
:cmap :dmap :mmap :nmap :qmap
|
||
|
:vmap
|
||
|
|
||
|
:cm[ap] lhs rhs
|
||
|
map lhs to rhs in command line mode.
|
||
|
|
||
|
:dm[ap] lhs rhs
|
||
|
map lhs to rhs in dialog modes.
|
||
|
|
||
|
:mm[ap] lhs rhs
|
||
|
map lhs to rhs in menu mode.
|
||
|
|
||
|
:nm[ap] lhs rhs
|
||
|
map lhs to rhs in normal mode.
|
||
|
|
||
|
:qm[ap] lhs rhs
|
||
|
map lhs to rhs in view mode.
|
||
|
|
||
|
:vm[ap] lhs rhs
|
||
|
map lhs to rhs in visual mode.
|
||
|
|
||
|
|
||
|
:*map
|
||
|
|
||
|
:cm[ap]
|
||
|
list all maps in command line mode.
|
||
|
|
||
|
:dm[ap]
|
||
|
list all maps in dialog modes.
|
||
|
|
||
|
:mm[ap]
|
||
|
list all maps in menu mode.
|
||
|
|
||
|
:nm[ap]
|
||
|
list all maps in normal mode.
|
||
|
|
||
|
:qm[ap]
|
||
|
list all maps in view mode.
|
||
|
|
||
|
:vm[ap]
|
||
|
list all maps in visual mode.
|
||
|
|
||
|
:*map beginning
|
||
|
|
||
|
:cm[ap] beginning
|
||
|
list all maps in command line mode that start with the begin-
|
||
|
ning.
|
||
|
|
||
|
:dm[ap] beginning
|
||
|
list all maps in dialog modes that start with the beginning.
|
||
|
|
||
|
:mm[ap] beginning
|
||
|
list all maps in menu mode that start with the beginning.
|
||
|
|
||
|
:nm[ap] beginning
|
||
|
list all maps in normal mode that start with the beginning.
|
||
|
|
||
|
:qm[ap] beginning
|
||
|
list all maps in view mode that start with the beginning.
|
||
|
|
||
|
:vm[ap] beginning
|
||
|
list all maps in visual mode that start with the beginning.
|
||
|
|
||
|
:noremap
|
||
|
|
||
|
:no[remap] lhs rhs
|
||
|
map the key sequence lhs to rhs for normal and visual modes, but
|
||
|
don't expand user mappings in rhs.
|
||
|
|
||
|
:no[remap]! lhs rhs
|
||
|
map the key sequence lhs to rhs for command line mode, but don't
|
||
|
expand user mappings in rhs.
|
||
|
|
||
|
:cnoremap :dnoremap :mnoremap :nnoremap :qnoremap
|
||
|
:vnoremap
|
||
|
|
||
|
:cno[remap] lhs rhs
|
||
|
map the key sequence lhs to rhs for command line mode, but don't
|
||
|
expand user mappings in rhs.
|
||
|
|
||
|
:dn[oremap] lhs rhs
|
||
|
map the key sequence lhs to rhs for dialog modes, but don't ex-
|
||
|
pand user mappings in rhs.
|
||
|
|
||
|
:mn[oremap] lhs rhs
|
||
|
map the key sequence lhs to rhs for menu mode, but don't expand
|
||
|
user mappings in rhs.
|
||
|
|
||
|
:nn[oremap] lhs rhs
|
||
|
map the key sequence lhs to rhs for normal mode, but don't ex-
|
||
|
pand user mappings in rhs.
|
||
|
|
||
|
:qn[oremap] lhs rhs
|
||
|
map the key sequence lhs to rhs for view mode, but don't expand
|
||
|
user mappings in rhs.
|
||
|
|
||
|
:vn[oremap] lhs rhs
|
||
|
map the key sequence lhs to rhs for visual mode, but don't ex-
|
||
|
pand user mappings in rhs.
|
||
|
|
||
|
:unmap
|
||
|
|
||
|
:unm[ap] lhs
|
||
|
remove user mapping of lhs from normal and visual modes.
|
||
|
|
||
|
:unm[ap]! lhs
|
||
|
remove user mapping of lhs from command line mode.
|
||
|
|
||
|
:cunmap :dunmap :munmap :nunmap :qunmap
|
||
|
:vunmap
|
||
|
|
||
|
:cu[nmap] lhs
|
||
|
remove user mapping of lhs from command line mode.
|
||
|
|
||
|
:du[nmap] lhs
|
||
|
remove user mapping of lhs from dialog modes.
|
||
|
|
||
|
:mu[nmap] lhs
|
||
|
remove user mapping of lhs from menu mode.
|
||
|
|
||
|
:nun[map] lhs
|
||
|
remove user mapping of lhs from normal mode.
|
||
|
|
||
|
:qun[map] lhs
|
||
|
remove user mapping of lhs from view mode.
|
||
|
|
||
|
:vu[nmap] lhs
|
||
|
remove user mapping of lhs from visual mode.
|
||
|
|
||
|
Ranges
|
||
|
The ranges implemented include:
|
||
|
2,3 - from second to third file in the list (including it)
|
||
|
% - the entire directory.
|
||
|
. - the current position in the filelist.
|
||
|
$ - the end of the filelist.
|
||
|
't - the mark position t.
|
||
|
|
||
|
Examples:
|
||
|
|
||
|
:%delete
|
||
|
|
||
|
would delete all files in the directory.
|
||
|
|
||
|
:2,4delete
|
||
|
|
||
|
would delete the files in the list positions 2 through 4.
|
||
|
|
||
|
:.,$delete
|
||
|
|
||
|
would delete the files from the current position to the end of the
|
||
|
filelist.
|
||
|
|
||
|
:3delete4
|
||
|
|
||
|
would delete the files in the list positions 3, 4, 5, 6.
|
||
|
|
||
|
If a backward range is given :4,2delete - an query message is given and
|
||
|
user can chose what to do next.
|
||
|
|
||
|
The builtin commands that accept a range are :d[elete] and :y[ank].
|
||
|
|
||
|
Command macros
|
||
|
The command macros may be used in user commands.
|
||
|
|
||
|
%a User arguments. When user arguments contain macros, they are
|
||
|
expanded before preforming substitution of %a.
|
||
|
|
||
|
%c %"c The current file under the cursor.
|
||
|
|
||
|
%C %"C The current file under the cursor in the other directory.
|
||
|
|
||
|
%f %"f All of the selected files, but see "Selection" section below.
|
||
|
|
||
|
%F %"F All of the selected files in the other directory list, but see
|
||
|
"Selection" section below.
|
||
|
|
||
|
%b %"b Same as %f %F.
|
||
|
|
||
|
%d %"d Full path to current directory.
|
||
|
|
||
|
%D %"D Full path to other file list directory.
|
||
|
|
||
|
%rx %"rx
|
||
|
Full paths to files in the register {x}. In case of invalid
|
||
|
symbol in place of {x}, it's processed with the rest of the line
|
||
|
and default register is used.
|
||
|
|
||
|
%m Show command output in a menu.
|
||
|
|
||
|
%M Same as %m, but l (or Enter) key is handled like for :locate and
|
||
|
:find commands.
|
||
|
|
||
|
%u Process command output as list of paths and compose custom view
|
||
|
out of it.
|
||
|
|
||
|
%U Same as %u, but implies less list updates inside vifm, which is
|
||
|
absence of sorting at the moment.
|
||
|
|
||
|
%Iu Same as %u, but gives up terminal before running external com-
|
||
|
mand.
|
||
|
|
||
|
%IU Same as %U, but gives up terminal before running external com-
|
||
|
mand.
|
||
|
|
||
|
%S Show command output in the status bar.
|
||
|
|
||
|
%q Redirect command output to quick view, which is activated if
|
||
|
disabled.
|
||
|
|
||
|
%s Execute command in horizontally split window of active terminal
|
||
|
multiplexer (ignored if not running inside one).
|
||
|
|
||
|
%v Same as %s, but splits vertically.
|
||
|
|
||
|
%n Forbid use of terminal multiplexer to run the command.
|
||
|
|
||
|
%i Completely ignore command output. For background jobs this sup-
|
||
|
presses error dialogs, while still storing errors internally for
|
||
|
viewing via :jobs menu.
|
||
|
|
||
|
%Pl Pipe list of files to standard input of a command.
|
||
|
|
||
|
%Pz Same as %Pz, but separates paths by null ('\0') character.
|
||
|
|
||
|
%pc Marks the end of the main command and the beginning of the clear
|
||
|
command for graphical preview, which is invoked on closing pre-
|
||
|
view of a file.
|
||
|
|
||
|
%pd Marks a preview command as one that directly communicates with
|
||
|
the terminal. Beware that this is for things like sixel which
|
||
|
are self-contained sequences that depend only on current cursor
|
||
|
position, using this with anything else is likely to mangle ter-
|
||
|
minal state.
|
||
|
|
||
|
The following dimensions and coordinates are in characters:
|
||
|
|
||
|
%px x coordinate of top-left corner of preview area.
|
||
|
|
||
|
%py y coordinate of top-left corner of preview area.
|
||
|
|
||
|
%pw width of preview area.
|
||
|
|
||
|
%ph height of preview area.
|
||
|
|
||
|
|
||
|
Use %% if you need to put a percent sign in your command.
|
||
|
|
||
|
Note that %i, %Iu, %IU, %m, %M, %n, %q, %s, %S, %u, %U and %v macros
|
||
|
are mutually exclusive. Only the last one of them on the command will
|
||
|
take effect.
|
||
|
|
||
|
Note that %Pl and %Pz are mutually exclusive. Only the last one of
|
||
|
them on the command will take effect.
|
||
|
|
||
|
You can use file name modifiers after %c, %C, %f, %F, %b, %d and %D
|
||
|
macros. Supported modifiers are:
|
||
|
|
||
|
- :p - full path
|
||
|
|
||
|
- :u - UNC name of path (e.g. "\\server" in
|
||
|
"\\server\share"), Windows only. Expands to current computer name
|
||
|
for not UNC paths.
|
||
|
|
||
|
- :~ - relative to the home directory
|
||
|
|
||
|
- :. - relative to current directory
|
||
|
|
||
|
- :h - head of the file name
|
||
|
|
||
|
- :t - tail of the file name
|
||
|
|
||
|
- :r - root of the file name (without last extension)
|
||
|
|
||
|
- :e - extension of the file name (last one)
|
||
|
|
||
|
- :s?pat?sub? - substitute the first occurrence of pat with sub.
|
||
|
You can use any character for '?', but it must not occur in pat or
|
||
|
sub.
|
||
|
|
||
|
- :gs?pat?sub? - like :s, but substitutes all occurrences of pat with
|
||
|
sub.
|
||
|
|
||
|
See ':h filename-modifiers' in Vim's documentation for the detailed de-
|
||
|
scription.
|
||
|
|
||
|
Using %x means expand corresponding macro escaping all characters that
|
||
|
have special meaning. And %"x means using of double quotes and escape
|
||
|
only backslash and double quote characters, which is more useful on
|
||
|
Windows systems.
|
||
|
|
||
|
Position and quantity (if there is any) of %m, %M, %S or %s macros in
|
||
|
the command is unimportant. All their occurrences are removed from the
|
||
|
resulting command.
|
||
|
|
||
|
%c and %f macros are expanded to file names only, when %C and %F are
|
||
|
expanded to full paths. %f and %F follow this in %b too.
|
||
|
|
||
|
:com move mv %f %D
|
||
|
set the :move command to move all of the files selected in the
|
||
|
current directory to the other directory.
|
||
|
|
||
|
The %a macro is replaced with any arguments given to an alias command.
|
||
|
All arguments are considered optional.
|
||
|
:com lsl !!ls -l %a - set the lsl command to execute ls -l with
|
||
|
or without an argument.
|
||
|
|
||
|
:lsl<Enter>
|
||
|
will list the directory contents of the current directory.
|
||
|
|
||
|
:lsl filename<Enter>
|
||
|
will list only the given filename.
|
||
|
|
||
|
The macros can also be used in directly executing commands. ":!mv %f
|
||
|
%D" would move the current directory selected files to the other direc-
|
||
|
tory.
|
||
|
|
||
|
Appending & to the end of a command causes it to be executed in the
|
||
|
background. Typically you want to run two kinds of external commands
|
||
|
in the background:
|
||
|
|
||
|
- GUI applications that doesn't fork thus block vifm (:!sxiv %f &);
|
||
|
|
||
|
- console tools that do not work with terminal (:!mv %f %D &).
|
||
|
|
||
|
You don't want to run terminal commands, which require terminal input
|
||
|
or output something in background because they will mess up vifm's TUI.
|
||
|
Anyway, if you did run such a command, you can use Ctrl-L key to update
|
||
|
vifm's TUI.
|
||
|
|
||
|
Rewriting the example command with macros given above with background-
|
||
|
ing:
|
||
|
|
||
|
%m, %M, %s, %S, %u and %U macros cannot be combined with background
|
||
|
mark (" &") as it doesn't make much sense.
|
||
|
|
||
|
Command backgrounding
|
||
|
Copy and move operation can take a lot of time to proceed. That's why
|
||
|
vifm supports backgrounding of this two operations. To run :copy,
|
||
|
:move or :delete command in the background just add " &" at the end of
|
||
|
a command.
|
||
|
|
||
|
For each background operation a new thread is created. Job cancella-
|
||
|
tion can be requested in the :jobs menu via dd shortcut.
|
||
|
|
||
|
You can see if command is still running in the :jobs menu. Back-
|
||
|
grounded commands have progress instead of process id at the line be-
|
||
|
ginning.
|
||
|
|
||
|
Background operations cannot be undone.
|
||
|
|
||
|
Cancellation
|
||
|
Note that cancellation works somewhat different on Windows platform due
|
||
|
to different mechanism of break signal propagation. One also might
|
||
|
need to use Ctrl-Break shortcut instead of Ctrl-C.
|
||
|
|
||
|
There are two types of operations that can be cancelled:
|
||
|
|
||
|
- file system operations;
|
||
|
|
||
|
- mounting with FUSE (but not unmounting as it can cause loss of
|
||
|
data);
|
||
|
|
||
|
- calls of external applications.
|
||
|
|
||
|
Note that vifm never terminates applications, it sends SIGINT signal
|
||
|
and lets the application quit normally.
|
||
|
|
||
|
When one of set of operations is cancelled (e.g. copying of 5th file of
|
||
|
10 files), further operations are cancelled too. In this case undo
|
||
|
history will contain only actually performed operations.
|
||
|
|
||
|
Cancelled operations are indicated by "(cancelled)" suffix appended to
|
||
|
information message on statusbar.
|
||
|
|
||
|
File system operations
|
||
|
|
||
|
Currently the following commands can be cancelled: :alink, :chmod,
|
||
|
:chown, :clone, :copy, :delete, :mkdir, :move, :restore, :rlink,
|
||
|
:touch. File putting (on p/P key) can be cancelled as well. It's not
|
||
|
hard to see that these are mainly long-running operations.
|
||
|
|
||
|
Cancelling commands when they are repeated for undo/redo operations is
|
||
|
allowed for convenience, but is not recommended as further undo/redo
|
||
|
operations might get blocked by side-effects of partially cancelled
|
||
|
group of operations.
|
||
|
|
||
|
These commands can't be cancelled: :empty, :rename, :substitute, :tr.
|
||
|
|
||
|
Mounting with FUSE
|
||
|
|
||
|
It's not considered to be an error, so only notification on the status
|
||
|
bar is shown.
|
||
|
|
||
|
External application calls
|
||
|
|
||
|
Each of this operations can be cancelled: :apropos, :find, :grep, :lo-
|
||
|
cate.
|
||
|
|
||
|
Selection
|
||
|
If there is a selection, it's stashed before proceeding further unless
|
||
|
file under the cursor is part of that selection. This means that when
|
||
|
macros are expanded for :filetype or :filextype programs, `%f` and `%F`
|
||
|
become equivalent to `%c` and `%C` respectively if current file is not
|
||
|
selected. So you run selection by running one of selected files, oth-
|
||
|
erwise you're running a single file even if there are other selected
|
||
|
entries.
|
||
|
|
||
|
When running a selection it must not include broken symbolic links, has
|
||
|
to be consistent and set of file handlers must be compatible. Consis-
|
||
|
tency means that selection contains either only directories (including
|
||
|
links to them) or only files, but not their mix.
|
||
|
|
||
|
Compatibility is a more sophisticated check, but it's defined in a nat-
|
||
|
ural way so that you get what you'd expect. The following properties
|
||
|
of selection are taken into account while checking it for compatibility
|
||
|
and deciding how to handle it:
|
||
|
|
||
|
|
||
|
1. If there any files for which handler isn't defined, then all files
|
||
|
are opened using 'vicmd' or 'vixcmd'.
|
||
|
|
||
|
|
||
|
2. If all handlers match the following criteria:
|
||
|
- backgrounded
|
||
|
- include `%c` and/or `%C`
|
||
|
- include neither `%f` nor `%F`
|
||
|
then each file is executed independently of the rest.
|
||
|
|
||
|
|
||
|
3. If all handlers are equal, the common handler is executed. This
|
||
|
handler might ignore selection and process only file under the
|
||
|
cursor.
|
||
|
|
||
|
|
||
|
4. Otherwise, an error is reported, because handlers differ and they
|
||
|
don't support parallel execution.
|
||
|
|
||
|
Patterns
|
||
|
:highlight, :filetype, :filextype, :fileviewer commands and 'classify'
|
||
|
option support globs, regular expressions and mime types to match file
|
||
|
names or their paths.
|
||
|
|
||
|
There are six possible ways to write a single pattern:
|
||
|
|
||
|
1. [!]{comma-separated-name-globs}
|
||
|
|
||
|
2. [!]{{comma-separated-path-globs}}
|
||
|
|
||
|
3. [!]/name-regular-expression/[iI]
|
||
|
|
||
|
4. [!]//path-regular-expression//[iI]
|
||
|
|
||
|
5. [!]<comma-separated-mime-type-globs>
|
||
|
|
||
|
6. undecorated-pattern
|
||
|
|
||
|
First five forms can include leading exclamation mark that negates pat-
|
||
|
tern matching.
|
||
|
|
||
|
The last form is implicitly refers to one of others. :highlight does
|
||
|
not accept undecorated form, while :filetype, :filextype, :fileviewer,
|
||
|
:select, :unselect and 'classify' treat it as list of name globs.
|
||
|
|
||
|
Path patterns receive absolute path of the file that includes its name
|
||
|
component as well.
|
||
|
|
||
|
To combine several patterns (AND them), make sure you're using one of
|
||
|
the first five forms and write patterns one after another, like this:
|
||
|
<text/plain>{*.vifm}
|
||
|
Mind that if you make a mistake the whole string will be treated as the
|
||
|
sixth form.
|
||
|
|
||
|
:filetype, :filextype and :fileviewer commands accept comma-separated
|
||
|
list of patterns instead of a single pattern, thus effectively handling
|
||
|
OR operation on them:
|
||
|
<text/plain>{*.vifm},<application/pdf>{*.pdf}
|
||
|
Forms that accept comma-separated lists of patterns also process them
|
||
|
as lists of alternatives.
|
||
|
|
||
|
Patterns with regular expressions
|
||
|
|
||
|
Regular expression patterns are case insensitive by default, see de-
|
||
|
scription of commands, which might override default behaviour.
|
||
|
|
||
|
Flags of regular expressions mean the following:
|
||
|
- "i" makes filter case insensitive;
|
||
|
- "I" makes filter case sensitive. They can be repeated multiple
|
||
|
times, but the later one takes precedence (e.g. "iiiI" is equivalent
|
||
|
to "I" and "IiIi" is the same as "i").
|
||
|
|
||
|
There are no implicit `^` or `$`, so make sure to specify them explic-
|
||
|
itly if the pattern should match the whole name or path.
|
||
|
|
||
|
Patterns with globs
|
||
|
|
||
|
"Globs" section below provides short overview of globs and some impor-
|
||
|
tant points that one needs to know about them.
|
||
|
|
||
|
Patterns with mime-types
|
||
|
|
||
|
Mime type matching is essentially globs matching applied to mime type
|
||
|
of a file instead of its name/path. Note: mime types aren't detected
|
||
|
on Windows.
|
||
|
|
||
|
Examples
|
||
|
|
||
|
Associate `evince` to PDF-files only inside `/home/user/downloads/` di-
|
||
|
rectory (excluding its subdirectories):
|
||
|
|
||
|
:filextype //^/home/user/downloads/[^/]*.pdf$// evince %f
|
||
|
|
||
|
|
||
|
Globs
|
||
|
Globs are always case insensitive as it makes sense in general case.
|
||
|
|
||
|
`*`, `?`, `[` and `]` are treated as special symbols in the pattern.
|
||
|
E.g.
|
||
|
|
||
|
:filetype * less %c
|
||
|
|
||
|
matches all files. One can use character classes for escaping, so
|
||
|
|
||
|
:filetype [*] less %c
|
||
|
|
||
|
matches only one file name, the one which contains only asterisk sym-
|
||
|
bol.
|
||
|
|
||
|
`*` means any number of any characters (possibly an empty substring),
|
||
|
with one exception: asterisk at the pattern beginning doesn't match dot
|
||
|
in the first position. E.g.
|
||
|
|
||
|
:fileviewer *.zip,*.jar zip -sf %c
|
||
|
|
||
|
associates using of `zip` program to preview all files with `zip` or
|
||
|
`jar` extensions as listing of their content, but `.file.zip` won't be
|
||
|
matched.
|
||
|
|
||
|
`?` means any character at this position. E.g.
|
||
|
|
||
|
:fileviewer ?.out file %c
|
||
|
|
||
|
calls `file` tool for all files which have exactly one character before
|
||
|
their extension (e.g. a.out, b.out).
|
||
|
|
||
|
Square brackets designate character class, which means that whole char-
|
||
|
acter class matches against any of characters listed in it. For exam-
|
||
|
ple
|
||
|
|
||
|
:fileviewer *.[ch] highlight -O xterm256 -s dante --syntax c %c
|
||
|
|
||
|
makes vifm call `highlight` program to colorize source and header files
|
||
|
in C language for a 256-color terminal. Equal command would be
|
||
|
|
||
|
:fileviewer *.c,*.h highlight -O xterm256 -s dante --syntax c %c
|
||
|
|
||
|
|
||
|
Inside square brackets `^` or `!` can be used for symbol class negotia-
|
||
|
tion and the `-` symbol to set a range. `^` and `!` should appear
|
||
|
right after the opening square bracket. For example
|
||
|
|
||
|
:filetype *.[!d]/ inspect_dir
|
||
|
|
||
|
associates `inspect_dir` as additional handler for all directories that
|
||
|
have one character extension unless it's "d" letter. And
|
||
|
|
||
|
:filetype [0-9].jpg sxiv
|
||
|
|
||
|
associates `sxiv` picture viewer only for JPEG-files that contain sin-
|
||
|
gle digit in their name.
|
||
|
|
||
|
If you need to include literal comma, which is normally separates mul-
|
||
|
tiple globs, double it.
|
||
|
|
||
|
:set options
|
||
|
Local options
|
||
|
These are kind of options that are local to a specific view. So
|
||
|
you can set ascending sorting order for left pane and descending
|
||
|
order for right pane.
|
||
|
|
||
|
In addition to being local to views, each such option also has
|
||
|
two values:
|
||
|
|
||
|
- local to current directory (value associated with current
|
||
|
location);
|
||
|
|
||
|
- global to current directory (value associated with the
|
||
|
pane).
|
||
|
|
||
|
The idea is that current directory can be made a temporary ex-
|
||
|
ception to regular configuration of the view, until directory
|
||
|
change. Use :setlocal for that. :setglobal changes view value
|
||
|
not affecting settings until directory change. :set applies
|
||
|
changes immediately to all values.
|
||
|
|
||
|
|
||
|
'aproposprg'
|
||
|
type: string
|
||
|
default: "apropos %a"
|
||
|
Specifies format for an external command to be invoked by the
|
||
|
:apropos command. The format supports expanding of macros, spe-
|
||
|
cific for a particular *prg option, and %% sequence for insert-
|
||
|
ing percent sign literally. This option should include the %a
|
||
|
macro to specify placement of arguments passed to the :apropos
|
||
|
command. If the macro is not used, it will be implicitly added
|
||
|
after a space to the value of this option.
|
||
|
|
||
|
'autochpos'
|
||
|
type: boolean
|
||
|
default: true
|
||
|
When disabled vifm will set cursor to the first line in the view
|
||
|
after :cd and :pushd commands instead of saved cursor position.
|
||
|
Disabling this will also make vifm clear information about cur-
|
||
|
sor position in the view history on :cd and :pushd commands (and
|
||
|
on startup if 'autochpos' is disabled in the vifmrc). l key in
|
||
|
the ":history ." and ":trashes" menus are treated like :cd com-
|
||
|
mand. This option also affects marks so that navigating to a
|
||
|
mark doesn't restore cursor position.
|
||
|
|
||
|
When this option is enabled, more fine grained control over cur-
|
||
|
sor position is available via 'histcursor' option.
|
||
|
|
||
|
'columns' 'co'
|
||
|
type: integer
|
||
|
default: terminal width on startup
|
||
|
Terminal width in characters.
|
||
|
|
||
|
'caseoptions'
|
||
|
type: charset
|
||
|
default: ""
|
||
|
This option gives additional control over case sensitivity by
|
||
|
allowing overriding default behaviour to either always be case
|
||
|
sensitive or always be case insensitive. Possible values form
|
||
|
pairs of lower and upper case letters that configure specific
|
||
|
aspect of behaviour:
|
||
|
p - always ignore case of paths during completion.
|
||
|
P - always match case of paths during completion.
|
||
|
g - always ignore case of characters for f/F/;/,.
|
||
|
G - always match case of characters for f/F/;/,.
|
||
|
|
||
|
At most one item of each pair takes affect, if both or more are
|
||
|
present, only the last one matters. When none of pair's ele-
|
||
|
ments are present, the behaviour is default (depends on operat-
|
||
|
ing system for path completion and on values of 'ignorecase' and
|
||
|
'smartcase' options for file navigation).
|
||
|
|
||
|
'cdpath' 'cd'
|
||
|
type: string list
|
||
|
default: value of $CDPATH with commas instead of colons
|
||
|
Specifies locations to check on changing directory with relative
|
||
|
path that doesn't start with "./" or "../". When non-empty,
|
||
|
current directory is examined after directories listed in the
|
||
|
option.
|
||
|
|
||
|
This option doesn't affect completion of :cd command.
|
||
|
|
||
|
Example:
|
||
|
|
||
|
set cdpath=~
|
||
|
|
||
|
This way ":cd bin" will switch to "~/bin" even if directory
|
||
|
named "bin" exists in current directory, while ":cd ./bin" com-
|
||
|
mand will ignore value of 'cdpath'.
|
||
|
|
||
|
'chaselinks'
|
||
|
type: boolean
|
||
|
default: false
|
||
|
When enabled path of view is always resolved to real path (with
|
||
|
all symbolic links expanded).
|
||
|
|
||
|
'classify'
|
||
|
type: string list
|
||
|
default: ":dir:/"
|
||
|
Specifies file name prefixes and suffixes depending on file type
|
||
|
or name. The format is either of:
|
||
|
- [{prefix}]:{filetype}:[{suffix}]
|
||
|
- [{prefix}]::{pattern}::[{suffix}]
|
||
|
Possible {pattern} forms are described in "Patterns" section
|
||
|
above.
|
||
|
|
||
|
Priority rules:
|
||
|
- file name patterns have priority over type patterns
|
||
|
- file name patterns are matched in left-to-right order of
|
||
|
their appearance in this option
|
||
|
|
||
|
Either {prefix} or {suffix} or both can be omitted (which is the
|
||
|
default for all unspecified file types), this means empty {pre-
|
||
|
fix} and/or {suffix}. {prefix} and {suffix} should consist of
|
||
|
at most eight characters. Elements are separated by commas.
|
||
|
Neither prefixes nor suffixes are part of file names, so they
|
||
|
don't affect commands which operate on file names in any way.
|
||
|
Comma (',') character can be inserted by doubling it. List of
|
||
|
file type names can be found in the description of filetype()
|
||
|
function.
|
||
|
|
||
|
'confirm' 'cf'
|
||
|
type: set
|
||
|
default: delete,permdelete
|
||
|
Defines which operations require confirmation:
|
||
|
- delete - moving files to trash (on d or :delete);
|
||
|
- permdelete - permanent deletion of files (on D or :delete!
|
||
|
command or on undo/redo operation).
|
||
|
|
||
|
'cpoptions' 'cpo'
|
||
|
type: charset
|
||
|
default: "fst"
|
||
|
Contains a sequence of single-character flags. Each flag en-
|
||
|
ables behaviour of older versions of vifm. Flags:
|
||
|
- f - when included, running :filter command results in not in-
|
||
|
verted (matching files are filtered out) and :filter! in in-
|
||
|
verted (matching files are left) filter, when omitted, meaning
|
||
|
of the exclamation mark changes to the opposite;
|
||
|
- s - when included, yy, dd and DD normal mode commands act on
|
||
|
selection, otherwise they operate on current file only;
|
||
|
- t - when included, <tab> (thus <c-i>) behave as <space> and
|
||
|
switches active pane, otherwise <tab> and <c-i> go forward in
|
||
|
the view history. It's possible to make both <tab> and <c-i> to
|
||
|
work as expected by setting up the terminal to emit a custom se-
|
||
|
quence when <c-i> is pressed; see :histnext for details.
|
||
|
|
||
|
'cvoptions'
|
||
|
type: set
|
||
|
default:
|
||
|
Specifies whether entering/leaving custom views triggers events
|
||
|
that normally happen on entering/leaving directories:
|
||
|
- autocmds - trigger autocommands on entering/leaving custom
|
||
|
views;
|
||
|
- localopts - reset local options on entering/leaving custom
|
||
|
views;
|
||
|
- localfilter - reset local filter on entering/leaving custom
|
||
|
views.
|
||
|
|
||
|
'deleteprg'
|
||
|
type: string
|
||
|
default: ""
|
||
|
Specifies program to run on files that are permanently removed.
|
||
|
When empty, files are removed as usual, otherwise this command
|
||
|
is invoked on each file by appending its name. If the command
|
||
|
doesn't remove files, they will remain on the file system.
|
||
|
|
||
|
'dirsize'
|
||
|
type: enumeration
|
||
|
default: size
|
||
|
Controls how size of directories is displayed in file views.
|
||
|
The following values are possible:
|
||
|
- size - size of directory (i.e., size used to store list of
|
||
|
files)
|
||
|
- nitems - number of entries in the directory (excluding . and
|
||
|
..)
|
||
|
|
||
|
Size obtained via ga/gA overwrites this setting so seeing count
|
||
|
of files and occasionally size of directories is possible.
|
||
|
|
||
|
'dotdirs'
|
||
|
type: set
|
||
|
default: nonrootparent,treeleafsparent
|
||
|
Controls displaying of dot directories. The following values
|
||
|
are possible:
|
||
|
- rootparent - show "../" in root directory of file system
|
||
|
- nonrootparent - show "../" in non-root directories of file
|
||
|
system
|
||
|
- treeleafsparent - show "../" in empty directories of tree
|
||
|
view
|
||
|
|
||
|
Note that empty directories always contain "../" entry regard-
|
||
|
less of value of this option. "../" disappears at the moment at
|
||
|
least one file is created.
|
||
|
|
||
|
'dotfiles'
|
||
|
type: boolean
|
||
|
default: false
|
||
|
Whether dot files are shown in the view. Can be controlled with
|
||
|
z* bindings.
|
||
|
|
||
|
'fastrun'
|
||
|
type: boolean
|
||
|
default: false
|
||
|
With this option turned on you can run partially entered com-
|
||
|
mands with unambiguous beginning using :! (e.g. :!Te instead of
|
||
|
:!Terminal or :!Te<tab>).
|
||
|
|
||
|
'fillchars' 'fcs'
|
||
|
type: string list
|
||
|
default: ""
|
||
|
Sets characters used to fill borders.
|
||
|
|
||
|
item default used for
|
||
|
vborder:c ' ' left, middle and right vertical bor-
|
||
|
ders
|
||
|
|
||
|
If value is omitted, its default value is used. Example:
|
||
|
|
||
|
set fillchars=vborder:.
|
||
|
|
||
|
'findprg'
|
||
|
type: string
|
||
|
default: "find %s %a -print , -type d \( ! -readable -o ! -exe-
|
||
|
cutable \) -prune"
|
||
|
Specifies format for an external command to be invoked by the
|
||
|
:find command. The format supports expansion of macros specific
|
||
|
for this particular option and %% sequence for inserting percent
|
||
|
sign literally. The macros are:
|
||
|
|
||
|
macro value/meaning
|
||
|
%s literal arguments of :find or
|
||
|
list of paths to search in
|
||
|
|
||
|
%A empty or
|
||
|
literal arguments of :find
|
||
|
%a empty or
|
||
|
literal arguments of :find or
|
||
|
predicate followed by escaped arguments of :find
|
||
|
%p empty or
|
||
|
literal arguments of :find or
|
||
|
escaped arguments (parameters) of :find
|
||
|
|
||
|
%u redirect output to custom view instead of showing a
|
||
|
menu
|
||
|
%U redirect output to unsorted custom view instead of
|
||
|
showing a menu
|
||
|
|
||
|
Predicate in %a is "-name" on *nix and "-iname" on Windows.
|
||
|
|
||
|
If both %u and %U are specified, %U is chosen.
|
||
|
|
||
|
Some macros can be added implicitly:
|
||
|
- if %s isn't present, it's appended
|
||
|
- if neither of %a, %A and %p is present, %a is appended
|
||
|
- if neither of %s, %a, %A and %p is present, %s and %a are ap-
|
||
|
pended in this order
|
||
|
|
||
|
The macros slightly change their meaning depending on format of
|
||
|
:find's arguments:
|
||
|
- if the first argument points to an existing directory, %s is
|
||
|
assigned all arguments while %a, %A and %p are left empty
|
||
|
- otherwise:
|
||
|
- %s is assigned a dot (".") meaning current directory or
|
||
|
list of selected file names, if any
|
||
|
- %a, %A and %p are assigned literal arguments when first
|
||
|
argument starts with a dash ("-"), otherwise %a gets an escaped
|
||
|
version of the arguments with a predicate and %p contains es-
|
||
|
caped version of the arguments
|
||
|
|
||
|
Starting with Windows Server 2003 a `where` command is avail-
|
||
|
able. One can configure vifm to use it in the following way:
|
||
|
|
||
|
set findprg="where /R %s %A"
|
||
|
|
||
|
As the syntax of this command is rather limited, one can't use
|
||
|
:find command with selection of more than one item because the
|
||
|
command ignores all directory paths except for the last one.
|
||
|
|
||
|
When using find port on Windows, another option is to setup
|
||
|
'findprg' like this:
|
||
|
|
||
|
set findprg="find %s %a"
|
||
|
|
||
|
|
||
|
'followlinks'
|
||
|
type: boolean
|
||
|
default: true
|
||
|
Follow links on l or Enter. That is navigate to destination
|
||
|
file instead of treating the link as if it were target file.
|
||
|
Doesn't affects links to directories, which are always entered
|
||
|
(use gf key for directories).
|
||
|
|
||
|
'fusehome'
|
||
|
type: string
|
||
|
default: "($XDG_DATA_HOME/.local/share | $VIFM)/fuse/"
|
||
|
Directory to be used as a root dir for FUSE mounts. Value of
|
||
|
the option can contain environment variables (in form "$en-
|
||
|
vname"), which will be expanded (prepend it with a slash to pre-
|
||
|
vent expansion). The value should expand to an absolute path.
|
||
|
|
||
|
If you change this option, vifm won't remount anything. It af-
|
||
|
fects future mounts only. See "Automatic FUSE mounts" section
|
||
|
below for more information.
|
||
|
|
||
|
'gdefault' 'gd'
|
||
|
type: boolean
|
||
|
default: false
|
||
|
When on, 'g' flag is on for :substitute by default.
|
||
|
|
||
|
'grepprg'
|
||
|
type: string
|
||
|
default: "grep -n -H -I -r %i %a %s"
|
||
|
Specifies format for an external command to be invoked by the
|
||
|
:grep command. The format supports expanding of macros, spe-
|
||
|
cific for a particular *prg option, and %% sequence for insert-
|
||
|
ing percent sign literally. This option should include the %i
|
||
|
macro to specify placement of "-v" string when inversion of re-
|
||
|
sults is requested, %a or %A macro to specify placement of argu-
|
||
|
ments passed to the :grep command and the %s macro to specify
|
||
|
placement of list of files to search in. If some of the macros
|
||
|
are not used, they will be implicitly added after a space to the
|
||
|
value of the 'grepprg' option in the following order: %i, %a,
|
||
|
%s. Note that when neither %a nor %A are specified, it's %a
|
||
|
which is added implicitly.
|
||
|
|
||
|
Optional %u or %U macro could be used (if both specified %U is
|
||
|
chosen) to force redirection to custom or unsorted custom view
|
||
|
respectively.
|
||
|
|
||
|
See 'findprg' option for description of difference between %a
|
||
|
and %A.
|
||
|
|
||
|
Example of setup to use ack (http://beyondgrep.com/) instead of
|
||
|
grep:
|
||
|
|
||
|
set grepprg='ack -H -r %i %a %s'
|
||
|
|
||
|
or The Silver Searcher (https://github.com/ggreer/the_sil-
|
||
|
ver_searcher):
|
||
|
|
||
|
set grepprg='ag --line-numbers %i %a %s'
|
||
|
|
||
|
|
||
|
|
||
|
'histcursor'
|
||
|
type: set
|
||
|
default: startup,dirmark,direnter
|
||
|
Defines situations when cursor should be moved according to di-
|
||
|
rectory history:
|
||
|
- startup - on loading file lists during startup
|
||
|
- dirmark - after navigating to a mark that doesn't specify
|
||
|
file
|
||
|
- direnter - on opening directory from a file list
|
||
|
|
||
|
This option has no effect when 'autochpos' is disabled.
|
||
|
|
||
|
Note that the list is not exhaustive and there are other situa-
|
||
|
tions when cursor is positioned automatically.
|
||
|
|
||
|
'history' 'hi'
|
||
|
type: integer
|
||
|
default: 15
|
||
|
Maximum number of stored items in all histories.
|
||
|
|
||
|
'hlsearch' 'hls'
|
||
|
type: boolean
|
||
|
default: true
|
||
|
Automatically select files that are search matches.
|
||
|
|
||
|
'iec' type: boolean
|
||
|
default: false
|
||
|
Use KiB, MiB, ... suffixes instead of K, M, ... when printing
|
||
|
size in human-friendly format.
|
||
|
|
||
|
'ignorecase' 'ic'
|
||
|
type: boolean
|
||
|
default: false
|
||
|
Ignore case in search patterns (:substitute, / and ? commands),
|
||
|
local filter (but not the rest of filters) and other things de-
|
||
|
tailed in the description of 'caseoptions'.
|
||
|
|
||
|
'incsearch' 'is'
|
||
|
type: boolean
|
||
|
default: false
|
||
|
When this option is set, search and view update for local filter
|
||
|
is be performed starting from initial cursor position each time
|
||
|
search pattern is changed.
|
||
|
|
||
|
'iooptions'
|
||
|
type: set
|
||
|
default:
|
||
|
Controls details of file operations. The following values are
|
||
|
available:
|
||
|
- fastfilecloning - perform fast file cloning (copy-on-write),
|
||
|
when available
|
||
|
(available on Linux and btrfs file system).
|
||
|
|
||
|
'laststatus' 'ls'
|
||
|
type: boolean
|
||
|
default: true
|
||
|
Controls if status bar is visible.
|
||
|
|
||
|
'lines'
|
||
|
type: integer
|
||
|
default: terminal height on startup
|
||
|
Terminal height in lines.
|
||
|
|
||
|
'locateprg'
|
||
|
type: string
|
||
|
default: "locate %a"
|
||
|
Specifies format for an external command to be invoked by the
|
||
|
:locate command. The format supports expanding of macros, spe-
|
||
|
cific for a particular *prg option, and %% sequence for insert-
|
||
|
ing percent sign literally. This option should include the %a
|
||
|
macro to specify placement of arguments passed to the :locate
|
||
|
command. If the macro is not used, it will be implicitly added
|
||
|
after a space to the value of this option.
|
||
|
|
||
|
Optional %u or %U macro could be used (if both specified %U is
|
||
|
chosen) to force redirection to custom or unsorted custom view
|
||
|
respectively.
|
||
|
|
||
|
'mediaprg'
|
||
|
type: string
|
||
|
default: path to bundled script that supports udevil, udisks and
|
||
|
udisks2
|
||
|
(using udisks2 requires python with dbus module in-
|
||
|
stalled)
|
||
|
OS X: path points to a python script that uses diskutil
|
||
|
{only for *nix}
|
||
|
Specifies command to be used to manage media devices. Used by
|
||
|
:media command.
|
||
|
|
||
|
The command can be passed the following parameters:
|
||
|
- list -- list media
|
||
|
- mount {device} -- mount a device
|
||
|
- unmount {path} -- unmount given mount point
|
||
|
|
||
|
The output of `list` subcommand is parsed in search of lines
|
||
|
that start with one of the following prefixes:
|
||
|
- device= - specifies device path (e.g., "/dev/sde")
|
||
|
- label= - specifies optional device label (e.g., "Memory
|
||
|
card")
|
||
|
- info= - specifies arbitrary text to display next to
|
||
|
device (by
|
||
|
default "[label]" is used, if label is pro-
|
||
|
vided)
|
||
|
- mount-point= - specifies a mount point (can be absent or ap-
|
||
|
pear more than once)
|
||
|
|
||
|
All other lines are ignored. Each `device=` starts a new sec-
|
||
|
tion describing a device which should include two other possible
|
||
|
prefixes.
|
||
|
|
||
|
`list` subcommand is assumed to always succeed, while exit code
|
||
|
of `mount` and `unmount` is taken into account to determine
|
||
|
whether operation was performed successfully.
|
||
|
|
||
|
'lsoptions'
|
||
|
type: string list
|
||
|
default: ""
|
||
|
scope: local
|
||
|
|
||
|
Configures ls-like view.
|
||
|
|
||
|
item used for
|
||
|
transposed filling view grid by columns rather than by
|
||
|
lines
|
||
|
|
||
|
|
||
|
'lsview'
|
||
|
type: boolean
|
||
|
default: false
|
||
|
scope: local
|
||
|
When this option is set, directory view will be displayed in
|
||
|
multiple columns with file names similar to output of `ls -x`
|
||
|
command. See "ls-like view" section below for format descrip-
|
||
|
tion. This option has no effect if 'millerview' is on.
|
||
|
|
||
|
'milleroptions'
|
||
|
type: string list
|
||
|
default: "lsize:1,csize:1,rsize:1,rpreview:dirs"
|
||
|
scope: local
|
||
|
|
||
|
Configures miller view.
|
||
|
|
||
|
item default used for
|
||
|
lsize:num 0 left column
|
||
|
csize:num 1 center column (can't be disabled)
|
||
|
rsize:num 0 right column
|
||
|
rpreview:str dirs right column
|
||
|
|
||
|
*size specifies ratios of columns. Each ratio is in the range
|
||
|
from 0 to 100 and values are adjusted to fit the limits. Zero
|
||
|
disables a column, but central (main) column can't be disabled.
|
||
|
|
||
|
rpreview specifies what file-system objects should be previewed
|
||
|
in the right column and can take two values: dirs (only directo-
|
||
|
ries) or all. Both options don't include parent directory
|
||
|
("..").
|
||
|
|
||
|
Example of two-column mode which is useful in combination with
|
||
|
:view command:
|
||
|
|
||
|
set milleroptions=lsize:1,csize:2
|
||
|
|
||
|
|
||
|
'millerview'
|
||
|
type: boolean
|
||
|
default: false
|
||
|
scope: local
|
||
|
When this option is set, directory view will be displayed in
|
||
|
multiple cascading columns. Ignores 'lsview'.
|
||
|
|
||
|
'mintimeoutlen'
|
||
|
type: integer
|
||
|
default: 150
|
||
|
The fracture of 'timeoutlen' in milliseconds that is waited be-
|
||
|
tween subsequent input polls, which affects various asynchronous
|
||
|
operations (detecting changes made by external applications,
|
||
|
monitoring background jobs, redrawing UI). There are no strict
|
||
|
guarantees, however the higher this value is, the less is CPU
|
||
|
load in idle mode.
|
||
|
|
||
|
'number' 'nu'
|
||
|
type: boolean
|
||
|
default: false
|
||
|
scope: local
|
||
|
Print line number in front of each file name when 'lsview' op-
|
||
|
tion is turned off. Use 'numberwidth' to control width of line
|
||
|
number. Also see 'relativenumber'.
|
||
|
|
||
|
'numberwidth' 'nuw'
|
||
|
type: integer
|
||
|
default: 4
|
||
|
scope: local
|
||
|
Minimal number of characters for line number field.
|
||
|
|
||
|
'previewoptions'
|
||
|
type: string list
|
||
|
default: "graphicsdelay:50000"
|
||
|
|
||
|
Tweaks how previewing is done (in quick view, miller view's col-
|
||
|
umn and view mode).
|
||
|
|
||
|
item default meaning
|
||
|
graphicsdelay:num 0 delay before drawing graphics (mi-
|
||
|
croseconds)
|
||
|
hardgraphicsclear unset redraw screen to get rid of graph-
|
||
|
ics
|
||
|
toptreestats unset show file counts before the tree
|
||
|
|
||
|
graphicsdelay is needed if terminal requires some timeout before
|
||
|
it can draw graphics (otherwise it gets lost).
|
||
|
|
||
|
hardgraphicsclear seems to be necessary to get rid of sixel
|
||
|
graphics in some terminals, where it otherwise lingers. This
|
||
|
can cause flicker on the screen due to erasure followed by re-
|
||
|
drawing.
|
||
|
|
||
|
'previewprg'
|
||
|
type: string
|
||
|
default: ""
|
||
|
scope: local
|
||
|
|
||
|
External command to be used instead of preview programs config-
|
||
|
ured via :fileviewer command.
|
||
|
|
||
|
Example:
|
||
|
|
||
|
" always show git log in preview of files inside some repository
|
||
|
au DirEnter '~/git-repo/**/*' setl previewprg='git log --color -- %c 2>&1'
|
||
|
|
||
|
'quickview'
|
||
|
type: boolean
|
||
|
default: false
|
||
|
Whether quick view (:view) is currently active or not.
|
||
|
|
||
|
'relativenumber' 'rnu'
|
||
|
type: boolean
|
||
|
default: false
|
||
|
scope: local
|
||
|
Print relative line number in front of each file name when
|
||
|
'lsview' option is turned off. Use 'numberwidth' to control
|
||
|
width of line number. Various combinations of 'number' and
|
||
|
'relativenumber' lead to such results:
|
||
|
|
||
|
nonumber number
|
||
|
|
||
|
norelativenumber | first | 1 first
|
||
|
| second | 2 second
|
||
|
| third | 3 third
|
||
|
|
||
|
relativenumber | 1 first | 1 first
|
||
|
| 0 second |2 second
|
||
|
| 1 third | 1 third
|
||
|
|
||
|
|
||
|
'rulerformat' 'ruf'
|
||
|
type: string
|
||
|
default: "%l/%S "
|
||
|
Determines the content of the ruler. Its minimal width is 13
|
||
|
characters and it's right aligned. Following macros are sup-
|
||
|
ported:
|
||
|
%= - separation point between left and right aligned halves of
|
||
|
the line
|
||
|
%l - file number
|
||
|
%L - total number of files in view (including filtered out
|
||
|
ones)
|
||
|
%x - number of files excluded by filters
|
||
|
%0- - old name for %x macro
|
||
|
%P - percentage through file list (All, Top, xx% or Bot), al-
|
||
|
ways 3 in length
|
||
|
%S - number of displayed files
|
||
|
%= - separation point between left and right align items
|
||
|
%% - literal percent sign
|
||
|
%[ - designates beginning of an optional block
|
||
|
%] - designates end of an optional block
|
||
|
|
||
|
Percent sign can be followed by optional minimum field width.
|
||
|
Add '-' before minimum field width if you want field to be right
|
||
|
aligned.
|
||
|
|
||
|
Optional blocks are ignored unless at least one macro inside of
|
||
|
them is expanded to a non-empty value.
|
||
|
|
||
|
Example:
|
||
|
|
||
|
set rulerformat='%2l-%S%[ +%x%]'
|
||
|
|
||
|
'runexec'
|
||
|
type: boolean
|
||
|
default: false
|
||
|
Run executable file on Enter, l or Right Arrow key. Behaviour
|
||
|
of the last two depends on the value of the 'lsview' option.
|
||
|
|
||
|
'scrollbind' 'scb'
|
||
|
type: boolean
|
||
|
default: false
|
||
|
When this option is set, vifm will try to keep difference of
|
||
|
scrolling positions of two windows constant.
|
||
|
|
||
|
'scrolloff' 'so'
|
||
|
type: integer
|
||
|
default: 0
|
||
|
Minimal number of screen lines to keep above and below the cur-
|
||
|
sor. If you want cursor line to always be in the middle of the
|
||
|
view (except at the beginning or end of the file list), set this
|
||
|
option to some large value (e.g. 999).
|
||
|
|
||
|
'sessionoptions' 'ssop'
|
||
|
sessionoptions ssop
|
||
|
type: set
|
||
|
default: tui,state,tabs,savedirs,dhistory
|
||
|
An equivalent of 'vifminfo' for sessions, uses the same values.
|
||
|
When both options include the same value, data from session file
|
||
|
has higher priority (data from vifminfo isn't necessarily com-
|
||
|
pletely discarded, instead it's merged with the state of a ses-
|
||
|
sion the same way state of multiple instances is merged on
|
||
|
exit).
|
||
|
|
||
|
'shell' 'sh'
|
||
|
type: string
|
||
|
default: $SHELL or "/bin/sh" or "cmd" (on MS-Windows)
|
||
|
Full path to the shell to use to run external commands. On *nix
|
||
|
a shell argument can be supplied.
|
||
|
|
||
|
'shellcmdflag' 'shcf'
|
||
|
type: string
|
||
|
default: "-c" or "/C" (for cmd.exe on MS-Windows)
|
||
|
Command-line option used to pass a command to 'shell'. It's
|
||
|
used in contexts where command comes from the user.
|
||
|
|
||
|
Note that using this option to force interactive mode of the
|
||
|
shell is most likely a BAD IDEA. In general interactive host
|
||
|
and interactive child shell can't share the same terminal ses-
|
||
|
sion. You can't even run such a shell in background. Consider
|
||
|
writing a wrapper for your shell that preloads aliases and com-
|
||
|
mands without making the shell interactive and ending up using
|
||
|
it in a way it was not meant to be used.
|
||
|
|
||
|
Note that this option is ignored when 'shell' is set to Power-
|
||
|
Shell due to the internal use of `-encodedCommand`.
|
||
|
|
||
|
'shortmess' 'shm'
|
||
|
type: charset
|
||
|
default: "p"
|
||
|
Contains a sequence of single-character flags. Each flag en-
|
||
|
ables shortening of some message displayed by vifm in the TUI.
|
||
|
Flags:
|
||
|
- L - display only last directory in tab line instead of full
|
||
|
path.
|
||
|
- M - shorten titles in windows of terminal multiplexers cre-
|
||
|
ated by vifm down to file name instead of using full path.
|
||
|
- T - truncate status-bar messages in the middle if they are
|
||
|
too long to fit on the command line. "..." will appear in the
|
||
|
middle.
|
||
|
- p - use tilde shortening in view titles.
|
||
|
|
||
|
|
||
|
'showtabline' 'stal'
|
||
|
type: enumeration
|
||
|
default: multiple
|
||
|
Specifies when tab line should be displayed. Possible values:
|
||
|
- never - never display tab line
|
||
|
- multiple - show tab line only when there are at least two
|
||
|
tabs
|
||
|
- always - display tab line always
|
||
|
|
||
|
Alternatively 0, 1 and 2 Vim-like values are also accepted and
|
||
|
correspond to "never", "multiple" and "always" respectively.
|
||
|
|
||
|
|
||
|
'sizefmt'
|
||
|
type: string list
|
||
|
default: "units:iec"
|
||
|
Configures the way size is formatted in human-friendly way.
|
||
|
|
||
|
item value meaning
|
||
|
units: iec Use 1024 byte units (K or KiB,
|
||
|
etc.).
|
||
|
See 'iec' option.
|
||
|
si Use 1000 byte units (KB, etc.).
|
||
|
precision: i > 0 How many fraction digits to con-
|
||
|
sider.
|
||
|
{not set} Precision of 1 for integer part
|
||
|
< 10,
|
||
|
0 otherwise (provides old behav-
|
||
|
iour).
|
||
|
space {present} Insert space before unit sym-
|
||
|
bols.
|
||
|
This is the default.
|
||
|
nospace {present} Do not insert space before unit
|
||
|
symbols.
|
||
|
|
||
|
Numbers are rounded from zero. Trailing zeros are dropped.
|
||
|
|
||
|
Example:
|
||
|
|
||
|
set sizefmt=units:iec,precision:2,nospace
|
||
|
|
||
|
|
||
|
'slowfs'
|
||
|
type: string list
|
||
|
default: ""
|
||
|
only for *nix
|
||
|
A list of mounter fs name beginnings (first column in /etc/mtab
|
||
|
or /proc/mounts) or paths prefixes for fs/directories that work
|
||
|
too slow for you. This option can be used to stop vifm from
|
||
|
making some requests to particular kinds of file systems that
|
||
|
can slow down file browsing. Currently this means don't check
|
||
|
if directory has changed, skip check if target of symbolic links
|
||
|
exists, assume that link target located on slow fs to be a di-
|
||
|
rectory (allows entering directories and navigating to files via
|
||
|
gf). If you set the option to "*", it means all the systems are
|
||
|
considered slow (useful for cygwin, where all the checks might
|
||
|
render vifm very slow if there are network mounts).
|
||
|
|
||
|
Example for autofs root /mnt/autofs:
|
||
|
|
||
|
set slowfs+=/mnt/autofs
|
||
|
|
||
|
'smartcase' 'scs'
|
||
|
type: boolean
|
||
|
default: false
|
||
|
Overrides the ignorecase option if a pattern contains at least
|
||
|
one upper case character. Only used when 'ignorecase' option is
|
||
|
enabled.
|
||
|
|
||
|
'sort' type: string list
|
||
|
default: +name on *nix and +iname on Windows
|
||
|
scope: local
|
||
|
Sets list of sorting keys (first item is primary key, second is
|
||
|
secondary key, etc.):
|
||
|
[+-]ext - extension of files and directories
|
||
|
[+-]fileext - extension of files only
|
||
|
[+-]name - name (including extension)
|
||
|
[+-]iname - name (including extension, ignores case)
|
||
|
[+-]type - file type
|
||
|
(dir/reg/exe/link/char/block/sock/fifo)
|
||
|
[+-]dir - directory grouping (directory < file)
|
||
|
[+-]gid - group id (*nix only)
|
||
|
[+-]gname - group name (*nix only)
|
||
|
[+-]mode - file type derived from its mode (*nix only)
|
||
|
[+-]perms - permissions string (*nix only)
|
||
|
[+-]uid - owner id (*nix only)
|
||
|
[+-]uname - owner name (*nix only)
|
||
|
[+-]nlinks - number of hard links (*nix only)
|
||
|
[+-]inode - inode number (*nix only)
|
||
|
[+-]size - size
|
||
|
[+-]nitems - number of items in a directory (zero for files)
|
||
|
[+-]groups - groups extracted via regexps from 'sortgroups'
|
||
|
[+-]target - symbolic link target (empty for other file
|
||
|
types)
|
||
|
[+-]atime - time accessed (e.g., read, executed)
|
||
|
[+-]ctime - time changed (changes in metadata, like mode)
|
||
|
[+-]mtime - time modified (when file contents is changed)
|
||
|
|
||
|
Note: look for st_atime, st_ctime and st_mtime in "man 2 stat"
|
||
|
for more information on time keys.
|
||
|
|
||
|
'+' means ascending sort for this key, and '-' means descending
|
||
|
sort.
|
||
|
|
||
|
"dir" key is somewhat similar in this regard but it's added im-
|
||
|
plicitly: when "dir" is not specified, sorting behaves as if it
|
||
|
was the first key in the list. That's why if one wants sorting
|
||
|
algorithm to mix directories and files, "dir" should be appended
|
||
|
to sorting option, for example like this:
|
||
|
|
||
|
set sort+=dir
|
||
|
|
||
|
or
|
||
|
|
||
|
set sort=-size,dir
|
||
|
|
||
|
Value of the option is checked to include dir key and default
|
||
|
sorting key (name on *nix, iname on Windows). Here is what hap-
|
||
|
pens if one of them is missing:
|
||
|
|
||
|
- type key is added at the beginning;
|
||
|
|
||
|
- default key is added at the end;
|
||
|
|
||
|
all other keys are left untouched (at most they are moved).
|
||
|
|
||
|
This option also changes view columns according to primary sort-
|
||
|
ing key set, unless 'viewcolumns' option is not empty.
|
||
|
|
||
|
'sortnumbers'
|
||
|
type: boolean
|
||
|
default: false
|
||
|
scope: local
|
||
|
Natural sort of (version) numbers within text.
|
||
|
|
||
|
'sortgroups'
|
||
|
type: string
|
||
|
default: ""
|
||
|
scope: local
|
||
|
Sets comma-separated list of regular expressions for group type
|
||
|
of sorting. Double the comma to insert it literally.
|
||
|
|
||
|
The regular expressions are used to extract substrings of file
|
||
|
names to serve as keys for sorting. It is essentially a way to
|
||
|
ignore uninteresting parts of file names during sorting by name.
|
||
|
|
||
|
Each expression should contain at least one group or its value
|
||
|
will be considered to be always empty. Also, only the first
|
||
|
match of regular expression is processed.
|
||
|
|
||
|
The first group divides list of files into sub-groups, each of
|
||
|
which is then sorted by substrings extracted using second regu-
|
||
|
lar expression and so on recursively.
|
||
|
|
||
|
Example:
|
||
|
set sortgroups=-(todo|done).*
|
||
|
this would group files with "-done" in their names and files
|
||
|
with "-todo" separately. On ascending sorting, group containing
|
||
|
"-done" would appear before the other one.
|
||
|
|
||
|
'sortorder'
|
||
|
type: enumeration
|
||
|
default: ascending
|
||
|
Sets sort order for primary key: ascending, descending.
|
||
|
|
||
|
'statusline' 'stl'
|
||
|
type: string
|
||
|
default: ""
|
||
|
Determines the content of the status line (the line right above
|
||
|
command-line). Empty string means use same format like in pre-
|
||
|
vious versions. Following macros are supported:
|
||
|
|
||
|
- %N - line break (increases height of the status line accord-
|
||
|
ingly), ignores %[ %] blocks
|
||
|
|
||
|
- %t - file name (considering value of the 'classify' option)
|
||
|
|
||
|
- %T - symbolic link target (empty for other filetypes)
|
||
|
|
||
|
- %f - file name relative to current directory (considers 'clas-
|
||
|
sify')
|
||
|
|
||
|
- %A - file attributes (permissions on *nix or properties on
|
||
|
Windows)
|
||
|
|
||
|
- %u - user name or uid (if it cannot be resolved)
|
||
|
|
||
|
- %g - group name or gid (if it cannot be resolved)
|
||
|
|
||
|
- %s - file size in human readable format
|
||
|
|
||
|
- %E - size of selected files in human readable format, same as
|
||
|
%s when no files are selected, except that it will never show
|
||
|
size of ../ in visual mode, since it cannot be selected
|
||
|
|
||
|
- %d - file modification date (uses 'timefmt' option)
|
||
|
|
||
|
- %D - path of the other pane for single-pane layout
|
||
|
|
||
|
- %a - amount of free space available on current FS
|
||
|
|
||
|
- %c - size of current FS
|
||
|
|
||
|
- %z - short tips/tricks/hints that chosen randomly after one
|
||
|
minute period
|
||
|
|
||
|
- %{<expr>} - evaluate arbitrary vifm expression '<expr>', e.g.
|
||
|
'&sort'
|
||
|
|
||
|
- %* - resets or applies one of User1..User9 highlight groups;
|
||
|
reset happens when width field is 0 or not specified, one of
|
||
|
groups gets picked when width field is in the range from 1 to
|
||
|
9
|
||
|
|
||
|
- all 'rulerformat' macros
|
||
|
|
||
|
Percent sign can be followed by optional minimum field width.
|
||
|
Add '-' before minimum field width if you want field to be right
|
||
|
aligned.
|
||
|
|
||
|
On Windows file properties include the following flags (upper
|
||
|
case means flag is on):
|
||
|
A - archive
|
||
|
H - hidden
|
||
|
I - content isn't indexed
|
||
|
R - readonly
|
||
|
S - system
|
||
|
C - compressed
|
||
|
D - directory
|
||
|
E - encrypted
|
||
|
P - reparse point (e.g. symbolic link)
|
||
|
Z - sparse file
|
||
|
|
||
|
Example without colors:
|
||
|
|
||
|
set statusline=" %t%= %A %10u:%-7g %15s %20d %{&sort} "
|
||
|
|
||
|
Example with colors:
|
||
|
|
||
|
highlight User1 ctermbg=yellow
|
||
|
highlight User2 ctermbg=blue ctermfg=white cterm=bold
|
||
|
set statusline="%1* %-26t %2* %= %1* %A %2* %7u:%-7g %1* %-5s %2* %d "
|
||
|
|
||
|
|
||
|
'suggestoptions'
|
||
|
type: string list
|
||
|
default:
|
||
|
Controls when, for what and how suggestions are displayed. The
|
||
|
following values are available:
|
||
|
- normal - in normal mode;
|
||
|
- visual - in visual mode;
|
||
|
- view - in view mode;
|
||
|
- otherpane - use other pane to display suggestions, when
|
||
|
available;
|
||
|
- delay[:num] - display suggestions after a small delay (to
|
||
|
do not annoy if you just want to type a fast shortcut consisting
|
||
|
of multiple keys), num specifies the delay in ms (500 by de-
|
||
|
fault), 'timeoutlen' at most;
|
||
|
- keys - include shortcuts (commands and selectors);
|
||
|
- foldsubkeys - fold multiple keys with common prefix;
|
||
|
- marks - include marks;
|
||
|
- registers[:num] - include registers, at most num files (5 by
|
||
|
default).
|
||
|
|
||
|
'syncregs'
|
||
|
type: string
|
||
|
default:
|
||
|
Specifies identifier of group of instances that share registers
|
||
|
between each other. When several instances of vifm have this
|
||
|
option set to identical value, they automatically synchronize
|
||
|
contents of their registers on operations which use them.
|
||
|
|
||
|
'syscalls'
|
||
|
type: boolean
|
||
|
default: false
|
||
|
When disabled, vifm will rely on external applications to per-
|
||
|
form file-system operations, otherwise system calls are used in-
|
||
|
stead (much faster and supports progress tracking). The option
|
||
|
should eventually be removed. Mostly *nix-like systems are af-
|
||
|
fected.
|
||
|
|
||
|
'tablabel'
|
||
|
type: string
|
||
|
default: ""
|
||
|
When non-empty, determines format of the main part of a single
|
||
|
tab's label.
|
||
|
|
||
|
When empty, tab label is set to either tab name for named tabs
|
||
|
or to view title (usually current path) for unnamed tabs.
|
||
|
|
||
|
The following macros can appear in the format (see below for
|
||
|
what a flag is):
|
||
|
|
||
|
- %C - flag of a current tab
|
||
|
|
||
|
- %N - number of the tab
|
||
|
|
||
|
- %T - flag of a tree mode
|
||
|
|
||
|
- %c - description of a custom view
|
||
|
|
||
|
- %n - name of the tab
|
||
|
|
||
|
- %p - path of the view (handles filename modifiers)
|
||
|
|
||
|
- %t - title of the view (affected by 'shortmess' flags)
|
||
|
|
||
|
- %% - literal percent sign
|
||
|
|
||
|
- %[ - designates beginning of an optional block
|
||
|
|
||
|
- %] - designates end of an optional block
|
||
|
|
||
|
- %*, %0* - resets highlighting
|
||
|
|
||
|
- %1-%9 - applies one of User1..User9 highlight groups
|
||
|
|
||
|
In global tabs the view in bullets above refers to currently ac-
|
||
|
tive view of that tab.
|
||
|
|
||
|
Flag macros are a special kind of macros that always expand to
|
||
|
an empty value and are ment to be used inside optional blocks to
|
||
|
control their visibility.
|
||
|
|
||
|
Optional blocks are ignored unless at least one macro inside of
|
||
|
them is expanded to a non-empty value or is a set flag macro.
|
||
|
|
||
|
" %[(%n)%] -- optional name of the tab
|
||
|
" %[ -- optional description of the view
|
||
|
" %[%T{tree}%] -- mark of tree mode
|
||
|
" %[{%c}%] -- description of custom view
|
||
|
" @ -- just an extra separator before the path
|
||
|
' %]
|
||
|
" %p:t -- tail part of view's location
|
||
|
set tablabel=%[(%n)%]%[%[%T{tree}%]%[{%c}%]@%]%p:t
|
||
|
|
||
|
'tabprefix'
|
||
|
type: string
|
||
|
default: "[%N:"
|
||
|
Determines prefix of a tab's label. Formatting is done as for
|
||
|
'tablabel' option.
|
||
|
|
||
|
'tabscope'
|
||
|
type: enumeration
|
||
|
default: global
|
||
|
Picks style of tabs, which defines what a single tab contains.
|
||
|
Possible values:
|
||
|
- global - tab describes complete UI of two views and how they
|
||
|
are arranged
|
||
|
- pane - tab is located "inside" a pane and manages it and
|
||
|
quick view
|
||
|
|
||
|
'tabstop' 'ts'
|
||
|
type: integer
|
||
|
default: value from curses library
|
||
|
Number of spaces that a Tab in the file counts for.
|
||
|
|
||
|
'tabsuffix'
|
||
|
type: string
|
||
|
default: "]"
|
||
|
Determines suffix of a tab's label. Formatting is done as for
|
||
|
'tablabel' option.
|
||
|
|
||
|
'timefmt'
|
||
|
type: string
|
||
|
default: "%m/%d %H:%M"
|
||
|
Format of time in file list. See "man 1 date" or "man 3 strf-
|
||
|
time" for details.
|
||
|
|
||
|
'timeoutlen' 'tm'
|
||
|
type: integer
|
||
|
default: 1000
|
||
|
The time in milliseconds that is waited for a mapped key in case
|
||
|
of already typed key sequence is ambiguous.
|
||
|
|
||
|
'title'
|
||
|
type: boolean
|
||
|
default: true when title can be restored, false otherwise
|
||
|
When enabled, title of the terminal or terminal multiplexer's
|
||
|
window is updated according to current location. Because not
|
||
|
all terminals support setting title, this works only if `$TERM`
|
||
|
value matches one of the following conditions:
|
||
|
- equals "xterm" or starts with "xterm-"
|
||
|
- equals "rxvt" or starts with "rxvt-"
|
||
|
- equals "screen" or starts with "screen-"
|
||
|
- equals "aterm"
|
||
|
- equals "Eterm"
|
||
|
|
||
|
'trash'
|
||
|
type: boolean
|
||
|
default: true
|
||
|
Use trash directory. See "Trash directory" section below.
|
||
|
|
||
|
'trashdir'
|
||
|
type: string
|
||
|
default: on *nix:
|
||
|
"%r/.vifm-Trash-%u,$VIFM/Trash,%r/.vifm-Trash"
|
||
|
or if $VIFM/Trash doesn't exist
|
||
|
"%r/.vifm-Trash-%u,$XDG_DATA_HOME/vifm/Trash,%r/.vifm-Trash"
|
||
|
on Windows:
|
||
|
"%r/.vifm-Trash,$XDG_DATA_HOME/vifm/Trash"
|
||
|
List of trash directory path specifications, separated with com-
|
||
|
mas. Each list item either defines an absolute path to trash
|
||
|
directory or a path relative to a mount point root when list el-
|
||
|
ement starts with "%r/". Value of the option can contain envi-
|
||
|
ronment variables (of form "$envname"), which will be expanded
|
||
|
(prepend $ with a slash to prevent expansion). Environment
|
||
|
variables are expanded when the option is set.
|
||
|
|
||
|
On *nix, if element ends with "%u", the mark is replaced with
|
||
|
real user ID and permissions are set so that only that only
|
||
|
owner is able to use it.
|
||
|
Note that even this setup is not completely secure when combined
|
||
|
with "%r/" and it's overall safer to keep files in home direc-
|
||
|
tory, but that implies cost of copying files between partitions.
|
||
|
|
||
|
When new file gets cut (deleted) vifm traverses each element of
|
||
|
the option in the order of their appearance and uses first trash
|
||
|
directory that it was able to create or that is already
|
||
|
writable.
|
||
|
|
||
|
Default value tries to use trash directory per mount point and
|
||
|
falls back to ~/.vifm/Trash on failure.
|
||
|
|
||
|
Will attempt to create the directory if it does not exist. See
|
||
|
"Trash directory" section below.
|
||
|
|
||
|
'tuioptions' 'to'
|
||
|
type: charset
|
||
|
default: "psv"
|
||
|
Each flag configures some aspect of TUI appearance. The flags
|
||
|
are:
|
||
|
p - when included:
|
||
|
* file list inside a pane gets additional single character
|
||
|
padding on left and right sides;
|
||
|
* quick view and view mode get single character padding.
|
||
|
s - when included, left and right borders (side borders, hence
|
||
|
"s" character) are visible.
|
||
|
u - use Unicode characters in the TUI (Unicode ellipsis instead
|
||
|
of "...").
|
||
|
v - vary width of middle border to equalize view sizes.
|
||
|
|
||
|
Each pane title contains the path of the listed directory. If
|
||
|
too large, the path is truncated on the left for the active pane
|
||
|
and on the right for the other pane. This can be modified with:
|
||
|
|
||
|
l - truncation is always on the left.
|
||
|
r - truncation is always on the right.
|
||
|
|
||
|
'undolevels' 'ul'
|
||
|
type: integer
|
||
|
default: 100
|
||
|
Maximum number of changes that can be undone. Note that here
|
||
|
single file operation is used as a unit, not operation, i.e.
|
||
|
deletion of 101 files will exceed default limit.
|
||
|
|
||
|
'vicmd'
|
||
|
type: string
|
||
|
default: "vim"
|
||
|
Command used to edit files in various contexts. Ampersand sign
|
||
|
at the end (regardless whether it's preceded by space or not)
|
||
|
means backgrounding of command.
|
||
|
|
||
|
Background flag is ignored in certain context where vifm waits
|
||
|
for the editor to finish. Such contexts include any command
|
||
|
that spawns editor to change list of file names or a command,
|
||
|
with :rename being one example. `-f` is also appended to pre-
|
||
|
vent forking in such cases, so the command needs to handle the
|
||
|
flag.
|
||
|
|
||
|
Additionally `+{num}` and `+'call cursor()'` arguments are used
|
||
|
to position cursor when location is known.
|
||
|
|
||
|
'viewcolumns'
|
||
|
type: string
|
||
|
default: ""
|
||
|
scope: local
|
||
|
Format string containing list of columns in the view. When this
|
||
|
option is empty, view columns to show are chosen automatically
|
||
|
using sorting keys (see 'sort') as a base. Value of this option
|
||
|
is ignored if 'lsview' is set. See "Column view" section below
|
||
|
for format description.
|
||
|
|
||
|
An example of setting the options for both panes (note :windo
|
||
|
command):
|
||
|
|
||
|
windo set viewcolumns=-{name}..,6{size},11{perms}
|
||
|
|
||
|
'vixcmd'
|
||
|
type: string
|
||
|
default: value of 'vicmd'
|
||
|
Same as 'vicmd', but takes precedence over it when running in-
|
||
|
side a graphical environment.
|
||
|
|
||
|
'vifminfo'
|
||
|
type: set
|
||
|
default: bookmarks,bmarks
|
||
|
Controls what will be saved in the $VIFM/vifminfo file.
|
||
|
|
||
|
bmarks - named bookmarks (see :bmark command)
|
||
|
bookmarks - marks, except special ones like '< and '>
|
||
|
tui - state of the user interface (sorting, number of
|
||
|
windows, quick
|
||
|
view state, active view)
|
||
|
dhistory - directory history
|
||
|
state - file name and dot filters and terminal multiplex-
|
||
|
ers integration
|
||
|
state
|
||
|
cs - primary color scheme
|
||
|
savedirs - save last visited directory
|
||
|
chistory - command line history
|
||
|
shistory - search history (/ and ? commands)
|
||
|
phistory - prompt history
|
||
|
fhistory - history of local filter (see description of the
|
||
|
"=" normal mode
|
||
|
command)
|
||
|
dirstack - directory stack overwrites previous stack, unless
|
||
|
stack of
|
||
|
current instance is empty
|
||
|
registers - registers content
|
||
|
tabs - global or pane tabs
|
||
|
options - all options that can be set with the :set command
|
||
|
(obsolete)
|
||
|
filetypes - associated programs and viewers (obsolete)
|
||
|
commands - user defined commands (see :command description)
|
||
|
(obsolete)
|
||
|
|
||
|
'vimhelp'
|
||
|
type: boolean
|
||
|
default: false
|
||
|
Use vim help format.
|
||
|
|
||
|
'wildmenu' 'wmnu'
|
||
|
type: boolean
|
||
|
default: false
|
||
|
Controls whether possible matches of completion will be shown
|
||
|
above the command line.
|
||
|
|
||
|
'wildstyle'
|
||
|
type: enumeration
|
||
|
default: bar
|
||
|
Picks presentation style of wild menu. Possible values:
|
||
|
- bar - one-line with left-to-right cursor
|
||
|
- popup - multi-line with top-to-bottom cursor
|
||
|
|
||
|
'wordchars'
|
||
|
type: string list
|
||
|
default: "1-8,14-31,33-255" (that is all non-whitespace charac-
|
||
|
ters)
|
||
|
Specifies which characters in command-line mode should be con-
|
||
|
sidered as part of a word. Value of the option is comma-sepa-
|
||
|
rated list of ranges. If both endpoints of a range match, sin-
|
||
|
gle endpoint is enough (e.g. "a" = "a-a"). Both endpoints are
|
||
|
inclusive. There are two accepted forms: character representing
|
||
|
itself or number encoding character according to ASCII table.
|
||
|
In case of ambiguous characters (dash, comma, digit) use numeric
|
||
|
form. Accepted characters are in the range from 0 to 255. Any
|
||
|
Unicode character with code greater than 255 is considered to be
|
||
|
part of a word.
|
||
|
|
||
|
The option affects Alt-D, Alt-B and Alt-F, but not Ctrl-W. This
|
||
|
is intentionally to allow two use cases:
|
||
|
|
||
|
- Moving by WORDS and deletion by words.
|
||
|
- Moving by words and deletion by WORDS.
|
||
|
|
||
|
To get the latter use the following mapping:
|
||
|
|
||
|
cnoremap <c-w> <a-b><a-d>
|
||
|
|
||
|
Also used for abbreviations.
|
||
|
|
||
|
'wrap' type: boolean
|
||
|
default: true
|
||
|
Controls whether to wrap text in quick view.
|
||
|
|
||
|
'wrapscan' 'ws'
|
||
|
type: boolean
|
||
|
default: true
|
||
|
Searches wrap around end of the list.
|
||
|
|
||
|
Mappings
|
||
|
Map arguments
|
||
|
|
||
|
LHS of mappings can be preceded by arguments which take the form of
|
||
|
special sequences:
|
||
|
|
||
|
<silent>
|
||
|
Postpone UI updates until RHS is completely processed.
|
||
|
|
||
|
<wait> In case of builtin mapping causing conflict for a user-defined
|
||
|
mapping (e.g., `t` builtin to a partially typed `ta` user-de-
|
||
|
fined mapping), ignore the builtin mapping and wait for input
|
||
|
indefinitely as opposed to default behaviour of triggering the
|
||
|
builtin mapping after a delay defined by 'timeoutlen'. Example:
|
||
|
|
||
|
nnoremap <wait> tw :set wrap!<cr>
|
||
|
nnoremap <wait> tn :set number!<cr>
|
||
|
nnoremap <wait> tr :set relativenumber!<cr>
|
||
|
|
||
|
Special sequences
|
||
|
|
||
|
Since it's not easy to enter special characters there are several spe-
|
||
|
cial sequences that can be used in place of them. They are:
|
||
|
|
||
|
<cr> Enter key.
|
||
|
|
||
|
<esc> Escape key.
|
||
|
|
||
|
<space>
|
||
|
Space key.
|
||
|
|
||
|
<lt> Less-than character (<).
|
||
|
|
||
|
<nop> provides a way to disable a mapping (by mapping it to <nop>).
|
||
|
|
||
|
<bs> Backspace key (see key conflict description below).
|
||
|
|
||
|
<tab> <s-tab>
|
||
|
Tabulation and Shift+Tabulation keys.
|
||
|
|
||
|
<home> <end>
|
||
|
Home/End.
|
||
|
|
||
|
<left> <right> <up> <down>
|
||
|
Arrow keys.
|
||
|
|
||
|
<pageup> <pagedown>
|
||
|
PageUp/PageDown.
|
||
|
|
||
|
<del> <delete>
|
||
|
Delete key. <del> and <delete> mean different codes, but
|
||
|
<delete> is more common.
|
||
|
|
||
|
<insert>
|
||
|
Insert key.
|
||
|
|
||
|
<c-a>,<c-b>,...,<c-z>,<c-[>,<c->,<c-]>,<c-^>,<c-_>
|
||
|
Control + some key (see key conflict description below).
|
||
|
|
||
|
<c-@> only for *nix
|
||
|
Control + Space.
|
||
|
|
||
|
<a-a>,<a-b>,...,<a-z>
|
||
|
<m-a>,<m-b>,...,<m-z> Alt + some key.
|
||
|
|
||
|
<a-c-a>,<a-c-b>,...,<a-c-z>
|
||
|
<m-c-a>,<m-c-b>,...,<m-c-z> only for *nix
|
||
|
Alt + Ctrl + some key.
|
||
|
|
||
|
<f0> - <f63>
|
||
|
Functional keys.
|
||
|
|
||
|
<c-f1> - <c-f12>
|
||
|
only for MS-Windows
|
||
|
functional keys with Control key pressed.
|
||
|
|
||
|
<a-f1> - <a-f12>
|
||
|
only for MS-Windows
|
||
|
functional keys with Alt key pressed.
|
||
|
|
||
|
<s-f1> - <s-f12>
|
||
|
only for MS-Windows
|
||
|
functional keys with Shift key pressed.
|
||
|
|
||
|
Note that due to the way terminals process their input, several key-
|
||
|
board keys might be mapped to single key code, for example:
|
||
|
|
||
|
- <cr> and <c-m>;
|
||
|
|
||
|
- <tab> and <c-i>;
|
||
|
|
||
|
- <c-h> and <bs>;
|
||
|
|
||
|
- etc.
|
||
|
|
||
|
Most of the time they are defined consistently and don't cause sur-
|
||
|
prises, but <c-h> and <bs> are treated differently in different envi-
|
||
|
ronments (although they match each other all the time), that's why they
|
||
|
correspond to different keys in vifm. As a consequence, if you map <c-
|
||
|
h> or <bs> be sure to repeat the mapping with the other one so that it
|
||
|
works in all environments. Alternatively, provide your mapping in one
|
||
|
form and add one of the following:
|
||
|
|
||
|
" if mappings with <c-h> in the LHS work
|
||
|
map <c-h> <bs>
|
||
|
" if mappings with <bs> in the LHS work
|
||
|
map <bs> <c-h>
|
||
|
|
||
|
Whitespace
|
||
|
|
||
|
vifm removes whitespace characters at the beginning and end of com-
|
||
|
mands. That's why you may want to use <space> at the end of rhs in
|
||
|
mappings. For example:
|
||
|
|
||
|
cmap <f1> man<space>
|
||
|
|
||
|
will put "man " in line when you hit the <f1> key in the command line
|
||
|
mode.
|
||
|
|
||
|
Expression syntax
|
||
|
Supported expressions is a subset of what VimL provides.
|
||
|
|
||
|
Expression syntax summary, from least to most significant:
|
||
|
|
||
|
expr1 expr2
|
||
|
expr2 || expr2 .. logical OR
|
||
|
|
||
|
expr2 expr3
|
||
|
expr3 && expr3 .. logical AND
|
||
|
|
||
|
expr3 expr4
|
||
|
expr4 == expr4 equal
|
||
|
expr4 != expr4 not equal
|
||
|
expr4 > expr4 greater than
|
||
|
expr4 >= expr4 greater than or equal
|
||
|
expr4 < expr4 smaller than
|
||
|
expr4 <= expr4 smaller than or equal
|
||
|
|
||
|
expr4 expr5
|
||
|
expr5 + expr5 .. number addition
|
||
|
expr5 - expr5 .. number subtraction
|
||
|
|
||
|
expr5 expr6
|
||
|
expr6 . expr6 .. string concatenation
|
||
|
|
||
|
expr6 expr7
|
||
|
- expr6 unary minus
|
||
|
+ expr6 unary plus
|
||
|
! expr6 logical NOT
|
||
|
|
||
|
expr7 number number constant
|
||
|
"string" string constant, \ is special
|
||
|
'string' string constant, ' is doubled
|
||
|
&option option value
|
||
|
$VAR environment variable
|
||
|
v:var builtin variable
|
||
|
function(expr1, ...) function call
|
||
|
(expr1) nested expression
|
||
|
|
||
|
".." indicates that the operations in this level can be concatenated.
|
||
|
|
||
|
expr1
|
||
|
-----
|
||
|
expr2 || expr2
|
||
|
|
||
|
Arguments are converted to numbers before evaluation.
|
||
|
|
||
|
Result is non-zero if at least one of arguments is non-zero.
|
||
|
|
||
|
It's right associative and with short-circuiting, so sub-expressions
|
||
|
are evaluated from left to right until result of whole expression is
|
||
|
determined (i.e., until first non-zero) or end of the expression.
|
||
|
|
||
|
expr2
|
||
|
-----
|
||
|
expr3 && expr3
|
||
|
|
||
|
Arguments are converted to numbers before evaluation.
|
||
|
|
||
|
Result is non-zero only if both arguments are non-zero.
|
||
|
|
||
|
It's right associative and with short-circuiting, so sub-expressions
|
||
|
are evaluated from left to right until result of whole expression is
|
||
|
determined (i.e., until first zero) or end of the expression.
|
||
|
|
||
|
expr3
|
||
|
-----
|
||
|
expr4 {cmp} expr4
|
||
|
|
||
|
Compare two expr4 expressions, resulting in a 0 if it evaluates to
|
||
|
false or 1 if it evaluates to true.
|
||
|
|
||
|
equal ==
|
||
|
not equal !=
|
||
|
greater than >
|
||
|
greater than or equal >=
|
||
|
smaller than <
|
||
|
smaller than or equal <=
|
||
|
|
||
|
Examples:
|
||
|
|
||
|
'a' == 'a' == 1
|
||
|
'a' > 'b' == 1
|
||
|
'a' == 'b' == 0
|
||
|
'2' > 'b' == 0
|
||
|
2 > 'b' == 1
|
||
|
2 > '1b' == 1
|
||
|
2 > '9b' == 0
|
||
|
-1 == -'1' == 1
|
||
|
0 == '--1' == 1
|
||
|
|
||
|
expr4
|
||
|
-----
|
||
|
expr5 + expr5 .. number addition expr5 - expr5 .. number sub-
|
||
|
traction
|
||
|
|
||
|
Examples:
|
||
|
|
||
|
1 + 3 - 3 == 1
|
||
|
1 + '2' == 3
|
||
|
|
||
|
expr5
|
||
|
-----
|
||
|
expr6 . expr6 .. string concatenation
|
||
|
|
||
|
Examples:
|
||
|
|
||
|
'a' . 'b' == 'ab'
|
||
|
'aaa' . '' . 'c' == 'aaac'
|
||
|
|
||
|
expr6
|
||
|
-----
|
||
|
|
||
|
- expr6 unary minus
|
||
|
+ expr6 unary plus
|
||
|
! expr6 logical NOT
|
||
|
|
||
|
For '-' the sign of the number is changed.
|
||
|
For '+' the number is unchanged.
|
||
|
For '!' non-zero becomes zero, zero becomes one.
|
||
|
|
||
|
A String will be converted to a Number first.
|
||
|
|
||
|
These operations can be repeated and mixed. Examples:
|
||
|
|
||
|
--9 == 9
|
||
|
---9 == -9
|
||
|
-+9 == 9
|
||
|
!-9 == 0
|
||
|
!'' == 1
|
||
|
!'x' == 0
|
||
|
!!9 == 1
|
||
|
|
||
|
expr7
|
||
|
-----
|
||
|
|
||
|
number number constant
|
||
|
-----
|
||
|
|
||
|
Decimal number. Examples:
|
||
|
|
||
|
0 == 0
|
||
|
0000 == 0
|
||
|
01 == 1
|
||
|
123 == 123
|
||
|
10000 == 10000
|
||
|
|
||
|
string
|
||
|
------
|
||
|
"string" string constant
|
||
|
|
||
|
Note that double quotes are used.
|
||
|
|
||
|
A string constant accepts these special characters:
|
||
|
\b backspace <bs>
|
||
|
\e escape <esc>
|
||
|
\n newline
|
||
|
\r return <cr>
|
||
|
\t tab <tab>
|
||
|
\\ backslash
|
||
|
\" double quote
|
||
|
|
||
|
Examples:
|
||
|
|
||
|
"\"Hello,\tWorld!\""
|
||
|
"Hi,\nthere!"
|
||
|
|
||
|
literal-string
|
||
|
--------------
|
||
|
'string' string constant
|
||
|
|
||
|
Note that single quotes are used.
|
||
|
|
||
|
This string is taken as it is. No backslashes are removed or have a
|
||
|
special meaning. The only exception is that two quotes stand for one
|
||
|
quote.
|
||
|
|
||
|
Examples:
|
||
|
|
||
|
'All\slashes\are\saved.'
|
||
|
'This string contains doubled single quotes ''here'''
|
||
|
|
||
|
option
|
||
|
------
|
||
|
&option option value (local one is preferred, if exists)
|
||
|
&g:option global option value &l:option local
|
||
|
option value
|
||
|
|
||
|
Examples:
|
||
|
|
||
|
echo 'Terminal size: '.&columns.'x'.&lines
|
||
|
if &columns > 100
|
||
|
|
||
|
Any valid option name can be used here (note that "all" in ":set all"
|
||
|
is a pseudo option). See ":set options" section above.
|
||
|
|
||
|
environment variable
|
||
|
--------------------
|
||
|
$VAR environment variable
|
||
|
|
||
|
The String value of any environment variable. When it is not defined,
|
||
|
the result is an empty string.
|
||
|
|
||
|
Examples:
|
||
|
|
||
|
'This is my $PATH env: ' . $PATH
|
||
|
'vifmrc at ' . $MYVIFMRC . ' is used.'
|
||
|
|
||
|
builtin variable
|
||
|
--------------------
|
||
|
v:var builtin variable
|
||
|
|
||
|
Information exposed by vifm for use in scripting.
|
||
|
|
||
|
v:count
|
||
|
count passed to : command, 0 by default. Can be used in mappings to
|
||
|
passthe count to a different command.
|
||
|
v:count1
|
||
|
same as v:count, but 1 by default.
|
||
|
v:jobcount
|
||
|
number of active jobs (as can be seen in the :jobs menu).
|
||
|
v:session
|
||
|
name of the current session or empty string.
|
||
|
v:servername
|
||
|
See below.
|
||
|
|
||
|
function call
|
||
|
-------------
|
||
|
function(expr1, ...) function call
|
||
|
|
||
|
See "Functions" section below.
|
||
|
|
||
|
Examples:
|
||
|
|
||
|
"'" . filetype('.') . "'"
|
||
|
filetype('.') == 'reg'
|
||
|
|
||
|
expression nesting
|
||
|
------------------
|
||
|
(expr1) nested expression
|
||
|
|
||
|
Groups any other expression of arbitrary complexity enforcing order in
|
||
|
which operators are applied.
|
||
|
|
||
|
|
||
|
Functions
|
||
|
USAGE RESULT DESCRIPTION
|
||
|
|
||
|
chooseopt({opt}) String Queries choose parameters passed on
|
||
|
startup.
|
||
|
executable({expr}) Integer Checks whether {expr} command avail-
|
||
|
able.
|
||
|
expand({expr}) String Expands special keywords in {expr}.
|
||
|
extcached({cache}, {path}, {extcmd})
|
||
|
String Caches output of {extcmd} per {cache}
|
||
|
and
|
||
|
{path} combination.
|
||
|
filetype({fnum} [, {resolve}])
|
||
|
String Returns file type from position.
|
||
|
fnameescape({expr}) String Escapes {expr} for use in a :command.
|
||
|
getpanetype() String Returns type of current pane.
|
||
|
has({property}) Integer Checks whether instance has {prop-
|
||
|
erty}.
|
||
|
layoutis({type}) Integer Checks whether layout is of type
|
||
|
{type}.
|
||
|
paneisat({loc}) Integer Checks whether current pane is at
|
||
|
{loc}.
|
||
|
system({command}) String Executes shell command and returns
|
||
|
its output.
|
||
|
tabpagenr([{arg}]) Integer Returns number of current or last
|
||
|
tab.
|
||
|
term({command}) String Like system(), but for interactive
|
||
|
commands.
|
||
|
|
||
|
chooseopt({opt})
|
||
|
|
||
|
Retrieves values of options related to file choosing. {opt} can be one
|
||
|
of:
|
||
|
files returns argument of --choose-files or empty string
|
||
|
dir returns argument of --choose-dir or empty string
|
||
|
cmd returns argument of --on-choose or empty string
|
||
|
delimiter returns argument of --delimiter or the default one (\n)
|
||
|
|
||
|
executable({expr})
|
||
|
|
||
|
If {expr} is absolute or relative path, checks whether path destination
|
||
|
exists and refers to an executable, otherwise checks whether command
|
||
|
named {expr} is present in directories listed in $PATH. Checks for
|
||
|
various executable extensions on Windows. Returns boolean value de-
|
||
|
scribing result of the check.
|
||
|
|
||
|
Example:
|
||
|
|
||
|
" use custom default viewer script if it's available and installed
|
||
|
" in predefined system directory, otherwise try to find it elsewhere
|
||
|
if executable('/usr/local/bin/defviewer')
|
||
|
fileview * /usr/local/bin/defviewer %c
|
||
|
else
|
||
|
if executable('defviewer')
|
||
|
fileview * defviewer %c
|
||
|
endif
|
||
|
endif
|
||
|
|
||
|
expand({expr})
|
||
|
|
||
|
Expands environment variables and macros in {expr} just like it's done
|
||
|
for command-line commands. Returns a string. See "Command macros"
|
||
|
section above.
|
||
|
|
||
|
Examples:
|
||
|
|
||
|
" percent sign
|
||
|
:echo expand('%%')
|
||
|
" the last part of directory name of the other pane
|
||
|
:echo expand('%D:t')
|
||
|
" $PATH environment variable (same as `:echo $PATH`)
|
||
|
:echo expand('$PATH')
|
||
|
|
||
|
extcached({cache}, {path}, {extcmd})
|
||
|
|
||
|
Caches value of {extcmd} external command automatically updating it as
|
||
|
necessary based on monitoring change date of a {path}. The cache is
|
||
|
invalidated when file or its meta-data is updated. A single path can
|
||
|
have multiple caches associated with it.
|
||
|
|
||
|
{path} value is normalized, but symbolic links in it aren't resolved.
|
||
|
|
||
|
Example:
|
||
|
|
||
|
" display number and size of blocks actually used by a file or directory
|
||
|
set statusline+=" Uses: %{ extcached('uses',
|
||
|
expand('%c'),
|
||
|
expand('stat --format=%%bx%%B %c')) }"
|
||
|
|
||
|
filetype({fnum} [, {resolve}])
|
||
|
|
||
|
The result is a string, which represents file type and is one of the
|
||
|
list:
|
||
|
exe executables
|
||
|
reg regular files
|
||
|
link symbolic links
|
||
|
broken broken symbolic links (appears only when resolving)
|
||
|
dir directories
|
||
|
char character devices
|
||
|
block block devices
|
||
|
fifo pipes
|
||
|
sock *nix domain sockets
|
||
|
? unknown file type (should not normally happen) or
|
||
|
non-file (pseudo-entries in compare view)
|
||
|
|
||
|
The result can also be an empty string in case of invalid argument.
|
||
|
|
||
|
Parameter {fnum} can have following values:
|
||
|
- '.' to get type of file under the cursor in the active pane
|
||
|
- numerical value base 1 to get type of file on specified line num-
|
||
|
ber
|
||
|
|
||
|
Optional parameter {resolve} is treated as a boolean and specifies
|
||
|
whether symbolic links should be resolved.
|
||
|
|
||
|
fnameescape({expr})
|
||
|
|
||
|
Escapes parameter to make it suitable for use as an argument of a :com-
|
||
|
mand. List of escaped characters includes %, which is doubled.
|
||
|
|
||
|
Usage example:
|
||
|
|
||
|
" navigate to most recently modified file in current directory
|
||
|
execute 'goto' fnameescape(system('ls -t | head -1'))
|
||
|
|
||
|
getpanetype()
|
||
|
|
||
|
Retrieves string describing type of current pane. Possible return val-
|
||
|
ues:
|
||
|
regular regular file listing of some directory
|
||
|
custom custom file list (%u)
|
||
|
very-custom very custom file list (%U)
|
||
|
tree tree view
|
||
|
|
||
|
has({property})
|
||
|
|
||
|
Allows examining internal parameters from scripts to e.g. figure out
|
||
|
environment in which application is running. Returns 1 if property is
|
||
|
true/present, otherwise 0 is returned. Currently the following proper-
|
||
|
ties are supported (anything else will yield 0):
|
||
|
unix runs in *nix-like environment (including Cygwin)
|
||
|
win runs on Windows
|
||
|
|
||
|
Usage example:
|
||
|
|
||
|
" skip user/group on Windows
|
||
|
if !has('win')
|
||
|
let $RIGHTS = '%10u:%-7g '
|
||
|
endif
|
||
|
|
||
|
execute 'set' 'statusline=" %t%= %A '.$RIGHTS.'%15E %20d "'
|
||
|
|
||
|
layoutis({type})
|
||
|
|
||
|
Checks whether current interface layout is {type} or not, where {type}
|
||
|
can be:
|
||
|
only single-pane mode
|
||
|
split double-pane mode (either vertical or horizontal split)
|
||
|
vsplit vertical split (left and right panes)
|
||
|
hsplit horizontal split (top and bottom panes)
|
||
|
|
||
|
Usage example:
|
||
|
|
||
|
" automatically split vertically before enabling preview
|
||
|
:nnoremap w :if layoutis('only') | vsplit | endif | view!<cr>
|
||
|
|
||
|
paneisat({loc})
|
||
|
|
||
|
Checks whether position of active pane in current layout matches one of
|
||
|
the following locations:
|
||
|
top pane reaches top border
|
||
|
bottom pane reaches bottom border
|
||
|
left pane reaches left border
|
||
|
right pane reaches right border
|
||
|
|
||
|
system({command})
|
||
|
|
||
|
Runs the command in shell and returns its output (joined standard out-
|
||
|
put and standard error streams). All trailing newline characters are
|
||
|
stripped to allow easy appending to command output. Ctrl-C should in-
|
||
|
terrupt the command.
|
||
|
|
||
|
Use this function to consume output of external commands that don't re-
|
||
|
quire user interaction and term() for interactive commands that make
|
||
|
use of terminal and are capable of handling stream redirection.
|
||
|
|
||
|
Usage example:
|
||
|
|
||
|
" command to enter .git/ directory of git-repository (when ran inside one)
|
||
|
command! cdgit :execute 'cd' fnameescape(system('git rev-parse --git-dir'))
|
||
|
|
||
|
tabpagenr([{arg}])
|
||
|
|
||
|
When called without arguments returns number of current tab page base
|
||
|
one.
|
||
|
|
||
|
When called with "$" as an argument returns number of the last tab page
|
||
|
base one, which is the same as number of tabs.
|
||
|
|
||
|
term({command})
|
||
|
|
||
|
Same as system() function, but user interface is shutdown during the
|
||
|
execution of the command, which makes sure that external interactive
|
||
|
applications won't affect the way terminal is used by vifm.
|
||
|
|
||
|
Usage example:
|
||
|
|
||
|
" command to change directory by picking it via fzf
|
||
|
command! fzfcd :execute 'cd'
|
||
|
fnameescape(term('find -type d | fzf 2> /dev/tty'))
|
||
|
|
||
|
Menus and dialogs
|
||
|
When navigating to some path from a menu there is a difference in end
|
||
|
location depending on whether path has trailing slash or not. Files
|
||
|
normally don't have trailing slashes so "file/" won't work and one can
|
||
|
only navigate to a file anyway. On the other hand with directories
|
||
|
there are two options: navigate to a directory or inside of it. To al-
|
||
|
low both use cases, the first one is used on paths like "dir" and the
|
||
|
second one for "dir/".
|
||
|
|
||
|
Commands
|
||
|
|
||
|
:range navigate to a menu line.
|
||
|
|
||
|
:exi[t][!] :q[uit][!] :x[it][!]
|
||
|
leave menu mode.
|
||
|
|
||
|
:noh[lsearch]
|
||
|
reset search match highlighting.
|
||
|
|
||
|
:w[rite] {dest}
|
||
|
write all menu lines into file specified by {dest}.
|
||
|
|
||
|
General
|
||
|
|
||
|
j, Ctrl-N - move down.
|
||
|
k, Ctrl-P - move up.
|
||
|
Enter, l - select and exit the menu.
|
||
|
Ctrl-L - redraw the menu.
|
||
|
|
||
|
Escape, Ctrl-C, ZZ, ZQ, q - quit.
|
||
|
|
||
|
In all menus
|
||
|
|
||
|
The following set of keys has the same meaning as in normal mode.
|
||
|
|
||
|
Ctrl-B, Ctrl-F
|
||
|
Ctrl-D, Ctrl-U
|
||
|
Ctrl-E, Ctrl-Y
|
||
|
/, ?
|
||
|
n, N
|
||
|
[count]G, [count]gg
|
||
|
H, M, L
|
||
|
zb, zt, zz
|
||
|
|
||
|
zh - scroll menu items [count] characters to the right.
|
||
|
zl - scroll menu items [count] characters to the left.
|
||
|
zH - scroll menu items half of screen width characters to the right.
|
||
|
zL - scroll menu items half of screen width characters to the left.
|
||
|
|
||
|
: - enter command line mode for menus (currently only :exi[t], :q[uit],
|
||
|
:x[it] and :{range} are supported).
|
||
|
|
||
|
b - interpret content of the menu as list of paths and use it to create
|
||
|
custom view in place of previously active pane. See "Custom views"
|
||
|
section below.
|
||
|
B - same as above, but creates unsorted view.
|
||
|
|
||
|
v - load menu content into quickfix list of the editor (Vim compatible
|
||
|
by assumption) or if list doesn't have separators after file names
|
||
|
(colons) open each line as a file name.
|
||
|
|
||
|
|
||
|
Below is description of additional commands and reaction on selection
|
||
|
in some menus and dialogs.
|
||
|
|
||
|
Apropos menu
|
||
|
|
||
|
Selecting menu item runs man on a given topic. Menu won't be closed
|
||
|
automatically to allow view several pages one by one.
|
||
|
|
||
|
Command-line mode abbreviations menu
|
||
|
|
||
|
Type dd on an abbreviation to remove it.
|
||
|
|
||
|
c leaves menu preserving file selection and inserts right-hand side of
|
||
|
selected command into command-line.
|
||
|
|
||
|
Color scheme menu
|
||
|
|
||
|
Selecting name of a color scheme applies it the same way as if ":col-
|
||
|
orscheme <name>" was executed on the command-line.
|
||
|
|
||
|
Commands menu
|
||
|
|
||
|
Selecting command executes it with empty arguments (%a).
|
||
|
|
||
|
dd on a command to remove.
|
||
|
|
||
|
Marks menu
|
||
|
|
||
|
Selecting mark navigates to it.
|
||
|
|
||
|
dd on a mark to remove it.
|
||
|
|
||
|
Bookmarks menu
|
||
|
|
||
|
Selecting a bookmark navigates to it.
|
||
|
|
||
|
Type dd on a bookmark to remove it.
|
||
|
|
||
|
gf and e also work to make it more convenient to bookmark files.
|
||
|
|
||
|
Trash (:lstrash) menu
|
||
|
|
||
|
r on a file name to restore it from trash.
|
||
|
|
||
|
dd deletes file under the cursor.
|
||
|
|
||
|
Trashes (:trashes) menu
|
||
|
|
||
|
dd empties selected trash in background.
|
||
|
|
||
|
Directory history and Trashes menus
|
||
|
|
||
|
Selecting directory name will change directory of the current view as
|
||
|
if :cd command was used.
|
||
|
|
||
|
Directory stack menu
|
||
|
|
||
|
Selecting directory name will rotate stack to put selected directory
|
||
|
pair at the top of the stack.
|
||
|
|
||
|
File (:file) menu
|
||
|
|
||
|
Commands from vifmrc or typed in command-line are displayed above empty
|
||
|
line. All commands below empty line are from .desktop files.
|
||
|
|
||
|
c leaves menu preserving file selection and inserts command after :! in
|
||
|
command-line mode.
|
||
|
|
||
|
Grep, find, locate, bookmarks and user menu with navigation (%M macro)
|
||
|
|
||
|
gf - navigate previously active view to currently selected item.
|
||
|
Leaves menu mode except for grep menu. Pressing Enter key has the same
|
||
|
effect.
|
||
|
|
||
|
e - open selected path in the editor, stays in menu mode.
|
||
|
|
||
|
c - leave menu preserving file selection and insert file name after :!
|
||
|
in command-line mode.
|
||
|
|
||
|
User menu without navigation (%m macro)
|
||
|
|
||
|
c leaves menu preserving file selection and inserts whole line after :!
|
||
|
in command-line mode.
|
||
|
|
||
|
Grep menu
|
||
|
|
||
|
Selecting file (via Enter or l key) opens it in editor set by 'vicmd'
|
||
|
at given line number. Menu won't be closed automatically to allow
|
||
|
viewing more than one result.
|
||
|
|
||
|
See above for "gf" and "e" keys description.
|
||
|
|
||
|
Command-line history menu
|
||
|
|
||
|
Selecting an item executes it as command-line command, search query or
|
||
|
local filter.
|
||
|
|
||
|
c leaves menu preserving file selection and inserts line into command-
|
||
|
line of appropriate kind.
|
||
|
|
||
|
Volumes menu
|
||
|
|
||
|
Selecting a drive navigates previously active pane to the root of that
|
||
|
drive.
|
||
|
|
||
|
Fileinfo dialog
|
||
|
|
||
|
Enter, q - close dialog
|
||
|
|
||
|
Sort dialog
|
||
|
|
||
|
h, Space - switch ascending/descending.
|
||
|
q - close dialog
|
||
|
|
||
|
One shortcut per sorting key (see the dialog).
|
||
|
|
||
|
Attributes (permissions or properties) dialog
|
||
|
|
||
|
h, Space - check/uncheck.
|
||
|
q - close dialog
|
||
|
r - (*nix only) (un)set all read bits
|
||
|
w - (*nix only) (un)set all write bits
|
||
|
x - (*nix only) (un)set all execute bits
|
||
|
s - (*nix only) (un)set all special (SetUID, SetGID, Sticky) bits
|
||
|
e - (*nix only) (un)set recursion (for directories only)
|
||
|
|
||
|
Item states:
|
||
|
|
||
|
- * - checked flag.
|
||
|
|
||
|
- X - means that it has different value for files in selection.
|
||
|
|
||
|
- d (*nix only) - (only for execute flags) means u-x+X, g-x+X or o-x+X
|
||
|
argument for the chmod program. If you're not on OS X and want to
|
||
|
remove execute permission bit from all files, but preserve it for di-
|
||
|
rectories, set all execute flags to 'd' and check 'Set Recursively'
|
||
|
flag.
|
||
|
|
||
|
Jobs menu
|
||
|
|
||
|
dd requests cancellation of job under cursor. The job won't be removed
|
||
|
from the list, but marked as being cancelled (if cancellation was suc-
|
||
|
cessfully requested). A message will pop up if the job has already
|
||
|
stopped. Note that on Windows cancelling external programs like this
|
||
|
might not work, because their parent shell doesn't have any windows.
|
||
|
|
||
|
e key displays errors of selected job if any were collected. They are
|
||
|
displayed in a new menu, but you can get back to jobs menu by pressing
|
||
|
h.
|
||
|
|
||
|
|
||
|
Undolist menu
|
||
|
|
||
|
r - reset undo position to group under the cursor.
|
||
|
|
||
|
|
||
|
Media menu
|
||
|
|
||
|
Selecting a device either mounts (if it wasn't mounted yet) or navi-
|
||
|
gates to its first mount point.
|
||
|
|
||
|
Selecting a mount point navigates to it.
|
||
|
|
||
|
Selecting "not mounted" line causes mounting.
|
||
|
|
||
|
Selecting any other line does nothing.
|
||
|
|
||
|
r - reload the list.
|
||
|
|
||
|
m - mount/unmount device (cursor should be positioned on lines under
|
||
|
device information).
|
||
|
|
||
|
[ - put cursor on the previous device.
|
||
|
|
||
|
] - put cursor on the next device.
|
||
|
|
||
|
|
||
|
Plugins menu
|
||
|
|
||
|
e - display log messages of selected plugin if any were collected.
|
||
|
They are displayed in a new menu, but you can get back to plugins menu
|
||
|
by pressing h.
|
||
|
|
||
|
gf - navigate previously active view to the location of selected
|
||
|
plugin. Leaves menu mode.
|
||
|
|
||
|
|
||
|
Custom views
|
||
|
Definition
|
||
|
|
||
|
Normally file views contain list of files from a single directory, but
|
||
|
sometimes it's useful to populate them with list of files that do not
|
||
|
belong to the same directory, which is what custom views are for.
|
||
|
|
||
|
Presentation
|
||
|
|
||
|
Custom views are still related to directory they were in before custom
|
||
|
list was loaded. Path to that directory (original directory) can be
|
||
|
seen in the title of a custom view.
|
||
|
|
||
|
Files in same directory have to be named differently, this doesn't hold
|
||
|
for custom views thus seeing just file names might be rather confusing.
|
||
|
In order to give an idea where files come from and when possible, rela-
|
||
|
tive paths to original directory of the view is displayed, otherwise
|
||
|
full path is used instead.
|
||
|
|
||
|
Custom views normally don't contain any inexistent files.
|
||
|
|
||
|
Navigation
|
||
|
|
||
|
Custom views have some differences related to navigation in regular
|
||
|
views.
|
||
|
|
||
|
gf - acts similar to gf on symbolic links and navigates to the file at
|
||
|
its real
|
||
|
location.
|
||
|
|
||
|
h - go to closes parent node in tree view, otherwise return to the
|
||
|
original directory.
|
||
|
|
||
|
gh - return to the original directory.
|
||
|
|
||
|
Opening ".." entry also causes return to the original directory.
|
||
|
|
||
|
History
|
||
|
|
||
|
Custom list exists only while it's visible, once left one can't return
|
||
|
to it, so there is no appearances of it in any history.
|
||
|
|
||
|
Filters
|
||
|
|
||
|
Only local filter affects content of the view. This is intentional,
|
||
|
presumably if one loads list, precisely that list should be displayed
|
||
|
(except for inexistent paths, which are ignored).
|
||
|
|
||
|
Search
|
||
|
|
||
|
Although directory names are visible in listing, they are not search-
|
||
|
able. Only file names are taken into account (might be changed in fu-
|
||
|
ture, searching whole lines seems quite reasonable).
|
||
|
|
||
|
Sorting
|
||
|
|
||
|
Contrary to search sorting by name works on whole visible part of file
|
||
|
path.
|
||
|
|
||
|
Highlight
|
||
|
|
||
|
Whole file name is highlighted as one entity, even if there are direc-
|
||
|
tory elements.
|
||
|
|
||
|
Updates
|
||
|
|
||
|
Reloads can occur, though they are not automatic due to files being
|
||
|
scattered among different places. On a reload, inexistent files are
|
||
|
removed and meta-data of all other files is updated.
|
||
|
|
||
|
Once custom view forgets about the file, it won't add it back even if
|
||
|
it's created again. So not seeing file previously affected by an oper-
|
||
|
ation, which was undone is normal.
|
||
|
|
||
|
Operations
|
||
|
|
||
|
All operations that add files are forbidden for custom views. For ex-
|
||
|
ample, moving/copying/putting files into a custom view doesn't work,
|
||
|
because it doesn't make much sense.
|
||
|
|
||
|
On the other hand, operations that use files of a custom view as a
|
||
|
source (e.g. yanking, copying, moving file from custom view, deletion)
|
||
|
and operations that modify names are all allowed.
|
||
|
|
||
|
Compare views
|
||
|
Kinds
|
||
|
|
||
|
:compare can produce four different results depending on arguments:
|
||
|
- single compare view (ofone and either listall or listdups);
|
||
|
- single custom view (ofone and listunique);
|
||
|
- two compare views (ofboth and either listall or listdups);
|
||
|
- two custom views (ofboth and listunique).
|
||
|
|
||
|
The first two display files of one file system tree. Here duplicates
|
||
|
are files that have at least one copy in the same tree. The other two
|
||
|
kinds of operation compare two trees, in which duplicates are files
|
||
|
that are found in both trees.
|
||
|
|
||
|
Lists of unique files are presented in custom views because there is no
|
||
|
file grouping to preserve as all file ids are guaranteed to be dis-
|
||
|
tinct.
|
||
|
|
||
|
Creation
|
||
|
|
||
|
Arguments passed to :compare form four categories each with its own
|
||
|
prefix and is responsible for particular property of operation.
|
||
|
|
||
|
Which files to compare:
|
||
|
- ofboth - compares files of two panes against each other;
|
||
|
- ofone - compares files of the same directory.
|
||
|
|
||
|
How files are compared:
|
||
|
- byname - by their name only;
|
||
|
- bysize - only by their size;
|
||
|
- bycontents - by data they contain (combination of size and hash of
|
||
|
small chunk of contents is used as first approximation, so don't worry
|
||
|
too much about large files).
|
||
|
|
||
|
Which files to display:
|
||
|
- listall - all files;
|
||
|
- listunique - unique files only;
|
||
|
- listdups - only duplicated files.
|
||
|
|
||
|
How results are grouped (has no effect if "ofone" specified):
|
||
|
- groupids - files considered identical are always adjacent in out-
|
||
|
put;
|
||
|
- grouppaths - file system ordering is preferred (this also enables
|
||
|
displaying identically named files as mismatches).
|
||
|
|
||
|
Which files to omit:
|
||
|
- skipempty - ignore empty files.
|
||
|
|
||
|
Each argument can appear multiple times, the rightmost one of the group
|
||
|
is considered. Arguments alter default behaviour instead of substitut-
|
||
|
ing it.
|
||
|
|
||
|
Examples
|
||
|
|
||
|
The defaults corresponds to probably the most common use case of com-
|
||
|
paring files in two trees with grouping by paths, so the following are
|
||
|
equivalent:
|
||
|
|
||
|
:compare
|
||
|
:compare bycontents grouppaths
|
||
|
:compare bycontents listall ofboth grouppaths
|
||
|
|
||
|
Another use case is to find duplicates in the current sub-tree:
|
||
|
|
||
|
:compare listdups ofone
|
||
|
|
||
|
The following command lists files that are unique to each pane:
|
||
|
|
||
|
:compare listunique
|
||
|
|
||
|
Look
|
||
|
|
||
|
The view can't switch to ls-like view as it's unable to display diff-
|
||
|
like data.
|
||
|
|
||
|
Comparison views have second column displaying id of the file, files
|
||
|
with same id are considered to be equal. The view columns configura-
|
||
|
tion is predefined.
|
||
|
|
||
|
Behaviour
|
||
|
|
||
|
When two views are being compared against each other the following
|
||
|
changes to the regular behaviour apply:
|
||
|
- views are scrolled synchronously (as if 'scrollbind' was set);
|
||
|
- views' cursors are synchronized;
|
||
|
- local filtering is disabled (its results wouldn't be meaningful);
|
||
|
- zd excludes groups of adjacent identical files, 1zd gives usual be-
|
||
|
haviour;
|
||
|
- sorting is permanently disabled (ordering is fixed);
|
||
|
- removed files hide their counter pairs;
|
||
|
- exiting one of the views terminates the other immediately;
|
||
|
- renaming files isn't blocked, but isn't taken into account and might
|
||
|
require regeneration of comparison;
|
||
|
- entries which indicate absence of equivalent file have empty names
|
||
|
and can be matched as such;
|
||
|
- when unique files of both views are listed custom views can be
|
||
|
empty, this absence of unique files is stated clearly.
|
||
|
|
||
|
One compare view has similar properties (those that are applicable for
|
||
|
single pane).
|
||
|
|
||
|
Files are gathered in this way:
|
||
|
- recursively starting at current location of the view;
|
||
|
- dot files are excluded if view hides them at the moment of compari-
|
||
|
son, file name filters are obeyed as well so you end up comparing what
|
||
|
you see;
|
||
|
- directories are not taken into account;
|
||
|
- symbolic links to directories are ignored.
|
||
|
|
||
|
Startup
|
||
|
On startup vifm determines several variables that are used during exe-
|
||
|
cution. They are determined in the order they appear below.
|
||
|
|
||
|
On *nix systems $HOME is normally present and used as is. On Windows
|
||
|
systems vifm tries to find correct home directory in the following or-
|
||
|
der:
|
||
|
- $HOME variable;
|
||
|
- $USERPROFILE variable (on Windows only);
|
||
|
- a combination of $HOMEDRIVE and $HOMEPATH variables (on Windows
|
||
|
only).
|
||
|
|
||
|
vifm tries to find correct configuration directory by checking the fol-
|
||
|
lowing places:
|
||
|
- $VIFM variable;
|
||
|
- parent directory of the executable file (on Windows only);
|
||
|
- $HOME/.vifm directory;
|
||
|
- $APPDATA/Vifm directory (on Windows only);
|
||
|
- $XDG_CONFIG_HOME/vifm directory;
|
||
|
- $HOME/.config/vifm directory.
|
||
|
|
||
|
vifm tries to find correct configuration file by checking the following
|
||
|
places:
|
||
|
- $MYVIFMRC variable;
|
||
|
- vifmrc in parent directory of the executable file (on Windows only);
|
||
|
- $VIFM/vifmrc file.
|
||
|
|
||
|
Configure
|
||
|
See "Startup" section above for the explanations on $VIFM and $MYV-
|
||
|
IFMRC.
|
||
|
|
||
|
The vifmrc file contains commands that will be executed on vifm
|
||
|
startup. There are two such files: global and local. Global one is at
|
||
|
{prefix}/etc/vifm/vifmrc, see $MYVIFMRC variable description for the
|
||
|
search algorithm used to find local vifmrc. Global vifmrc is loaded
|
||
|
before the local one, so that the later one can redefine anything con-
|
||
|
figured globally.
|
||
|
|
||
|
Use vifmrc to set settings, mappings, filetypes etc. To use multi line
|
||
|
commands precede each next line with a slash (whitespace before slash
|
||
|
is ignored, but all spaces at the end of the lines are saved). For ex-
|
||
|
ample:
|
||
|
|
||
|
set
|
||
|
\smartcase
|
||
|
|
||
|
equals "setsmartcase". When
|
||
|
|
||
|
set<space here>
|
||
|
\ smartcase
|
||
|
|
||
|
equals "set smartcase".
|
||
|
|
||
|
The $VIFM/vifminfo file contains generic state of the application. You
|
||
|
can control what is stored in vifminfo by setting 'vifminfo' option.
|
||
|
Vifm always writes this file on exit unless 'vifminfo' option is empty.
|
||
|
Marks, bookmarks, commands, histories, filetypes, fileviewers and reg-
|
||
|
isters in the file are merged with vifm configuration (which has bigger
|
||
|
priority).
|
||
|
|
||
|
Generally, runtime configuration has bigger priority during merging,
|
||
|
but there are some exceptions:
|
||
|
|
||
|
- directory stack stored in the file is not overwritten unless some-
|
||
|
thing is changed in vifm instance that performs merge;
|
||
|
|
||
|
- each mark or bookmark is marked with a timestamp, so that newer
|
||
|
value is not overwritten by older one, thus no matter from where it
|
||
|
comes, the newer one wins;
|
||
|
|
||
|
- all histories are marked with timestamps on storing, this means
|
||
|
that last instance to quit puts its elements on top of the list;
|
||
|
|
||
|
- tabs are merged only if both current instance and stored state con-
|
||
|
tain exactly one tab of any kind.
|
||
|
|
||
|
The $VIFM/scripts directory can contain shell scripts. vifm modifies
|
||
|
its PATH environment variable to let user run those scripts without
|
||
|
specifying full path. All subdirectories of the $VIFM/scripts will be
|
||
|
added to PATH too. Script in a subdirectory overlaps script with the
|
||
|
same name in all its parent directories.
|
||
|
|
||
|
The $VIFM/colors/ and {prefix}/etc/vifm/colors/ directories contain
|
||
|
color schemes. Available color schemes are searched in that order, so
|
||
|
on name conflict the one in $VIFM/colors/ wins.
|
||
|
|
||
|
Each color scheme should have ".vifm" extension. This wasn't the case
|
||
|
before and for this reason the following rules apply during lookup:
|
||
|
|
||
|
- if there is no file with .vifm extension, all regular files are
|
||
|
listed;
|
||
|
|
||
|
- otherwise only files with .vifm extension are listed (with the ex-
|
||
|
tension being truncated).
|
||
|
|
||
|
Sessions
|
||
|
Sessions provide a way to have multiple persistent runtime configura-
|
||
|
tions. Think of them as second-level vifminfo files in addition to the
|
||
|
first-level one used by all sessions. In other words, they aren't a
|
||
|
replacement for vifminfo file that exists without sessions, but an ad-
|
||
|
dition to it. One can empty 'vifminfo' option and rely solely on ses-
|
||
|
sions, but in practice one might want to share some state among in-
|
||
|
stances in different sessions or have an "out-of-sessions" state for
|
||
|
tasks that don't deserve a session of their own.
|
||
|
|
||
|
This leads to a two-level structure where data in session files has
|
||
|
higher priority than data in vifminfo files (where this makes sense)
|
||
|
following the same rules that merging of vifminfo file obeys. In addi-
|
||
|
tion to that, history items from session files are never ordered before
|
||
|
history items from vifminfo file.
|
||
|
|
||
|
Format
|
||
|
|
||
|
Sessions have the format of vifminfo files, they do not consist of se-
|
||
|
quence of command-line commands and are not meant to be sourced via
|
||
|
:source command.
|
||
|
|
||
|
Storage and naming
|
||
|
|
||
|
`$VIFM/sessions/` directory serves as a storage for sessions. Conse-
|
||
|
quently names should be valid filenames. The structure of the storage
|
||
|
is flat meaning that there are no subdirectories, that's why names of
|
||
|
sessions can't contain slashes.
|
||
|
|
||
|
Usage model
|
||
|
|
||
|
Contrary to Vim, vifm automates basic management of sessions. You can
|
||
|
start, switch, stop or delete a session using builtin means.
|
||
|
|
||
|
Current session is saved at the same time vifminfo is saved (on normal
|
||
|
exits or explicitly on :write command) and right before switching to
|
||
|
another session. To avoid saving in those cases use :session command
|
||
|
to detach (without saving) from a session before proceeding.
|
||
|
|
||
|
Related topics
|
||
|
|
||
|
Commands: :session, :delsession
|
||
|
Options: 'sessionoptions'
|
||
|
Variables: v:session
|
||
|
|
||
|
Automatic FUSE mounts
|
||
|
vifm has a builtin support of automated FUSE file system mounts. It is
|
||
|
implemented using file associations mechanism. To enable automated
|
||
|
mounts, one needs to use a specially formatted program line in filetype
|
||
|
or filextype commands. These use special macros, which differ from
|
||
|
macros in commands unrelated to FUSE. Currently three formats are sup-
|
||
|
ported:
|
||
|
|
||
|
1) FUSE_MOUNT This format should be used in case when all information
|
||
|
needed for mounting all files of a particular type is the same. E.g.
|
||
|
mounting of tar files don't require any file specific options.
|
||
|
|
||
|
Format line:
|
||
|
FUSE_MOUNT|mounter %SOURCE_FILE %DESTINATION_DIR [%FOREGROUND]
|
||
|
|
||
|
Example filetype command:
|
||
|
|
||
|
:filetype FUSE_MOUNT|fuse-zip %SOURCE_FILE %DESTINATION_DIR
|
||
|
|
||
|
2) FUSE_MOUNT2 This format allows one to use specially formatted files
|
||
|
to perform mounting and is useful for mounting remotes, for example re-
|
||
|
mote file systems over ftp or ssh.
|
||
|
|
||
|
Format line:
|
||
|
FUSE_MOUNT2|mounter %PARAM %DESTINATION_DIR [%FOREGROUND]
|
||
|
|
||
|
Example filetype command:
|
||
|
|
||
|
:filetype *.ssh FUSE_MOUNT2|sshfs %PARAM %DESTINATION_DIR
|
||
|
|
||
|
Example file content:
|
||
|
|
||
|
root@127.0.0.1:/
|
||
|
|
||
|
3) FUSE_MOUNT3
|
||
|
|
||
|
This format is equivalent to FUSE_MOUNT, but omits unmounting. It is
|
||
|
useful for cases, when unmounting isn't needed, like when using AVFS.
|
||
|
|
||
|
Example :filetype command:
|
||
|
|
||
|
:filetype *.tar,*.tar.bz2,*.tbz2,*.tgz,*.tar.gz,*.tar.xz,*.txz,*.deb
|
||
|
\ {Mount with avfs}
|
||
|
\ FUSE_MOUNT3|mount-avfs %DESTINATION_DIR %SOURCE_FILE
|
||
|
|
||
|
Example `mount-avfs` helper script:
|
||
|
|
||
|
#!/bin/sh
|
||
|
|
||
|
dest=$1
|
||
|
file=$2
|
||
|
|
||
|
rmdir "$dest"
|
||
|
ln -s "$HOME/.avfs$file#/" "$dest"
|
||
|
|
||
|
All % macros are expanded by vifm at runtime and have the following
|
||
|
meaning:
|
||
|
- %SOURCE_FILE is replaced by full path to selected file;
|
||
|
- %DESTINATION_DIR is replaced by full path to mount directory, which
|
||
|
is created by vifm basing on the value of 'fusehome' option;
|
||
|
- %PARAM value is filled from the first line of file (whole line),
|
||
|
though in the future it can be changed to whole file content;
|
||
|
- %FOREGROUND means that you want to run mount command as a regular
|
||
|
command (required to be able to provide input for communication with
|
||
|
mounter in interactive way).
|
||
|
|
||
|
%FOREGROUND is an optional macro. Other macros are not mandatory, but
|
||
|
mount commands likely won't work without them.
|
||
|
|
||
|
%CLEAR is obsolete name of %FOREGROUND, which is still supported, but
|
||
|
might be removed in future. Its use is discouraged.
|
||
|
|
||
|
Unlike macros elsewhere, these are recognized only if they appear at
|
||
|
the end of a command or are followed by a space. There is no way to
|
||
|
escape % either. These are historical limitations, which might be ad-
|
||
|
dressed in the future.
|
||
|
|
||
|
The mounted FUSE file systems will be automatically unmounted in two
|
||
|
cases:
|
||
|
|
||
|
- when vifm quits (with ZZ, :q, etc. or when killed by signal);
|
||
|
|
||
|
- when you explicitly leave mount point going up to its parent direc-
|
||
|
tory (with h, Enter on "../" or ":cd ..") and other pane is not in
|
||
|
the same directory or its child directories.
|
||
|
|
||
|
View look
|
||
|
vifm supports displaying of file list view in two different ways:
|
||
|
|
||
|
- in a table mode, when multiple columns can be set using 'view-
|
||
|
columns' option (see "Column view" section below for details);
|
||
|
|
||
|
- in a multicolumn list manner which looks almost like `ls -x` com-
|
||
|
mand output (see "ls-like view" section below for details).
|
||
|
|
||
|
The look is local for each view and can be chosen by changing value of
|
||
|
the 'lsview' boolean option.
|
||
|
|
||
|
Depending on view look some of keys change their meaning to allow more
|
||
|
natural cursor moving. This concerns mainly h, j, k, l and other simi-
|
||
|
lar navigation keys.
|
||
|
|
||
|
Also some of options can be ignored if they don't affect view display-
|
||
|
ing in selected look. For example value of 'viewcolumns' when 'lsview'
|
||
|
is set.
|
||
|
|
||
|
ls-like view
|
||
|
When this view look is enabled by setting 'lsview' option on, vifm will
|
||
|
display files in multiple columns. Number of columns depends on the
|
||
|
length of the longest file name present in current directory of the
|
||
|
view. Whole file list is automatically reflowed on directory change,
|
||
|
terminal or view resize.
|
||
|
|
||
|
View looks close to output of `ls -x` command, so files are listed left
|
||
|
to right in rows.
|
||
|
|
||
|
In this mode file manipulation commands (e.g. d) don't work line-wise
|
||
|
like they do in Vim, since such operations would be uncommon for file
|
||
|
manipulation tasks. Thus, for example, dd will remove only current
|
||
|
file.
|
||
|
|
||
|
By default the view is filled by lines, 'lsoptions' can be used to get
|
||
|
filling by columns.
|
||
|
|
||
|
Note that tree-view and compare view inhibit ls-like view.
|
||
|
|
||
|
Column view
|
||
|
View columns are described by a comma-separated list of column descrip-
|
||
|
tions, each of which has the following format
|
||
|
[ '-' | '*' ] [ fw ( [ '.' tw ] | '%' ) ] '{' type | literal '}'
|
||
|
'.'{0,3}
|
||
|
where fw stands for full width, tw stands for text width, bar is logi-
|
||
|
cal or, square brackets denote optional parts and curly braces define
|
||
|
range of repetitions for a symbol that precedes them.
|
||
|
|
||
|
So it basically consists of four parts:
|
||
|
1. Optional alignment specifier
|
||
|
2. Optional width specifier
|
||
|
3. Mandatory column name
|
||
|
4. Optional cropping specifier
|
||
|
|
||
|
Alignment specifier
|
||
|
|
||
|
It's an optional minus or asterisk sign as the first symbol of the
|
||
|
string.
|
||
|
|
||
|
Specifies type of text alignment within a column. Three types are sup-
|
||
|
ported:
|
||
|
|
||
|
- left align
|
||
|
|
||
|
set viewcolumns=-{name}
|
||
|
|
||
|
- right align (default)
|
||
|
|
||
|
set viewcolumns={name}
|
||
|
|
||
|
- dynamic align
|
||
|
|
||
|
It's like left alignment, but when the text is bigger than the col-
|
||
|
umn, the alignment is made at the right (so the part of the field is
|
||
|
always visible).
|
||
|
|
||
|
set viewcolumns=*{name}
|
||
|
|
||
|
Width specifier
|
||
|
|
||
|
It's a number followed by a percent sign, two numbers (second one
|
||
|
should be less than or equal to the first one) separated with a dot or
|
||
|
a single number.
|
||
|
|
||
|
Specifies column width and its units. There are three size types:
|
||
|
|
||
|
- absolute size - column width is specified in characters
|
||
|
|
||
|
set viewcolumns=-100{name},20.15{ext}
|
||
|
|
||
|
results in two columns with lengths of 100 and 20 and a reserved
|
||
|
space of five characters on the left of second column.
|
||
|
|
||
|
- relative (percent) size - column width is specified in percents of
|
||
|
view width
|
||
|
|
||
|
set viewcolumns=-80%{name},15%{ext},5%{mtime}
|
||
|
|
||
|
results in three columns with lengths of 80/100, 15/100 and 5/100 of
|
||
|
view width.
|
||
|
|
||
|
- auto size (default) - column width is automatically determined
|
||
|
|
||
|
set viewcolumns=-{name},{ext},{mtime}
|
||
|
|
||
|
results in three columns with length of one third of view width.
|
||
|
There is no size adjustment to content, since it will slow down ren-
|
||
|
dering.
|
||
|
|
||
|
Columns of different sizing types can be freely mixed in one view.
|
||
|
Though sometimes some of columns can be seen partly or be completely
|
||
|
invisible if there is not enough space to display them.
|
||
|
|
||
|
Column contents
|
||
|
|
||
|
This is usually a sorting key surrounded with curly braces, e.g.
|
||
|
|
||
|
{name},{ext},{mtime}
|
||
|
|
||
|
{name} and {iname} types are the same and present both for consistency
|
||
|
with 'sort' option.
|
||
|
|
||
|
Following types don't have corresponding sorting keys:
|
||
|
|
||
|
- {root} - display name without extension (as a complement for
|
||
|
{ext})
|
||
|
|
||
|
- {fileroot} - display name without extension for anything except for
|
||
|
directories and symbolic links to directories (as a complement for
|
||
|
{fileext})
|
||
|
|
||
|
Empty curly braces ({}) are replaced with the default secondary column
|
||
|
for primary sort key. So after the next command view will be displayed
|
||
|
almost as if 'viewcolumns' is empty, but adding ellipsis for long file
|
||
|
names:
|
||
|
|
||
|
set viewcolumns=-{name}..,6{}.
|
||
|
|
||
|
The last kind of column value is a string literal. The literal is used
|
||
|
as a column value for every row. The syntax is "{#literal}", for exam-
|
||
|
ple:
|
||
|
|
||
|
3{#},{#|},{# | }
|
||
|
|
||
|
This can be used to draw column separators. Mind that for convenience
|
||
|
literals have different defaults: truncation and automatically deter-
|
||
|
mined absolute size, which is what you usually want for them. Example:
|
||
|
|
||
|
set viewcolumns=*{name}..,{#|},6{}.
|
||
|
|
||
|
Cropping specifier
|
||
|
|
||
|
It's from one to three dots after closing curly brace in column format.
|
||
|
|
||
|
Specifies type of text truncation if it doesn't fit in the column.
|
||
|
Currently three types are supported:
|
||
|
|
||
|
- truncation - text is truncated
|
||
|
|
||
|
set viewcolumns=-{name}.
|
||
|
|
||
|
results in truncation of names that are too long too fit in the
|
||
|
view.
|
||
|
|
||
|
- adding of ellipsis - ellipsis on the left or right are added when
|
||
|
needed
|
||
|
|
||
|
set viewcolumns=-{name}..
|
||
|
|
||
|
results in that ellipsis are added at the end of too long file
|
||
|
names.
|
||
|
|
||
|
- none (default) - text can pass column boundaries
|
||
|
|
||
|
set viewcolumns=-{name}...,{ext}
|
||
|
|
||
|
results in that long file names can partially be written on the ext
|
||
|
column.
|
||
|
|
||
|
Color schemes
|
||
|
The color schemes in vifm can be applied in two different ways:
|
||
|
|
||
|
- as the primary color scheme;
|
||
|
|
||
|
- as local to a pane color scheme.
|
||
|
|
||
|
Both types are set using :colorscheme command, but of different forms:
|
||
|
|
||
|
- :colorscheme color_scheme_name - for the primary color scheme;
|
||
|
|
||
|
- :colorscheme color_scheme_name directory - for local color schemes.
|
||
|
|
||
|
Look of different parts of the TUI (Text User Interface) is determined
|
||
|
in this way:
|
||
|
|
||
|
- Border, TabLine, TabLineSel, TopLineSel, TopLine, CmdLine, Er-
|
||
|
rorMsg, StatusLine, JobLine, SuggestBox and WildMenu are always de-
|
||
|
termined by the primary color scheme;
|
||
|
|
||
|
- CurrLine, Selected, Directory, Link, BrokenLink, Socket, Device,
|
||
|
Executable, Fifo, CmpMismatch, Win, AuxWin and OtherWin are deter-
|
||
|
mined by primary color scheme and a set of local color schemes,
|
||
|
which can be empty.
|
||
|
|
||
|
There might be a set of local color schemes because they are structured
|
||
|
hierarchically according to file system structure. For example, having
|
||
|
the following piece of file system:
|
||
|
|
||
|
~
|
||
|
`-- bin
|
||
|
|
|
||
|
`-- my
|
||
|
|
||
|
Two color schemes:
|
||
|
|
||
|
# ~/.vifm/colors/for_bin
|
||
|
highlight Win cterm=none ctermfg=white ctermbg=red
|
||
|
highlight CurrLine cterm=none ctermfg=red ctermbg=black
|
||
|
|
||
|
# ~/.vifm/colors/for_bin_my
|
||
|
highlight CurrLine cterm=none ctermfg=green ctermbg=black
|
||
|
|
||
|
And these three commands in the vifmrc file:
|
||
|
|
||
|
colorscheme Default
|
||
|
colorscheme for_bin ~/bin
|
||
|
colorscheme for_bin_my ~/bin/my
|
||
|
|
||
|
File list will look in the following way for each level:
|
||
|
|
||
|
- ~/ - Default color scheme
|
||
|
black background
|
||
|
cursor with blue background
|
||
|
|
||
|
- ~/bin/ - mix of Default and for_bin color schemes
|
||
|
red background
|
||
|
cursor with black background and red foreground
|
||
|
|
||
|
- ~/bin/my/ - mix of Default, for_bin and for_bin_my color schemes
|
||
|
red background
|
||
|
cursor with black background and green foreground
|
||
|
|
||
|
Trash directory
|
||
|
vifm has support of trash directory, which is used as temporary storage
|
||
|
for deleted files or files that were cut. Using trash is controlled by
|
||
|
the 'trash' option, and exact path to the trash can be set with
|
||
|
'trashdir' option. Trash directory in vifm differs from the system-
|
||
|
wide one by default, because of possible incompatibilities of storing
|
||
|
deleted files among different file managers. But one can set
|
||
|
'trashdir' to "~/.local/share/Trash" to use a "standard" trash direc-
|
||
|
tory.
|
||
|
|
||
|
There are two scenarios of using trash in vifm:
|
||
|
|
||
|
1. As a place for storing files that were cut by "d" and may be in-
|
||
|
serted to some other place in file system.
|
||
|
|
||
|
2. As a storage of files, that are deleted but not purged yet.
|
||
|
|
||
|
The first scenario uses deletion ("d") operations to put files to trash
|
||
|
and put ("p") operations to restore files from trash directory. Note
|
||
|
that such operations move files to and from trash directory, which can
|
||
|
be long term operations in case of different partitions or remote
|
||
|
drives mounted locally.
|
||
|
|
||
|
The second scenario uses deletion ("d") operations for moving files to
|
||
|
trash directory and :empty command-line command to purge all previously
|
||
|
deleted files.
|
||
|
|
||
|
Deletion and put operations depend on registers, which can point to
|
||
|
files in trash directory. Normally, there are no nonexistent files in
|
||
|
registers, but vifm doesn't keep track of modifications under trash di-
|
||
|
rectory, so one shouldn't expect value of registers to be absolutely
|
||
|
correct if trash directory was modified not by operation that are meant
|
||
|
for it. But this won't lead to any issues with operations, since they
|
||
|
ignore nonexistent files.
|
||
|
|
||
|
Client-Server
|
||
|
vifm supports remote execution of command-line mode commands, remote
|
||
|
changing of directories and expression evaluation. This is possible
|
||
|
using --remote and --remote-expr command-line arguments.
|
||
|
|
||
|
To execute a command remotely combine --remote argument with -c <com-
|
||
|
mand> or +<command>. For example:
|
||
|
|
||
|
vifm --remote -c 'cd /'
|
||
|
vifm --remote '+cd /'
|
||
|
|
||
|
To change directory not using command-line mode commands one can spec-
|
||
|
ify paths right after --remote argument, like this:
|
||
|
|
||
|
vifm --remote /
|
||
|
vifm --remote ~
|
||
|
vifm --remote /usr/bin /tmp
|
||
|
|
||
|
Evaluating expression remotely might be useful to query information
|
||
|
about an instance, for example its location:
|
||
|
|
||
|
vifm --remote-expr 'expand("%d")'
|
||
|
|
||
|
If there are several running instances, the target can be specified
|
||
|
with --server-name option (otherwise, the first one lexicographically
|
||
|
is used):
|
||
|
|
||
|
vifm --server-name work --remote ~/work/project
|
||
|
|
||
|
List of names of running instances can be obtained via --server-list
|
||
|
option. Name of the current one is available via v:servername.
|
||
|
|
||
|
|
||
|
v:servername
|
||
|
server name of the running vifm instance. Empty if client-
|
||
|
server feature is disabled.
|
||
|
|
||
|
External Renaming
|
||
|
When an editor is run to edit list of file names, contents of the tem-
|
||
|
porary file has the following format:
|
||
|
|
||
|
1. Order of lines correspond to the order of files in a view.
|
||
|
|
||
|
2. Lines that start with a "#" are comments and are ignored.
|
||
|
|
||
|
3. Single backslash at the beginning of a line is ignored, so that a
|
||
|
file starting with a backslash will appear like "\#name".
|
||
|
|
||
|
If an operation was rejected due to issues with file names, next time
|
||
|
you'll see the following in this order:
|
||
|
|
||
|
1. Last error (in comments).
|
||
|
|
||
|
2. Original file names (in comments).
|
||
|
|
||
|
3. Failed list of new names.
|
||
|
|
||
|
Mind that Vim plugin will extract list of original names and show them
|
||
|
in a vertical split.
|
||
|
|
||
|
You can cancel renaming by removing all non-comments from the buffer.
|
||
|
This also erases information about previous edits.
|
||
|
|
||
|
Plugin
|
||
|
Plugin for using vifm in vim as a file selector.
|
||
|
|
||
|
Commands:
|
||
|
|
||
|
:EditVifm select a file or files to open in the current buffer.
|
||
|
:Vifm alias for :EditVifm.
|
||
|
:SplitVifm split buffer and select a file or files to open.
|
||
|
:VsplitVifm vertically split buffer and select a file or files to
|
||
|
open.
|
||
|
:DiffVifm select a file or files to compare to the current file
|
||
|
with
|
||
|
:vert diffsplit.
|
||
|
:TabVifm select a file or files to open in tabs.
|
||
|
|
||
|
Each command accepts up to two arguments: left pane directory and right
|
||
|
pane directory. After arguments are checked, vifm process is spawned
|
||
|
in a special "file-picker" mode. To pick files just open them either
|
||
|
by pressing l, i or Enter keys, or by running :edit command. If no
|
||
|
files are selected, file under the cursor is opened, otherwise whole
|
||
|
selection is passed to the plugin and opened in vim.
|
||
|
|
||
|
The plugin have only two settings. It's a string variable named
|
||
|
g:vifm_term to let user specify command to run GUI terminal. By de-
|
||
|
fault it's equal to 'xterm -e'. And another string variable named
|
||
|
g:vifm_exec, which equals "vifm" by default and specifies path to
|
||
|
vifm's executable. To pass arguments to vifm use g:vifm_exec_args,
|
||
|
which is empty by default.
|
||
|
|
||
|
To use the plugin copy the vifm.vim file to either the system wide
|
||
|
vim/plugin directory or into ~/.vim/plugin.
|
||
|
|
||
|
If you would prefer not to use the plugin and it is in the system wide
|
||
|
plugin directory add
|
||
|
|
||
|
let loaded_vifm=1
|
||
|
|
||
|
to your ~/.vimrc file.
|
||
|
|
||
|
Reserved
|
||
|
The following command names are reserved and shouldn't be used for user
|
||
|
commands.
|
||
|
|
||
|
g[lobal]
|
||
|
v[global]
|
||
|
|
||
|
ENVIRONMENT
|
||
|
VIFM Points to main configuration directory (usually ~/.vifm/).
|
||
|
|
||
|
MYVIFMRC
|
||
|
Points to main configuration file (usually ~/.vifm/vifmrc).
|
||
|
|
||
|
These environment variables are valid inside vifm and also can be used
|
||
|
to configure it by setting some of them before running vifm.
|
||
|
|
||
|
When $MYVIFMRC isn't set, it's made as $VIFM/vifmrc (exception for Win-
|
||
|
dows: vifmrc in the same directory as vifm.exe has higher priority than
|
||
|
$VIFM/vifmrc).
|
||
|
|
||
|
See "Startup" section above for more details.
|
||
|
|
||
|
VIFM_FUSE_FILE
|
||
|
On execution of external commands this variable is set to the
|
||
|
full path of file used to initiate FUSE mount of the closest
|
||
|
mount point from current pane's directory up. It's not set when
|
||
|
outside FUSE mount point. When vifm is used inside terminal
|
||
|
multiplexer, it tries to set this variable as well (it doesn't
|
||
|
work this way on its own).
|
||
|
|
||
|
SEE ALSO
|
||
|
vifm-convert-dircolors(1), vifm-pause(1)
|
||
|
|
||
|
Website: https://vifm.info/
|
||
|
Wiki: https://wiki.vifm.info/
|
||
|
|
||
|
Esperanto translation of the documentation by Sebastian Cyprych:
|
||
|
http://cyprych.neostrada.pl/tekstoj/komputiloj/vifm-help.eo.html
|
||
|
|
||
|
AUTHOR
|
||
|
Vifm was written by ksteen <ksteen@users.sourceforge.net>
|
||
|
And currently is developed by xaizek <xaizek@posteo.net>
|
||
|
|
||
|
|
||
|
|
||
|
vifm 0.12 September 29, 2021 VIFM(1)
|