aboutsummaryrefslogtreecommitdiff
path: root/dotfiles
diff options
context:
space:
mode:
Diffstat (limited to 'dotfiles')
-rwxr-xr-xdotfiles/.config/ranger/commands.py216
-rwxr-xr-xdotfiles/.config/ranger/commands_full.py1508
-rw-r--r--dotfiles/.config/ranger/rc.conf466
-rw-r--r--dotfiles/.config/ranger/rifle.conf60
-rwxr-xr-xdotfiles/.config/ranger/scope.sh145
-rw-r--r--dotfiles/.config/sway/desktopslav24
-rw-r--r--dotfiles/.config/transmission-daemon/settings.json4
-rw-r--r--dotfiles/.config/vifm/colors/Default.vifm80
-rw-r--r--dotfiles/.config/vifm/colors/yaroslavps.vifm33
-rw-r--r--dotfiles/.config/vifm/scripts/README6
-rwxr-xr-xdotfiles/.config/vifm/scripts/imgc16
-rwxr-xr-xdotfiles/.config/vifm/scripts/imgt38
-rwxr-xr-xdotfiles/.config/vifm/scripts/vifmimg53
-rwxr-xr-xdotfiles/.config/vifm/scripts/vifmrun15
-rw-r--r--dotfiles/.config/vifm/vifm-help.txt5899
-rw-r--r--dotfiles/.config/vifm/vifminfo293
-rw-r--r--dotfiles/.config/vifm/vifmrc202
-rwxr-xr-xdotfiles/.local/bin/xway2
18 files changed, 15 insertions, 9045 deletions
diff --git a/dotfiles/.config/ranger/commands.py b/dotfiles/.config/ranger/commands.py
deleted file mode 100755
index 8c5e748..0000000
--- a/dotfiles/.config/ranger/commands.py
+++ /dev/null
@@ -1,216 +0,0 @@
-# This is a sample commands.py. You can add your own commands here.
-#
-# Please refer to commands_full.py for all the default commands and a complete
-# documentation. Do NOT add them all here, or you may end up with defunct
-# commands when upgrading ranger.
-
-# You always need to import ranger.api.commands here to get the Command class:
-from ranger.api.commands import *
-
-# A simple command for demonstration purposes follows.
-#------------------------------------------------------------------------------
-
-# You can import any python module as needed.
-import os
-
-# Any class that is a subclass of "Command" will be integrated into ranger as a
-# command. Try typing ":my_edit<ENTER>" in ranger!
-class my_edit(Command):
- # The so-called doc-string of the class will be visible in the built-in
- # help that is accessible by typing "?c" inside ranger.
- """:my_edit <filename>
-
- A sample command for demonstration purposes that opens a file in an editor.
- """
-
- # The execute method is called when you run this command in ranger.
- def execute(self):
- # self.arg(1) is the first (space-separated) argument to the function.
- # This way you can write ":my_edit somefilename<ENTER>".
- if self.arg(1):
- # self.rest(1) contains self.arg(1) and everything that follows
- target_filename = self.rest(1)
- else:
- # self.fm is a ranger.core.filemanager.FileManager object and gives
- # you access to internals of ranger.
- # self.fm.thisfile is a ranger.container.file.File object and is a
- # reference to the currently selected file.
- target_filename = self.fm.thisfile.path
-
- # This is a generic function to print text in ranger.
- self.fm.notify("Let's edit the file " + target_filename + "!")
-
- # Using bad=True in fm.notify allows you to print error messages:
- if not os.path.exists(target_filename):
- self.fm.notify("The given file does not exist!", bad=True)
- return
-
- # This executes a function from ranger.core.acitons, a module with a
- # variety of subroutines that can help you construct commands.
- # Check out the source, or run "pydoc ranger.core.actions" for a list.
- self.fm.edit_file(target_filename)
-
- # The tab method is called when you press tab, and should return a list of
- # suggestions that the user will tab through.
- def tab(self):
- # This is a generic tab-completion function that iterates through the
- # content of the current directory.
- return self._tab_directory_content()
-
-
-# https://github.com/ranger/ranger/wiki/Integrating-File-Search-with-fzf
-# Now, simply bind this function to a key, by adding this to your ~/.config/ranger/rc.conf: map <C-f> fzf_select
-class fzf_select(Command):
- """
- :fzf_select
-
- Find a file using fzf.
-
- With a prefix argument select only directories.
-
- See: https://github.com/junegunn/fzf
- """
- def execute(self):
- import subprocess
- if self.quantifier:
- # match only directories
- command="find -L . \( -path '*/\.*' -o -fstype 'dev' -o -fstype 'proc' \) -prune \
- -o -type d -print 2> /dev/null | sed 1d | cut -b3- | fzf +m"
- else:
- # match files and directories
- command="find -L . \( -path '*/\.*' -o -fstype 'dev' -o -fstype 'proc' \) -prune \
- -o -print 2> /dev/null | sed 1d | cut -b3- | fzf +m"
- fzf = self.fm.execute_command(command, stdout=subprocess.PIPE)
- stdout, stderr = fzf.communicate()
- if fzf.returncode == 0:
- fzf_file = os.path.abspath(stdout.decode('utf-8').rstrip('\n'))
- if os.path.isdir(fzf_file):
- self.fm.cd(fzf_file)
- else:
- self.fm.select_file(fzf_file)
-# fzf_locate
-class fzf_locate(Command):
- """
- :fzf_locate
-
- Find a file using fzf.
-
- With a prefix argument select only directories.
-
- See: https://github.com/junegunn/fzf
- """
- def execute(self):
- import subprocess
- if self.quantifier:
- command="locate home media | fzf -e -i"
- else:
- command="locate home media | fzf -e -i"
- fzf = self.fm.execute_command(command, stdout=subprocess.PIPE)
- stdout, stderr = fzf.communicate()
- if fzf.returncode == 0:
- fzf_file = os.path.abspath(stdout.decode('utf-8').rstrip('\n'))
- if os.path.isdir(fzf_file):
- self.fm.cd(fzf_file)
- else:
- self.fm.select_file(fzf_file)
-
-class fzf_bring(Command):
- """
- :fzf_bring
-
- Find a file using fzf and bring it to the current directory.
-
- See: https://github.com/junegunn/fzf
- """
- def execute(self):
- import subprocess
- if self.quantifier:
- # match only directories
- command="find -L . \( -path '*/\.*' -o -fstype 'dev' -o -fstype 'proc' \) -prune \
- -o -type d -print 2> /dev/null | sed 1d | cut -b3- | fzf +m"
- else:
- # match files and directories
- command="find -L . \( -path '*/\.*' -o -fstype 'dev' -o -fstype 'proc' \) -prune \
- -o -print 2> /dev/null | sed 1d | cut -b3- | fzf +m"
- fzf = self.fm.execute_command(command, stdout=subprocess.PIPE)
- stdout, stderr = fzf.communicate()
- if fzf.returncode == 0:
- fzf_file = os.path.abspath(stdout.decode('utf-8').rstrip('\n'))
- if os.path.isdir(fzf_file):
- self.fm.cd(fzf_file)
- else:
- self.fm.select_file(fzf_file)
-
-
-import os
-from ranger.core.loader import CommandLoader
-
-class compress(Command):
- def execute(self):
- """ Compress marked files to current directory """
- cwd = self.fm.thisdir
- marked_files = cwd.get_selection()
-
- if not marked_files:
- return
-
- def refresh(_):
- cwd = self.fm.get_directory(original_path)
- cwd.load_content()
-
- original_path = cwd.path
- parts = self.line.split()
- au_flags = parts[1:]
-
- descr = "compressing files in: " + os.path.basename(parts[1])
- obj = CommandLoader(args=['apack'] + au_flags + \
- [os.path.relpath(f.path, cwd.path) for f in marked_files], descr=descr)
-
- obj.signal_bind('after', refresh)
- self.fm.loader.add(obj)
-
- def tab(self):
- """ Complete with current folder name """
-
- extension = ['.zip', '.tar.gz', '.rar', '.7z']
- return ['compress ' + os.path.basename(self.fm.thisdir.path) + ext for ext in extension]
-
-
-
-
-import os
-from ranger.core.loader import CommandLoader
-
-class extracthere(Command):
- def execute(self):
- """ Extract copied files to current directory """
- copied_files = tuple(self.fm.copy_buffer)
-
- if not copied_files:
- return
-
- def refresh(_):
- cwd = self.fm.get_directory(original_path)
- cwd.load_content()
-
- one_file = copied_files[0]
- cwd = self.fm.thisdir
- original_path = cwd.path
- au_flags = ['-X', cwd.path]
- au_flags += self.line.split()[1:]
- au_flags += ['-e']
-
- self.fm.copy_buffer.clear()
- self.fm.cut_buffer = False
- if len(copied_files) == 1:
- descr = "extracting: " + os.path.basename(one_file.path)
- else:
- descr = "extracting files from: " + os.path.basename(one_file.dirname)
- obj = CommandLoader(args=['aunpack'] + au_flags \
- + [f.path for f in copied_files], descr=descr)
-
- obj.signal_bind('after', refresh)
- self.fm.loader.add(obj)
-
-
-
diff --git a/dotfiles/.config/ranger/commands_full.py b/dotfiles/.config/ranger/commands_full.py
deleted file mode 100755
index 9f0481c..0000000
--- a/dotfiles/.config/ranger/commands_full.py
+++ /dev/null
@@ -1,1508 +0,0 @@
-# -*- coding: utf-8 -*-
-# This file is part of ranger, the console file manager.
-# This configuration file is licensed under the same terms as ranger.
-# ===================================================================
-#
-# NOTE: If you copied this file to ~/.config/ranger/commands_full.py,
-# then it will NOT be loaded by ranger, and only serve as a reference.
-#
-# ===================================================================
-# This file contains ranger's commands.
-# It's all in python; lines beginning with # are comments.
-#
-# Note that additional commands are automatically generated from the methods
-# of the class ranger.core.actions.Actions.
-#
-# You can customize commands in the file ~/.config/ranger/commands.py.
-# It has the same syntax as this file. In fact, you can just copy this
-# file there with `ranger --copy-config=commands' and make your modifications.
-# But make sure you update your configs when you update ranger.
-#
-# ===================================================================
-# Every class defined here which is a subclass of `Command' will be used as a
-# command in ranger. Several methods are defined to interface with ranger:
-# execute(): called when the command is executed.
-# cancel(): called when closing the console.
-# tab(): called when <TAB> is pressed.
-# quick(): called after each keypress.
-#
-# The return values for tab() can be either:
-# None: There is no tab completion
-# A string: Change the console to this string
-# A list/tuple/generator: cycle through every item in it
-#
-# The return value for quick() can be:
-# False: Nothing happens
-# True: Execute the command afterwards
-#
-# The return value for execute() and cancel() doesn't matter.
-#
-# ===================================================================
-# Commands have certain attributes and methods that facilitate parsing of
-# the arguments:
-#
-# self.line: The whole line that was written in the console.
-# self.args: A list of all (space-separated) arguments to the command.
-# self.quantifier: If this command was mapped to the key "X" and
-# the user pressed 6X, self.quantifier will be 6.
-# self.arg(n): The n-th argument, or an empty string if it doesn't exist.
-# self.rest(n): The n-th argument plus everything that followed. For example,
-# if the command was "search foo bar a b c", rest(2) will be "bar a b c"
-# self.start(n): Anything before the n-th argument. For example, if the
-# command was "search foo bar a b c", start(2) will be "search foo"
-#
-# ===================================================================
-# And this is a little reference for common ranger functions and objects:
-#
-# self.fm: A reference to the "fm" object which contains most information
-# about ranger.
-# self.fm.notify(string): Print the given string on the screen.
-# self.fm.notify(string, bad=True): Print the given string in RED.
-# self.fm.reload_cwd(): Reload the current working directory.
-# self.fm.thisdir: The current working directory. (A File object.)
-# self.fm.thisfile: The current file. (A File object too.)
-# self.fm.thistab.get_selection(): A list of all selected files.
-# self.fm.execute_console(string): Execute the string as a ranger command.
-# self.fm.open_console(string): Open the console with the given string
-# already typed in for you.
-# self.fm.move(direction): Moves the cursor in the given direction, which
-# can be something like down=3, up=5, right=1, left=1, to=6, ...
-#
-# File objects (for example self.fm.thisfile) have these useful attributes and
-# methods:
-#
-# cf.path: The path to the file.
-# cf.basename: The base name only.
-# cf.load_content(): Force a loading of the directories content (which
-# obviously works with directories only)
-# cf.is_directory: True/False depending on whether it's a directory.
-#
-# For advanced commands it is unavoidable to dive a bit into the source code
-# of ranger.
-# ===================================================================
-
-from ranger.api.commands import *
-
-class alias(Command):
- """:alias <newcommand> <oldcommand>
-
- Copies the oldcommand as newcommand.
- """
-
- context = 'browser'
- resolve_macros = False
-
- def execute(self):
- if not self.arg(1) or not self.arg(2):
- self.fm.notify('Syntax: alias <newcommand> <oldcommand>', bad=True)
- else:
- self.fm.commands.alias(self.arg(1), self.rest(2))
-
-class cd(Command):
- """:cd [-r] <dirname>
-
- The cd command changes the directory.
- The command 'cd -' is equivalent to typing ``.
- Using the option "-r" will get you to the real path.
- """
-
- def execute(self):
- import os.path
- if self.arg(1) == '-r':
- self.shift()
- destination = os.path.realpath(self.rest(1))
- if os.path.isfile(destination):
- self.fm.select_file(destination)
- return
- else:
- destination = self.rest(1)
-
- if not destination:
- destination = '~'
-
- if destination == '-':
- self.fm.enter_bookmark('`')
- else:
- self.fm.cd(destination)
-
- def tab(self):
- import os
- from os.path import dirname, basename, expanduser, join
-
- cwd = self.fm.thisdir.path
- rel_dest = self.rest(1)
-
- bookmarks = [v.path for v in self.fm.bookmarks.dct.values()
- if rel_dest in v.path ]
-
- # expand the tilde into the user directory
- if rel_dest.startswith('~'):
- rel_dest = expanduser(rel_dest)
-
- # define some shortcuts
- abs_dest = join(cwd, rel_dest)
- abs_dirname = dirname(abs_dest)
- rel_basename = basename(rel_dest)
- rel_dirname = dirname(rel_dest)
-
- try:
- # are we at the end of a directory?
- if rel_dest.endswith('/') or rel_dest == '':
- _, dirnames, _ = next(os.walk(abs_dest))
-
- # are we in the middle of the filename?
- else:
- _, dirnames, _ = next(os.walk(abs_dirname))
- dirnames = [dn for dn in dirnames \
- if dn.startswith(rel_basename)]
- except (OSError, StopIteration):
- # os.walk found nothing
- pass
- else:
- dirnames.sort()
- if self.fm.settings.cd_bookmarks:
- dirnames = bookmarks + dirnames
-
- # no results, return None
- if len(dirnames) == 0:
- return
-
- # one result. since it must be a directory, append a slash.
- if len(dirnames) == 1:
- return self.start(1) + join(rel_dirname, dirnames[0]) + '/'
-
- # more than one result. append no slash, so the user can
- # manually type in the slash to advance into that directory
- return (self.start(1) + join(rel_dirname, dirname) for dirname in dirnames)
-
-
-class chain(Command):
- """:chain <command1>; <command2>; ...
-
- Calls multiple commands at once, separated by semicolons.
- """
- def execute(self):
- for command in self.rest(1).split(";"):
- self.fm.execute_console(command)
-
-
-class shell(Command):
- escape_macros_for_shell = True
-
- def execute(self):
- if self.arg(1) and self.arg(1)[0] == '-':
- flags = self.arg(1)[1:]
- command = self.rest(2)
- else:
- flags = ''
- command = self.rest(1)
-
- if not command and 'p' in flags:
- command = 'cat %f'
- if command:
- if '%' in command:
- command = self.fm.substitute_macros(command, escape=True)
- self.fm.execute_command(command, flags=flags)
-
- def tab(self):
- from ranger.ext.get_executables import get_executables
- if self.arg(1) and self.arg(1)[0] == '-':
- command = self.rest(2)
- else:
- command = self.rest(1)
- start = self.line[0:len(self.line) - len(command)]
-
- try:
- position_of_last_space = command.rindex(" ")
- except ValueError:
- return (start + program + ' ' for program \
- in get_executables() if program.startswith(command))
- if position_of_last_space == len(command) - 1:
- selection = self.fm.thistab.get_selection()
- if len(selection) == 1:
- return self.line + selection[0].shell_escaped_basename + ' '
- else:
- return self.line + '%s '
- else:
- before_word, start_of_word = self.line.rsplit(' ', 1)
- return (before_word + ' ' + file.shell_escaped_basename \
- for file in self.fm.thisdir.files \
- if file.shell_escaped_basename.startswith(start_of_word))
-
-class open_with(Command):
- def execute(self):
- app, flags, mode = self._get_app_flags_mode(self.rest(1))
- self.fm.execute_file(
- files = [f for f in self.fm.thistab.get_selection()],
- app = app,
- flags = flags,
- mode = mode)
-
- def tab(self):
- return self._tab_through_executables()
-
- def _get_app_flags_mode(self, string):
- """Extracts the application, flags and mode from a string.
-
- examples:
- "mplayer f 1" => ("mplayer", "f", 1)
- "aunpack 4" => ("aunpack", "", 4)
- "p" => ("", "p", 0)
- "" => None
- """
-
- app = ''
- flags = ''
- mode = 0
- split = string.split()
-
- if len(split) == 0:
- pass
-
- elif len(split) == 1:
- part = split[0]
- if self._is_app(part):
- app = part
- elif self._is_flags(part):
- flags = part
- elif self._is_mode(part):
- mode = part
-
- elif len(split) == 2:
- part0 = split[0]
- part1 = split[1]
-
- if self._is_app(part0):
- app = part0
- if self._is_flags(part1):
- flags = part1
- elif self._is_mode(part1):
- mode = part1
- elif self._is_flags(part0):
- flags = part0
- if self._is_mode(part1):
- mode = part1
- elif self._is_mode(part0):
- mode = part0
- if self._is_flags(part1):
- flags = part1
-
- elif len(split) >= 3:
- part0 = split[0]
- part1 = split[1]
- part2 = split[2]
-
- if self._is_app(part0):
- app = part0
- if self._is_flags(part1):
- flags = part1
- if self._is_mode(part2):
- mode = part2
- elif self._is_mode(part1):
- mode = part1
- if self._is_flags(part2):
- flags = part2
- elif self._is_flags(part0):
- flags = part0
- if self._is_mode(part1):
- mode = part1
- elif self._is_mode(part0):
- mode = part0
- if self._is_flags(part1):
- flags = part1
-
- return app, flags, int(mode)
-
- def _is_app(self, arg):
- return not self._is_flags(arg) and not arg.isdigit()
-
- def _is_flags(self, arg):
- from ranger.core.runner import ALLOWED_FLAGS
- return all(x in ALLOWED_FLAGS for x in arg)
-
- def _is_mode(self, arg):
- return all(x in '0123456789' for x in arg)
-
-
-class set_(Command):
- """:set <option name>=<python expression>
-
- Gives an option a new value.
- """
- name = 'set' # don't override the builtin set class
- def execute(self):
- name = self.arg(1)
- name, value, _ = self.parse_setting_line()
- self.fm.set_option_from_string(name, value)
-
- def tab(self):
- from ranger.gui.colorscheme import get_all_colorschemes
- name, value, name_done = self.parse_setting_line()
- settings = self.fm.settings
- if not name:
- return sorted(self.firstpart + setting for setting in settings)
- if not value and not name_done:
- return (self.firstpart + setting for setting in settings \
- if setting.startswith(name))
- if not value:
- # Cycle through colorschemes when name, but no value is specified
- if name == "colorscheme":
- return (self.firstpart + colorscheme for colorscheme \
- in get_all_colorschemes())
- return self.firstpart + str(settings[name])
- if bool in settings.types_of(name):
- if 'true'.startswith(value.lower()):
- return self.firstpart + 'True'
- if 'false'.startswith(value.lower()):
- return self.firstpart + 'False'
- # Tab complete colorscheme values if incomplete value is present
- if name == "colorscheme":
- return (self.firstpart + colorscheme for colorscheme \
- in get_all_colorschemes() if colorscheme.startswith(value))
-
-
-class setlocal(set_):
- """:setlocal path=<python string> <option name>=<python expression>
-
- Gives an option a new value.
- """
- PATH_RE = re.compile(r'^\s*path="?(.*?)"?\s*$')
- def execute(self):
- import os.path
- match = self.PATH_RE.match(self.arg(1))
- if match:
- path = os.path.normpath(os.path.expanduser(match.group(1)))
- self.shift()
- elif self.fm.thisdir:
- path = self.fm.thisdir.path
- else:
- path = None
-
- if path:
- name = self.arg(1)
- name, value, _ = self.parse_setting_line()
- self.fm.set_option_from_string(name, value, localpath=path)
-
-
-class setintag(setlocal):
- """:setintag <tag or tags> <option name>=<option value>
-
- Sets an option for directories that are tagged with a specific tag.
- """
- def execute(self):
- tags = self.arg(1)
- self.shift()
- name, value, _ = self.parse_setting_line()
- self.fm.set_option_from_string(name, value, tags=tags)
-
-
-class default_linemode(Command):
- def execute(self):
- import re
- from ranger.container.fsobject import FileSystemObject
-
- if len(self.args) < 2:
- self.fm.notify("Usage: default_linemode [path=<regexp> | tag=<tag(s)>] <linemode>", bad=True)
-
- # Extract options like "path=..." or "tag=..." from the command line
- arg1 = self.arg(1)
- method = "always"
- argument = None
- if arg1.startswith("path="):
- method = "path"
- argument = re.compile(arg1[5:])
- self.shift()
- elif arg1.startswith("tag="):
- method = "tag"
- argument = arg1[4:]
- self.shift()
-
- # Extract and validate the line mode from the command line
- linemode = self.rest(1)
- if linemode not in FileSystemObject.linemode_dict:
- self.fm.notify("Invalid linemode: %s; should be %s" %
- (linemode, "/".join(FileSystemObject.linemode_dict)), bad=True)
-
- # Add the prepared entry to the fm.default_linemodes
- entry = [method, argument, linemode]
- self.fm.default_linemodes.appendleft(entry)
-
- # Redraw the columns
- if hasattr(self.fm.ui, "browser"):
- for col in self.fm.ui.browser.columns:
- col.need_redraw = True
-
- def tab(self):
- mode = self.arg(1)
- return (self.arg(0) + " " + linemode
- for linemode in self.fm.thisfile.linemode_dict.keys()
- if linemode.startswith(self.arg(1)))
-
-
-class quit(Command):
- """:quit
-
- Closes the current tab. If there is only one tab, quit the program.
- """
-
- def execute(self):
- if len(self.fm.tabs) <= 1:
- self.fm.exit()
- self.fm.tab_close()
-
-
-class quitall(Command):
- """:quitall
-
- Quits the program immediately.
- """
-
- def execute(self):
- self.fm.exit()
-
-
-class quit_bang(quitall):
- """:quit!
-
- Quits the program immediately.
- """
- name = 'quit!'
- allow_abbrev = False
-
-
-class terminal(Command):
- """:terminal
-
- Spawns an "x-terminal-emulator" starting in the current directory.
- """
- def execute(self):
- import os
- from ranger.ext.get_executables import get_executables
- command = os.environ.get('TERMCMD', os.environ.get('TERM'))
- if command not in get_executables():
- command = 'x-terminal-emulator'
- if command not in get_executables():
- command = 'xterm'
- self.fm.run(command, flags='f')
-
-
-class delete(Command):
- """:delete
-
- Tries to delete the selection.
-
- "Selection" is defined as all the "marked files" (by default, you
- can mark files with space or v). If there are no marked files,
- use the "current file" (where the cursor is)
-
- When attempting to delete non-empty directories or multiple
- marked files, it will require a confirmation.
- """
-
- allow_abbrev = False
-
- def execute(self):
- import os
- if self.rest(1):
- self.fm.notify("Error: delete takes no arguments! It deletes "
- "the selected file(s).", bad=True)
- return
-
- cwd = self.fm.thisdir
- cf = self.fm.thisfile
- if not cwd or not cf:
- self.fm.notify("Error: no file selected for deletion!", bad=True)
- return
-
- confirm = self.fm.settings.confirm_on_delete
- many_files = (cwd.marked_items or (cf.is_directory and not cf.is_link \
- and len(os.listdir(cf.path)) > 0))
-
- if confirm != 'never' and (confirm != 'multiple' or many_files):
- self.fm.ui.console.ask("Confirm deletion of: %s (y/N)" %
- ', '.join(f.relative_path for f in self.fm.thistab.get_selection()),
- self._question_callback, ('n', 'N', 'y', 'Y'))
- else:
- # no need for a confirmation, just delete
- for f in self.fm.tags.tags:
- if str(f).startswith(self.fm.thisfile.path):
- self.fm.tags.remove(f)
- self.fm.delete()
-
- def _question_callback(self, answer):
- if answer == 'y' or answer == 'Y':
- for f in self.fm.tags.tags:
- if str(f).startswith(self.fm.thisfile.path):
- self.fm.tags.remove(f)
- self.fm.delete()
-
-
-class mark_tag(Command):
- """:mark_tag [<tags>]
-
- Mark all tags that are tagged with either of the given tags.
- When leaving out the tag argument, all tagged files are marked.
- """
- do_mark = True
-
- def execute(self):
- cwd = self.fm.thisdir
- tags = self.rest(1).replace(" ","")
- if not self.fm.tags:
- return
- for fileobj in cwd.files:
- try:
- tag = self.fm.tags.tags[fileobj.realpath]
- except KeyError:
- continue
- if not tags or tag in tags:
- cwd.mark_item(fileobj, val=self.do_mark)
- self.fm.ui.status.need_redraw = True
- self.fm.ui.need_redraw = True
-
-
-class console(Command):
- """:console <command>
-
- Open the console with the given command.
- """
- def execute(self):
- position = None
- if self.arg(1)[0:2] == '-p':
- try:
- position = int(self.arg(1)[2:])
- self.shift()
- except:
- pass
- self.fm.open_console(self.rest(1), position=position)
-
-
-class load_copy_buffer(Command):
- """:load_copy_buffer
-
- Load the copy buffer from confdir/copy_buffer
- """
- copy_buffer_filename = 'copy_buffer'
- def execute(self):
- from ranger.container.file import File
- from os.path import exists
- try:
- fname = self.fm.confpath(self.copy_buffer_filename)
- f = open(fname, 'r')
- except:
- return self.fm.notify("Cannot open %s" % \
- (fname or self.copy_buffer_filename), bad=True)
- self.fm.copy_buffer = set(File(g) \
- for g in f.read().split("\n") if exists(g))
- f.close()
- self.fm.ui.redraw_main_column()
-
-
-class save_copy_buffer(Command):
- """:save_copy_buffer
-
- Save the copy buffer to confdir/copy_buffer
- """
- copy_buffer_filename = 'copy_buffer'
- def execute(self):
- fname = None
- try:
- fname = self.fm.confpath(self.copy_buffer_filename)
- f = open(fname, 'w')
- except:
- return self.fm.notify("Cannot open %s" % \
- (fname or self.copy_buffer_filename), bad=True)
- f.write("\n".join(f.path for f in self.fm.copy_buffer))
- f.close()
-
-
-class unmark_tag(mark_tag):
- """:unmark_tag [<tags>]
-
- Unmark all tags that are tagged with either of the given tags.
- When leaving out the tag argument, all tagged files are unmarked.
- """
- do_mark = False
-
-
-class mkdir(Command):
- """:mkdir <dirname>
-
- Creates a directory with the name <dirname>.
- """
-
- def execute(self):
- from os.path import join, expanduser, lexists
- from os import makedirs
-
- dirname = join(self.fm.thisdir.path, expanduser(self.rest(1)))
- if not lexists(dirname):
- makedirs(dirname)
- else:
- self.fm.notify("file/directory exists!", bad=True)
-
- def tab(self):
- return self._tab_directory_content()
-
-
-class touch(Command):
- """:touch <fname>
-
- Creates a file with the name <fname>.
- """
-
- resolve_macros = False
-
- def execute(self):
- from os.path import join, expanduser, lexists
-
- fname = join(self.fm.thisdir.path, expanduser(self.rest(1)))
- if not lexists(fname):
- open(fname, 'a').close()
- else:
- self.fm.notify("file/directory exists!", bad=True)
-
- def tab(self):
- return self._tab_directory_content()
-
-
-class edit(Command):
- """:edit <filename>
-
- Opens the specified file in vim
- """
-
- def execute(self):
- if not self.arg(1):
- self.fm.edit_file(self.fm.thisfile.path)
- else:
- self.fm.edit_file(self.rest(1))
-
- def tab(self):
- return self._tab_directory_content()
-
-
-class eval_(Command):
- """:eval [-q] <python code>
-
- Evaluates the python code.
- `fm' is a reference to the FM instance.
- To display text, use the function `p'.
-
- Examples:
- :eval fm
- :eval len(fm.directories)
- :eval p("Hello World!")
- """
- name = 'eval'
- resolve_macros = False
-
- def execute(self):
- if self.arg(1) == '-q':
- code = self.rest(2)
- quiet = True
- else:
- code = self.rest(1)
- quiet = False
- import ranger
- global cmd, fm, p, quantifier
- fm = self.fm
- cmd = self.fm.execute_console
- p = fm.notify
- quantifier = self.quantifier
- try:
- try:
- result = eval(code)
- except SyntaxError:
- exec(code)
- else:
- if result and not quiet:
- p(result)
- except Exception as err:
- p(err)
-
-
-class rename(Command):
- """:rename <newname>
-
- Changes the name of the currently highlighted file to <newname>
- """
-
- resolve_macros = False
-
- def execute(self):
- from ranger.container.file import File
- from os import access
-
- new_name = self.rest(1)
-
- tagged = {}
- old_name = self.fm.thisfile.relative_path
- for f in self.fm.tags.tags:
- if str(f).startswith(self.fm.thisfile.path):
- tagged[f] = self.fm.tags.tags[f]
- self.fm.tags.remove(f)
-
- if not new_name:
- return self.fm.notify('Syntax: rename <newname>', bad=True)
-
- if new_name == old_name:
- return
-
- if access(new_name, os.F_OK):
- return self.fm.notify("Can't rename: file already exists!", bad=True)
-
- if self.fm.rename(self.fm.thisfile, new_name):
- f = File(new_name)
- self.fm.thisdir.pointed_obj = f
- self.fm.thisfile = f
- for t in tagged:
- self.fm.tags.tags[t.replace(old_name,new_name)] = tagged[t]
- self.fm.tags.dump()
-
- def tab(self):
- return self._tab_directory_content()
-
-class rename_append(Command):
- """:rename_append
-
- Creates an open_console for the rename command, automatically placing the cursor before the file extension.
- """
-
- def execute(self):
- cf = self.fm.thisfile
- if cf.relative_path.find('.') != 0 and cf.relative_path.rfind('.') != -1 and not cf.is_directory:
- self.fm.open_console('rename ' + cf.relative_path, position=(7 + cf.relative_path.rfind('.')))
- else:
- self.fm.open_console('rename ' + cf.relative_path)
-
-class chmod(Command):
- """:chmod <octal number>
-
- Sets the permissions of the selection to the octal number.
-
- The octal number is between 0 and 777. The digits specify the
- permissions for the user, the group and others.
-
- A 1 permits execution, a 2 permits writing, a 4 permits reading.
- Add those numbers to combine them. So a 7 permits everything.
- """
-
- def execute(self):
- mode = self.rest(1)
- if not mode:
- mode = str(self.quantifier)
-
- try:
- mode = int(mode, 8)
- if mode < 0 or mode > 0o777:
- raise ValueError
- except ValueError:
- self.fm.notify("Need an octal number between 0 and 777!", bad=True)
- return
-
- for file in self.fm.thistab.get_selection():
- try:
- os.chmod(file.path, mode)
- except Exception as ex:
- self.fm.notify(ex)
-
- try:
- # reloading directory. maybe its better to reload the selected
- # files only.
- self.fm.thisdir.load_content()
- except:
- pass
-
-
-class bulkrename(Command):
- """:bulkrename
-
- This command opens a list of selected files in an external editor.
- After you edit and save the file, it will generate a shell script
- which does bulk renaming according to the changes you did in the file.
-
- This shell script is opened in an editor for you to review.
- After you close it, it will be executed.
- """
- def execute(self):
- import sys
- import tempfile
- from ranger.container.file import File
- from ranger.ext.shell_escape import shell_escape as esc
- py3 = sys.version_info[0] >= 3
-
- # Create and edit the file list
- filenames = [f.relative_path for f in self.fm.thistab.get_selection()]
- listfile = tempfile.NamedTemporaryFile(delete=False)
- listpath = listfile.name
-
- if py3:
- listfile.write("\n".join(filenames).encode("utf-8"))
- else:
- listfile.write("\n".join(filenames))
- listfile.close()
- self.fm.execute_file([File(listpath)], app='editor')
- listfile = open(listpath, 'r')
- new_filenames = listfile.read().split("\n")
- listfile.close()
- os.unlink(listpath)
- if all(a == b for a, b in zip(filenames, new_filenames)):
- self.fm.notify("No renaming to be done!")
- return
-
- # Generate script
- cmdfile = tempfile.NamedTemporaryFile()
- script_lines = []
- script_lines.append("# This file will be executed when you close the editor.\n")
- script_lines.append("# Please double-check everything, clear the file to abort.\n")
- script_lines.extend("mv -vi -- %s %s\n" % (esc(old), esc(new)) \
- for old, new in zip(filenames, new_filenames) if old != new)
- script_content = "".join(script_lines)
- if py3:
- cmdfile.write(script_content.encode("utf-8"))
- else:
- cmdfile.write(script_content)
- cmdfile.flush()
-
- # Open the script and let the user review it, then check if the script
- # was modified by the user
- self.fm.execute_file([File(cmdfile.name)], app='editor')
- cmdfile.seek(0)
- script_was_edited = (script_content != cmdfile.read())
-
- # Do the renaming
- self.fm.run(['/bin/sh', cmdfile.name], flags='w')
- cmdfile.close()
-
- # Retag the files, but only if the script wasn't changed during review,
- # because only then we know which are the source and destination files.
- if not script_was_edited:
- tags_changed = False
- for old, new in zip(filenames, new_filenames):
- if old != new:
- oldpath = self.fm.thisdir.path + '/' + old
- newpath = self.fm.thisdir.path + '/' + new
- if oldpath in self.fm.tags:
- old_tag = self.fm.tags.tags[oldpath]
- self.fm.tags.remove(oldpath)
- self.fm.tags.tags[newpath] = old_tag
- tags_changed = True
- if tags_changed:
- self.fm.tags.dump()
- else:
- fm.notify("files have not been retagged")
-
-class relink(Command):
- """:relink <newpath>
-
- Changes the linked path of the currently highlighted symlink to <newpath>
- """
-
- def execute(self):
- from ranger.container.file import File
-
- new_path = self.rest(1)
- cf = self.fm.thisfile
-
- if not new_path:
- return self.fm.notify('Syntax: relink <newpath>', bad=True)
-
- if not cf.is_link:
- return self.fm.notify('%s is not a symlink!' % cf.relative_path, bad=True)
-
- if new_path == os.readlink(cf.path):
- return
-
- try:
- os.remove(cf.path)
- os.symlink(new_path, cf.path)
- except OSError as err:
- self.fm.notify(err)
-
- self.fm.reset()
- self.fm.thisdir.pointed_obj = cf
- self.fm.thisfile = cf
-
- def tab(self):
- if not self.rest(1):
- return self.line+os.readlink(self.fm.thisfile.path)
- else:
- return self._tab_directory_content()
-
-
-class help_(Command):
- """:help
-
- Display ranger's manual page.
- """
- name = 'help'
- def execute(self):
- def callback(answer):
- if answer == "q":
- return
- elif answer == "m":
- self.fm.display_help()
- elif answer == "c":
- self.fm.dump_commands()
- elif answer == "k":
- self.fm.dump_keybindings()
- elif answer == "s":
- self.fm.dump_settings()
-
- c = self.fm.ui.console.ask("View [m]an page, [k]ey bindings,"
- " [c]ommands or [s]ettings? (press q to abort)", callback, list("mkcsq") + [chr(27)])
-
-
-class copymap(Command):
- """:copymap <keys> <newkeys1> [<newkeys2>...]
-
- Copies a "browser" keybinding from <keys> to <newkeys>
- """
- context = 'browser'
-
- def execute(self):
- if not self.arg(1) or not self.arg(2):
- return self.fm.notify("Not enough arguments", bad=True)
-
- for arg in self.args[2:]:
- self.fm.ui.keymaps.copy(self.context, self.arg(1), arg)
-
-
-class copypmap(copymap):
- """:copypmap <keys> <newkeys1> [<newkeys2>...]
-
- Copies a "pager" keybinding from <keys> to <newkeys>
- """
- context = 'pager'
-
-
-class copycmap(copymap):
- """:copycmap <keys> <newkeys1> [<newkeys2>...]
-
- Copies a "console" keybinding from <keys> to <newkeys>
- """
- context = 'console'
-
-
-class copytmap(copymap):
- """:copycmap <keys> <newkeys1> [<newkeys2>...]
-
- Copies a "taskview" keybinding from <keys> to <newkeys>
- """
- context = 'taskview'
-
-
-class unmap(Command):
- """:unmap <keys> [<keys2>, ...]
-
- Remove the given "browser" mappings
- """
- context = 'browser'
-
- def execute(self):
- for arg in self.args[1:]:
- self.fm.ui.keymaps.unbind(self.context, arg)
-
-
-class cunmap(unmap):
- """:cunmap <keys> [<keys2>, ...]
-
- Remove the given "console" mappings
- """
- context = 'browser'
-
-
-class punmap(unmap):
- """:punmap <keys> [<keys2>, ...]
-
- Remove the given "pager" mappings
- """
- context = 'pager'
-
-
-class tunmap(unmap):
- """:tunmap <keys> [<keys2>, ...]
-
- Remove the given "taskview" mappings
- """
- context = 'taskview'
-
-
-class map_(Command):
- """:map <keysequence> <command>
-
- Maps a command to a keysequence in the "browser" context.
-
- Example:
- map j move down
- map J move down 10
- """
- name = 'map'
- context = 'browser'
- resolve_macros = False
-
- def execute(self):
- if not self.arg(1) or not self.arg(2):
- return self.fm.notify("Not enough arguments", bad=True)
-
- self.fm.ui.keymaps.bind(self.context, self.arg(1), self.rest(2))
-
-
-class cmap(map_):
- """:cmap <keysequence> <command>
-
- Maps a command to a keysequence in the "console" context.
-
- Example:
- cmap <ESC> console_close
- cmap <C-x> console_type test
- """
- context = 'console'
-
-
-class tmap(map_):
- """:tmap <keysequence> <command>
-
- Maps a command to a keysequence in the "taskview" context.
- """
- context = 'taskview'
-
-
-class pmap(map_):
- """:pmap <keysequence> <command>
-
- Maps a command to a keysequence in the "pager" context.
- """
- context = 'pager'
-
-
-class scout(Command):
- """:scout [-FLAGS] <pattern>
-
- Swiss army knife command for searching, traveling and filtering files.
- The command takes various flags as arguments which can be used to
- influence its behaviour:
-
- -a = automatically open a file on unambiguous match
- -e = open the selected file when pressing enter
- -f = filter files that match the current search pattern
- -g = interpret pattern as a glob pattern
- -i = ignore the letter case of the files
- -k = keep the console open when changing a directory with the command
- -l = letter skipping; e.g. allow "rdme" to match the file "readme"
- -m = mark the matching files after pressing enter
- -M = unmark the matching files after pressing enter
- -p = permanent filter: hide non-matching files after pressing enter
- -s = smart case; like -i unless pattern contains upper case letters
- -t = apply filter and search pattern as you type
- -v = inverts the match
-
- Multiple flags can be combined. For example, ":scout -gpt" would create
- a :filter-like command using globbing.
- """
- AUTO_OPEN = 'a'
- OPEN_ON_ENTER = 'e'
- FILTER = 'f'
- SM_GLOB = 'g'
- IGNORE_CASE = 'i'
- KEEP_OPEN = 'k'
- SM_LETTERSKIP = 'l'
- MARK = 'm'
- UNMARK = 'M'
- PERM_FILTER = 'p'
- SM_REGEX = 'r'
- SMART_CASE = 's'
- AS_YOU_TYPE = 't'
- INVERT = 'v'
-
- def __init__(self, *args, **kws):
- Command.__init__(self, *args, **kws)
- self._regex = None
- self.flags, self.pattern = self.parse_flags()
-
- def execute(self):
- thisdir = self.fm.thisdir
- flags = self.flags
- pattern = self.pattern
- regex = self._build_regex()
- count = self._count(move=True)
-
- self.fm.thistab.last_search = regex
- self.fm.set_search_method(order="search")
-
- if self.MARK in flags or self.UNMARK in flags:
- value = flags.find(self.MARK) > flags.find(self.UNMARK)
- if self.FILTER in flags:
- for f in thisdir.files:
- thisdir.mark_item(f, value)
- else:
- for f in thisdir.files:
- if regex.search(f.relative_path):
- thisdir.mark_item(f, value)
-
- if self.PERM_FILTER in flags:
- thisdir.filter = regex if pattern else None
-
- # clean up:
- self.cancel()
-
- if self.OPEN_ON_ENTER in flags or \
- self.AUTO_OPEN in flags and count == 1:
- if os.path.exists(pattern):
- self.fm.cd(pattern)
- else:
- self.fm.move(right=1)
-
- if self.KEEP_OPEN in flags and thisdir != self.fm.thisdir:
- # reopen the console:
- if not pattern:
- self.fm.open_console(self.line)
- else:
- self.fm.open_console(self.line[0:-len(pattern)])
-
- if self.quickly_executed and thisdir != self.fm.thisdir and pattern != "..":
- self.fm.block_input(0.5)
-
- def cancel(self):
- self.fm.thisdir.temporary_filter = None
- self.fm.thisdir.refilter()
-
- def quick(self):
- asyoutype = self.AS_YOU_TYPE in self.flags
- if self.FILTER in self.flags:
- self.fm.thisdir.temporary_filter = self._build_regex()
- if self.PERM_FILTER in self.flags and asyoutype:
- self.fm.thisdir.filter = self._build_regex()
- if self.FILTER in self.flags or self.PERM_FILTER in self.flags:
- self.fm.thisdir.refilter()
- if self._count(move=asyoutype) == 1 and self.AUTO_OPEN in self.flags:
- return True
- return False
-
- def tab(self):
- self._count(move=True, offset=1)
-
- def _build_regex(self):
- if self._regex is not None:
- return self._regex
-
- frmat = "%s"
- flags = self.flags
- pattern = self.pattern
-
- if pattern == ".":
- return re.compile("")
-
- # Handle carets at start and dollar signs at end separately
- if pattern.startswith('^'):
- pattern = pattern[1:]
- frmat = "^" + frmat
- if pattern.endswith('$'):
- pattern = pattern[:-1]
- frmat += "$"
-
- # Apply one of the search methods
- if self.SM_REGEX in flags:
- regex = pattern
- elif self.SM_GLOB in flags:
- regex = re.escape(pattern).replace("\\*", ".*").replace("\\?", ".")
- elif self.SM_LETTERSKIP in flags:
- regex = ".*".join(re.escape(c) for c in pattern)
- else:
- regex = re.escape(pattern)
-
- regex = frmat % regex
-
- # Invert regular expression if necessary
- if self.INVERT in flags:
- regex = "^(?:(?!%s).)*$" % regex
-
- # Compile Regular Expression
- options = re.LOCALE | re.UNICODE
- if self.IGNORE_CASE in flags or self.SMART_CASE in flags and \
- pattern.islower():
- options |= re.IGNORECASE
- try:
- self._regex = re.compile(regex, options)
- except:
- self._regex = re.compile("")
- return self._regex
-
- def _count(self, move=False, offset=0):
- count = 0
- cwd = self.fm.thisdir
- pattern = self.pattern
-
- if not pattern:
- return 0
- if pattern == '.':
- return 0
- if pattern == '..':
- return 1
-
- deq = deque(cwd.files)
- deq.rotate(-cwd.pointer - offset)
- i = offset
- regex = self._build_regex()
- for fsobj in deq:
- if regex.search(fsobj.relative_path):
- count += 1
- if move and count == 1:
- cwd.move(to=(cwd.pointer + i) % len(cwd.files))
- self.fm.thisfile = cwd.pointed_obj
- if count > 1:
- return count
- i += 1
-
- return count == 1
-
-
-class filter_inode_type(Command):
- """
- :filter_inode_type [dfl]
-
- Displays only the files of specified inode type. Parameters
- can be combined.
-
- d display directories
- f display files
- l display links
- """
-
- FILTER_DIRS = 'd'
- FILTER_FILES = 'f'
- FILTER_LINKS = 'l'
-
- def execute(self):
- if not self.arg(1):
- self.fm.thisdir.inode_type_filter = None
- else:
- self.fm.thisdir.inode_type_filter = lambda file: (
- True if ((self.FILTER_DIRS in self.arg(1) and file.is_directory) or
- (self.FILTER_FILES in self.arg(1) and file.is_file and not file.is_link) or
- (self.FILTER_LINKS in self.arg(1) and file.is_link)) else False)
- self.fm.thisdir.refilter()
-
-
-class grep(Command):
- """:grep <string>
-
- Looks for a string in all marked files or directories
- """
-
- def execute(self):
- if self.rest(1):
- action = ['grep', '--line-number']
- action.extend(['-e', self.rest(1), '-r'])
- action.extend(f.path for f in self.fm.thistab.get_selection())
- self.fm.execute_command(action, flags='p')
-
-
-# Version control commands
-# --------------------------------
-class stage(Command):
- """
- :stage
-
- Stage selected files for the corresponding version control system
- """
- def execute(self):
- from ranger.ext.vcs import VcsError
-
- filelist = [f.path for f in self.fm.thistab.get_selection()]
- self.fm.thisdir.vcs_outdated = True
-# for f in self.fm.thistab.get_selection():
-# f.vcs_outdated = True
-
- try:
- self.fm.thisdir.vcs.add(filelist)
- except VcsError:
- self.fm.notify("Could not stage files.")
-
- self.fm.reload_cwd()
-
-
-class unstage(Command):
- """
- :unstage
-
- Unstage selected files for the corresponding version control system
- """
- def execute(self):
- from ranger.ext.vcs import VcsError
-
- filelist = [f.path for f in self.fm.thistab.get_selection()]
- self.fm.thisdir.vcs_outdated = True
-# for f in self.fm.thistab.get_selection():
-# f.vcs_outdated = True
-
- try:
- self.fm.thisdir.vcs.reset(filelist)
- except VcsError:
- self.fm.notify("Could not unstage files.")
-
- self.fm.reload_cwd()
-
-
-class diff(Command):
- """
- :diff
-
- Displays a diff of selected files against the last committed version
- """
- def execute(self):
- from ranger.ext.vcs import VcsError
- import tempfile
-
- L = self.fm.thistab.get_selection()
- if len(L) == 0: return
-
- filelist = [f.path for f in L]
- vcs = L[0].vcs
-
- diff = vcs.get_raw_diff(filelist=filelist)
- if len(diff.strip()) > 0:
- tmp = tempfile.NamedTemporaryFile()
- tmp.write(diff.encode('utf-8'))
- tmp.flush()
-
- pager = os.environ.get('PAGER', ranger.DEFAULT_PAGER)
- self.fm.run([pager, tmp.name])
- else:
- raise Exception("diff is empty")
-
-
-class log(Command):
- """
- :log
-
- Displays the log of the current repo or files
- """
- def execute(self):
- from ranger.ext.vcs import VcsError
- import tempfile
-
- L = self.fm.thistab.get_selection()
- if len(L) == 0: return
-
- filelist = [f.path for f in L]
- vcs = L[0].vcs
-
- log = vcs.get_raw_log(filelist=filelist)
- tmp = tempfile.NamedTemporaryFile()
- tmp.write(log.encode('utf-8'))
- tmp.flush()
-
- pager = os.environ.get('PAGER', ranger.DEFAULT_PAGER)
- self.fm.run([pager, tmp.name])
-
-class flat(Command):
- """
- :flat <level>
-
- Flattens the directory view up to the specified level.
-
- -1 fully flattened
- 0 remove flattened view
- """
-
- def execute(self):
- try:
- level = self.rest(1)
- level = int(level)
- except ValueError:
- level = self.quantifier
- if level < -1:
- self.fm.notify("Need an integer number (-1, 0, 1, ...)", bad=True)
- self.fm.thisdir.unload()
- self.fm.thisdir.flat = level
- self.fm.thisdir.load_content()
-
-
-# Metadata commands
-# --------------------------------
-
-class prompt_metadata(Command):
- """
- :prompt_metadata <key1> [<key2> [<key3> ...]]
-
- Prompt the user to input metadata for multiple keys in a row.
- """
-
- _command_name = "meta"
- _console_chain = None
- def execute(self):
- prompt_metadata._console_chain = self.args[1:]
- self._process_command_stack()
-
- def _process_command_stack(self):
- if prompt_metadata._console_chain:
- key = prompt_metadata._console_chain.pop()
- self._fill_console(key)
- else:
- for col in self.fm.ui.browser.columns:
- col.need_redraw = True
-
- def _fill_console(self, key):
- metadata = self.fm.metadata.get_metadata(self.fm.thisfile.path)
- if key in metadata and metadata[key]:
- existing_value = metadata[key]
- else:
- existing_value = ""
- text = "%s %s %s" % (self._command_name, key, existing_value)
- self.fm.open_console(text, position=len(text))
-
-
-class meta(prompt_metadata):
- """
- :meta <key> [<value>]
-
- Change metadata of a file. Deletes the key if value is empty.
- """
-
- def execute(self):
- key = self.arg(1)
- value = self.rest(1)
- update_dict = dict()
- update_dict[key] = self.rest(2)
- selection = self.fm.thistab.get_selection()
- for f in selection:
- self.fm.metadata.set_metadata(f.path, update_dict)
- self._process_command_stack()
-
- def tab(self):
- key = self.arg(1)
- metadata = self.fm.metadata.get_metadata(self.fm.thisfile.path)
- if key in metadata and metadata[key]:
- return [" ".join([self.arg(0), self.arg(1), metadata[key]])]
- else:
- return [self.arg(0) + " " + key for key in sorted(metadata)
- if key.startswith(self.arg(1))]
-
-
-class linemode(default_linemode):
- """
- :linemode <mode>
-
- Change what is displayed as a filename.
-
- - "mode" may be any of the defined linemodes (see: ranger.core.linemode).
- "normal" is mapped to "filename".
- """
-
- def execute(self):
- mode = self.arg(1)
-
- if mode == "normal":
- mode = DEFAULT_LINEMODE
-
- if mode not in self.fm.thisfile.linemode_dict:
- self.fm.notify("Unhandled linemode: `%s'" % mode, bad=True)
- return
-
- self.fm.thisdir._set_linemode_of_children(mode)
-
- # Ask the browsercolumns to redraw
- for col in self.fm.ui.browser.columns:
- col.need_redraw = True
diff --git a/dotfiles/.config/ranger/rc.conf b/dotfiles/.config/ranger/rc.conf
deleted file mode 100644
index fb6c2c2..0000000
--- a/dotfiles/.config/ranger/rc.conf
+++ /dev/null
@@ -1,466 +0,0 @@
-###SETTINGS###
-
-set column_ratios 1,3,2
-#set hidden_filter ^\.|\.(?:pyc|pyo|bak|swp)$|^lost\+found$|^__(py)?cache__$
-#set hidden_filter ^\.|\.(?:pyc|vrb|pyo|lof|bak|swp|aux|log|nav|out|snm|toc|bcf|run\.xml|synctex\.gz|blg|bbl)$|^lost\+found$|^__(py)?cache__$
-set show_hidden false
-set confirm_on_delete multiple
-set preview_script ~/.config/ranger/scope.sh
-set use_preview_script true
-set automatically_count_files true
-set open_all_images true
-set vcs_aware false
-set vcs_backend_git enabled
-set vcs_backend_hg disabled
-set vcs_backend_bzr disabled
-set preview_images true
-set preview_images_method kitty
-set unicode_ellipsis false
-set show_hidden_bookmarks false
-set preview_files true
-set preview_directories true
-set collapse_preview true
-set save_console_history false
-set status_bar_on_top false
-set draw_progress_bar_in_status_bar true
-set draw_borders both
-set dirname_in_tabs true
-set mouse_enabled true
-set display_size_in_main_column true
-set display_size_in_status_bar true
-set display_tags_in_all_columns true
-set update_title false
-set update_tmux_title true
-set shorten_title 3
-set tilde_in_titlebar true
-set max_history_size 20
-set max_console_history_size 50
-set scroll_offset 8
-set flushinput true
-set padding_right true
-set autosave_bookmarks false
-set autoupdate_cumulative_size false
-set show_cursor false
-set sort natural
-set sort_reverse false
-set sort_case_insensitive true
-set sort_directories_first true
-set sort_unicode false
-set xterm_alt_key false
-set cd_bookmarks false
-set preview_max_size 0
-set show_selection_in_titlebar true
-set idle_delay 2000
-set metadata_deep_search false
-
-
-###ALIASES###
-alias e edit
-alias q quit
-alias q! quitall
-alias qa quitall
-alias qall quitall
-alias setl setlocal
-
-alias filter scout -prt
-alias find scout -aeit
-alias mark scout -mr
-alias unmark scout -Mr
-alias search scout -rs
-alias search_inc scout -rts
-alias travel scout -aefiklst
-
-
-###BASIC KEYS###
-
-#BASIC
-map Q quitall
-map q quit
-copymap q ZZ ZQ
-
-map R reload_cwd
-map <C-r> reset
-map <C-l> redraw_window
-map <C-c> abort
-map <esc> change_mode normal
-
-map i display_file
-map ? help
-map W display_log
-map w taskview_open
-map ss shell setsid $TERMINAL >/dev/null 2>&1 &
-map S shell $SHELL
-
-map : console
-map ; console
-map ! console shell%space
-map @ console -p6 shell %s
-map # console shell -p%space
-map r chain draw_possible_programs; console open_with%space
-map f console find%space
-map cd console cd%space
-
-
-# Tagging / Marking
-map at tag_toggle
-map ut tag_remove
-map "<any> tag_toggle tag=%any
-map <Space> mark_files toggle=True
-map va mark_files all=True toggle=True
-map uv mark_files all=True val=False
-map vs toggle_visual_mode
-map uV toggle_visual_mode reverse=True
-
-
-# In case you work on a keyboard with dvorak layout
-map <UP> move up=1
-map <DOWN> move down=1
-map <LEFT> move left=1
-map <RIGHT> move right=1
-map <HOME> move to=0
-map <END> move to=-1
-map <PAGEDOWN> move down=1 pages=True
-map <PAGEUP> move up=1 pages=True
-map <CR> move right=1
-map <DELETE> console delete
-map <INSERT> console touch%space
-
-
-# VIM-like
-copymap <UP> k
-copymap <DOWN> j
-copymap <LEFT> h
-copymap <RIGHT> l
-copymap <HOME> gg
-copymap <END> G
-copymap <PAGEDOWN> <C-F>
-copymap <PAGEUP> <C-B>
-
-map <C-D> move down=0.5 pages=True
-map <C-U> move up=0.5 pages=True
-
-
-# Jumping around
-map H history_go -1
-map L history_go 1
-map ] move_parent 1
-map [ move_parent -1
-map } traverse
-
-#DEFAULT MOVEMENT
-
-# Tabs
-map <C-n> tab_new ~
-map <C-w> tab_close
-map J tab_move 1
-map K tab_move -1
-map <A-Right> tab_move 1
-map <A-Left> tab_move -1
-map uq tab_restore
-map <a-1> tab_open 1
-map <a-2> tab_open 2
-map <a-3> tab_open 3
-map <a-4> tab_open 4
-map <a-5> tab_open 5
-map <a-6> tab_open 6
-map <a-7> tab_open 7
-map <a-8> tab_open 8
-map <a-9> tab_open 9
-
-
-# External Programs
-map E edit
-map du shell -p du --max-depth=1 -h --apparent-size
-map dU shell -p du --max-depth=1 -h --apparent-size | sort -rh
-map yp shell -f echo -n %%d/%%f | xsel -i; xsel -o | xsel -i -b
-map yd shell -f echo -n %%d | xsel -i; xsel -o | xsel -i -b
-map yn shell -f echo -n %%f | xsel -i; xsel -o | xsel -i -b
-
-
-# Filesystem Operations
-map = chmod
-map cw console rename%space
-map aa rename_append
-map A eval fm.open_console('rename ' + fm.thisfile.relative_path)
-map I eval fm.open_console('rename ' + fm.thisfile.relative_path, position=7)
-map pp paste
-map po paste overwrite=True
-map pP paste append=True
-map pO paste overwrite=True append=True
-map pl paste_symlink relative=False
-map pL paste_symlink relative=True
-map phl paste_hardlink
-map pht paste_hardlinked_subtree
-
-map dD console delete
-
-map dd cut
-map ud uncut
-map da cut mode=add
-map dr cut mode=remove
-
-map yy copy
-map uy uncut
-map ya copy mode=add
-map yr copy mode=remove
-
-
-# Temporary workarounds
-map dgg eval fm.cut(dirarg=dict(to=0), narg=quantifier)
-map dG eval fm.cut(dirarg=dict(to=-1), narg=quantifier)
-map dj eval fm.cut(dirarg=dict(down=1), narg=quantifier)
-map dk eval fm.cut(dirarg=dict(up=1), narg=quantifier)
-map ygg eval fm.copy(dirarg=dict(to=0), narg=quantifier)
-map yG eval fm.copy(dirarg=dict(to=-1), narg=quantifier)
-map yj eval fm.copy(dirarg=dict(down=1), narg=quantifier)
-map yk eval fm.copy(dirarg=dict(up=1), narg=quantifier)
-
-
-# Searching
-map / console search%space
-map n search_next
-map N search_next forward=False
-map ct search_next order=tag
-map cs search_next order=size
-map ci search_next order=mimetype
-map cc search_next order=ctime
-map cm search_next order=mtime
-map ca search_next order=atime
-
-
-# Sorting
-map tr toggle_option sort_reverse
-map tz set sort=random
-map ts chain set sort=size; set sort_reverse=False
-map tb chain set sort=basename; set sort_reverse=False
-map tn chain set sort=natural; set sort_reverse=False
-map tm chain set sort=mtime; set sort_reverse=False
-map tc chain set sort=ctime; set sort_reverse=False
-map ta chain set sort=atime; set sort_reverse=False
-map tt chain set sort=type; set sort_reverse=False
-map te chain set sort=extension; set sort_reverse=False
-
-map tS chain set sort=size; set sort_reverse=True
-map tB chain set sort=basename; set sort_reverse=True
-map tN chain set sort=natural; set sort_reverse=True
-map tM chain set sort=mtime; set sort_reverse=True
-map tC chain set sort=ctime; set sort_reverse=True
-map tA chain set sort=atime; set sort_reverse=True
-map tT chain set sort=type; set sort_reverse=True
-map tE chain set sort=extension; set sort_reverse=True
-
-map dc get_cumulative_size
-
-
-# Settings
-map zc toggle_option collapse_preview
-map zd toggle_option sort_directories_first
-map zh toggle_option show_hidden
-map <C-h> toggle_option show_hidden
-map zi toggle_option flushinput
-map zm toggle_option mouse_enabled
-map zp toggle_option preview_files
-map zP toggle_option preview_directories
-map zs toggle_option sort_case_insensitive
-map zu toggle_option autoupdate_cumulative_size
-map zv toggle_option use_preview_script
-map zf console filter%space
-
-
-# Bookmarks
-#map `<any> enter_bookmark %any
-#map '<any> enter_bookmark %any
-#map mm<any> set_bookmark %any
-#map um<any> unset_bookmark %any
-
-#map m<bg> draw_bookmarks
-#copymap m<bg> um<bg> `<bg> '<bg>
-
-
-# Generate all the chmod bindings with some python help:
-eval for arg in "rwxXst": cmd("map +u{0} shell -f chmod u+{0} %s".format(arg))
-eval for arg in "rwxXst": cmd("map +g{0} shell -f chmod g+{0} %s".format(arg))
-eval for arg in "rwxXst": cmd("map +o{0} shell -f chmod o+{0} %s".format(arg))
-eval for arg in "rwxXst": cmd("map +a{0} shell -f chmod a+{0} %s".format(arg))
-eval for arg in "rwxXst": cmd("map +{0} shell -f chmod u+{0} %s".format(arg))
-
-eval for arg in "rwxXst": cmd("map -u{0} shell -f chmod u-{0} %s".format(arg))
-eval for arg in "rwxXst": cmd("map -g{0} shell -f chmod g-{0} %s".format(arg))
-eval for arg in "rwxXst": cmd("map -o{0} shell -f chmod o-{0} %s".format(arg))
-eval for arg in "rwxXst": cmd("map -a{0} shell -f chmod a-{0} %s".format(arg))
-eval for arg in "rwxXst": cmd("map -{0} shell -f chmod u-{0} %s".format(arg))
-
-
-###CONSOLE KEYS###
-# Basic
-cmap <tab> eval fm.ui.console.tab()
-cmap <s-tab> eval fm.ui.console.tab(-1)
-cmap <ESC> eval fm.ui.console.close()
-cmap <CR> eval fm.ui.console.execute()
-#cmap <C-l> redraw_window
-
-copycmap <ESC> <C-c>
-copycmap <CR> <C-j>
-
-
-# Move around
-cmap <up> eval fm.ui.console.history_move(-1)
-cmap <down> eval fm.ui.console.history_move(1)
-cmap <left> eval fm.ui.console.move(left=1)
-cmap <right> eval fm.ui.console.move(right=1)
-cmap <home> eval fm.ui.console.move(right=0, absolute=True)
-cmap <end> eval fm.ui.console.move(right=-1, absolute=True)
-
-
-# Line Editing
-cmap <backspace> eval fm.ui.console.delete(-1)
-cmap <delete> eval fm.ui.console.delete(0)
-cmap <C-w> eval fm.ui.console.delete_word()
-cmap <A-d> eval fm.ui.console.delete_word(backward=False)
-cmap <C-k> eval fm.ui.console.delete_rest(1)
-cmap <C-u> eval fm.ui.console.delete_rest(-1)
-cmap <C-y> eval fm.ui.console.paste()
-
-
-# Note: There are multiple ways to express backspaces. <backspace> (code 263)
-# and <backspace2> (code 127). To be sure, use both.
-copycmap <backspace> <backspace2>
-
-# This special expression allows typing in numerals:
-cmap <allow_quantifiers> false
-
-
-###PAGER KEYS###
-# Movement
-pmap <down> pager_move down=1
-pmap <up> pager_move up=1
-pmap <left> pager_move left=4
-pmap <right> pager_move right=4
-pmap <home> pager_move to=0
-pmap <end> pager_move to=-1
-pmap <pagedown> pager_move down=1.0 pages=True
-pmap <pageup> pager_move up=1.0 pages=True
-pmap <C-d> pager_move down=0.5 pages=True
-pmap <C-u> pager_move up=0.5 pages=True
-
-copypmap <UP> k <C-p>
-copypmap <DOWN> j <C-n> <CR>
-copypmap <LEFT> h
-copypmap <RIGHT> l
-copypmap <HOME> g
-copypmap <END> G
-copypmap <C-d> d
-copypmap <C-u> u
-copypmap <PAGEDOWN> n f <C-F> <Space>
-copypmap <PAGEUP> p b <C-B>
-
-
-# Basic
-#pmap <C-l> redraw_window
-pmap <ESC> pager_close
-copypmap <ESC> q Q i <F3>
-pmap E edit_file
-
-# ===================================================================
-# == Taskview Keybindings
-# ===================================================================
-
-# Movement
-tmap <up> taskview_move up=1
-tmap <down> taskview_move down=1
-tmap <home> taskview_move to=0
-tmap <end> taskview_move to=-1
-tmap <pagedown> taskview_move down=1.0 pages=True
-tmap <pageup> taskview_move up=1.0 pages=True
-tmap <C-d> taskview_move down=0.5 pages=True
-tmap <C-u> taskview_move up=0.5 pages=True
-
-copytmap <UP> k <C-p>
-copytmap <DOWN> j <C-n> <CR>
-copytmap <HOME> g
-copytmap <END> G
-copytmap <C-u> u
-copytmap <PAGEDOWN> n f <C-F> <Space>
-copytmap <PAGEUP> p b <C-B>
-
-# Changing priority and deleting tasks
-tmap J eval -q fm.ui.taskview.task_move(-1)
-tmap K eval -q fm.ui.taskview.task_move(0)
-tmap dd eval -q fm.ui.taskview.task_remove()
-tmap <pagedown> eval -q fm.ui.taskview.task_move(-1)
-tmap <pageup> eval -q fm.ui.taskview.task_move(0)
-tmap <delete> eval -q fm.ui.taskview.task_remove()
-
-# Basic
-#tmap <C-l> redraw_window
-tmap <ESC> taskview_close
-copytmap <ESC> q Q w <C-c>
-
-
-map sp console shell bash speedvid.sh %f%space
-map x shell chmod +x %f
-
-#General
-map V console shell $EDITOR%space
-map cW bulkrename %s
-map mkd console mkdir%space
-map sc console shell ln -sT%space
-map D console delete
-map X shell extract %f
-map Z shell tar -cvzf %f.tar.gz %f
-map <C-f> fzf_select
-map <C-l> fzf_locate
-
-#Document Manipulation
-map p1s shell lpr -o sides=one-sided %f
-map p2s shell lpr -o sides=two-sided-long-edge %f
-map MX shell xelatex %f
-map ML shell pdflatex %f
-
-#Image commands
-map bgg shell setbg %f
-map bgl shell setbglblur %f
-map bgL shell setbglsimple %f
-# map bw shell wal -c -i %f && cp %f ~/.config/wall.png
-
-# Shortcuts
-
-# cd shortcuts
-map oe cd /etc
-map ou cd /usr
-map ov cd /var
-map oM cd /mnt
-map oR cd /
-map o? cd /usr/share/doc/ranger
-
-map oh cd ~
-map od cd ~/docs
-map oD cd ~/dls
-map omm cd ~/music
-map opp cd ~/pics
-map opw cd ~/pics/wallpapers
-map ops cd ~/pics/screenshots
-map ovv cd ~/vids
-map or cd ~/repos
-map os cd ~/.local/bin
-map ocf cd ~/.config
-map omd cd /run/media
-
-
-# New tab shortcuts
-map Oh tab_new ~
-map Od tab_new ~/docs
-map OD tab_new ~/dls
-map Omm tab_new ~/music
-map Opp tab_new ~/pics
-map Opw tab_new ~/pics/wallpapers
-map Ops tab_new ~/pics/screenshots
-map Ovv tab_new ~/vids
-map Or tab_new ~/repos
-map Os tab_new ~/.local/bin
-map Ocf tab_new ~/.config
-map Omd tab_new /run/media
-
-#Downloading
-map ytv console shell youtube-dl -ic%space
-map yta console shell youtube-dl -xic%space
diff --git a/dotfiles/.config/ranger/rifle.conf b/dotfiles/.config/ranger/rifle.conf
deleted file mode 100644
index e0f7a04..0000000
--- a/dotfiles/.config/ranger/rifle.conf
+++ /dev/null
@@ -1,60 +0,0 @@
-# vim: ft=cfg
-#
-# This is the configuration file of "rifle", ranger's file executor/opener.
-# Each line consists of conditions and a command. For each line the conditions
-# are checked and if they are met, the respective command is run.
-#
-# Syntax:
-# <condition1> , <condition2> , ... = command
-#
-# The command can contain these environment variables:
-# $1-$9 | The n-th selected file
-# $@ | All selected files
-#
-# If you use the special command "ask", rifle will ask you what program to run.
-#
-# Prefixing a condition with "!" will negate its result.
-# These conditions are currently supported:
-# match <regexp> | The regexp matches $1
-# ext <regexp> | The regexp matches the extension of $1
-# mime <regexp> | The regexp matches the mime type of $1
-# name <regexp> | The regexp matches the basename of $1
-# path <regexp> | The regexp matches the absolute path of $1
-# has <program> | The program is installed (i.e. located in $PATH)
-# env <variable> | The environment variable "variable" is non-empty
-# file | $1 is a file
-# directory | $1 is a directory
-# number <n> | change the number of this command to n
-# terminal | stdin, stderr and stdout are connected to a terminal
-# X | $DISPLAY is not empty (i.e. Xorg runs)
-#
-# There are also pseudo-conditions which have a "side effect":
-# flag <flags> | Change how the program is run. See below.
-# label <label> | Assign a label or name to the command so it can
-# | be started with :open_with <label> in ranger
-# | or `rifle -p <label>` in the standalone executable.
-# else | Always true.
-#
-# Flags are single characters which slightly transform the command:
-# f | Fork the program, make it run in the background.
-# | New command = setsid $command >& /dev/null &
-# r | Execute the command with root permissions
-# | New command = sudo $command
-# t | Run the program in a new terminal. If $TERMCMD is not defined,
-# | rifle will attempt to extract it from $TERM.
-# | New command = $TERMCMD -e $command
-# Note: The "New command" serves only as an illustration, the exact
-# implementation may differ.
-# Note: When using rifle in ranger, there is an additional flag "c" for
-# only running the current file even if you have marked multiple files.
-
-#-------------------------------------------
-# Websites
-#-------------------------------------------
-# Rarely installed browsers get higher priority; It is assumed that if you
-# install a rare browser, you probably use it. Firefox/konqueror/w3m on the
-# other hand are often only installed as fallback browsers.
-
-else = setsid xdg-open "$1" 2> /dev/null &
-label editor = "$EDITOR" -- "$@"
-label pager = "$PAGER" -- "$@"
diff --git a/dotfiles/.config/ranger/scope.sh b/dotfiles/.config/ranger/scope.sh
deleted file mode 100755
index dcb0752..0000000
--- a/dotfiles/.config/ranger/scope.sh
+++ /dev/null
@@ -1,145 +0,0 @@
-#!/usr/bin/env bash
-
-set -o noclobber -o noglob -o nounset -o pipefail
-IFS=$'\n'
-
-# If the option `use_preview_script` is set to `true`,
-# then this script will be called and its output will be displayed in ranger.
-# ANSI color codes are supported.
-# STDIN is disabled, so interactive scripts won't work properly
-
-# This script is considered a configuration file and must be updated manually.
-# It will be left untouched if you upgrade ranger.
-
-# Meanings of exit codes:
-# code | meaning | action of ranger
-# -----+------------+-------------------------------------------
-# 0 | success | Display stdout as preview
-# 1 | no preview | Display no preview at all
-# 2 | plain text | Display the plain content of the file
-# 3 | fix width | Don't reload when width changes
-# 4 | fix height | Don't reload when height changes
-# 5 | fix both | Don't ever reload
-# 6 | image | Display the image `$IMAGE_CACHE_PATH` points to as an image preview
-# 7 | image | Display the file directly as an image
-
-# Script arguments
-FILE_PATH="${1}" # Full path of the highlighted file
-PV_WIDTH="${2}" # Width of the preview pane (number of fitting characters)
-PV_HEIGHT="${3}" # Height of the preview pane (number of fitting characters)
-IMAGE_CACHE_PATH="${4}" # Full path that should be used to cache image preview
-PV_IMAGE_ENABLED="${5}" # 'True' if image previews are enabled, 'False' otherwise.
-
-FILE_EXTENSION="${FILE_PATH##*.}"
-FILE_EXTENSION_LOWER=$(echo ${FILE_EXTENSION} | tr '[:upper:]' '[:lower:]')
-
-# Settings
-HIGHLIGHT_SIZE_MAX=262143 # 256KiB
-HIGHLIGHT_TABWIDTH=8
-HIGHLIGHT_STYLE='pablo'
-PYGMENTIZE_STYLE='autumn'
-
-
-handle_extension() {
- case "${FILE_EXTENSION_LOWER}" in
- # Archive
- a|ace|alz|arc|arj|bz|bz2|cab|cpio|deb|gz|jar|lha|lz|lzh|lzma|lzo|\
- rpm|rz|t7z|tar|tbz|tbz2|tgz|tlz|txz|tZ|tzo|war|xpi|xz|Z|zip)
- atool --list -- "${FILE_PATH}" && exit 5
- bsdtar --list --file "${FILE_PATH}" && exit 5
- exit 1;;
- rar)
- # Avoid password prompt by providing empty password
- unrar lt -p- -- "${FILE_PATH}" && exit 5
- exit 1;;
- 7z)
- # Avoid password prompt by providing empty password
- 7z l -p -- "${FILE_PATH}" && exit 5
- exit 1;;
-
- # PDF
- pdf)
- # Preview as text conversion
- pdftotext -l 10 -nopgbrk -q -- "${FILE_PATH}" - | fmt -w ${PV_WIDTH} && exit 5
- mutool draw -F txt -i -- "${FILE_PATH}" 1-10 | fmt -w ${PV_WIDTH} && exit 5
- exiftool "${FILE_PATH}" && exit 5
- exit 1;;
-
- # BitTorrent
- torrent)
- transmission-show -- "${FILE_PATH}" && exit 5
- exit 1;;
-
- # OpenDocument
- odt|ods|odp|sxw)
- # Preview as text conversion
- odt2txt "${FILE_PATH}" && exit 5
- exit 1;;
-
- # HTML
- htm|html|xhtml)
- # Preview as text conversion
- w3m -dump "${FILE_PATH}" && exit 5
- lynx -dump -- "${FILE_PATH}" && exit 5
- elinks -dump "${FILE_PATH}" && exit 5
- ;; # Continue with next handler on failure
- esac
-}
-
-handle_image() {
- local mimetype="${1}"
- case "${mimetype}" in
- esac
-}
-
-handle_mime() {
- local mimetype="${1}"
- case "${mimetype}" in
- # Text
- text/* | */xml)
- # Syntax highlight
- if [[ "$( stat --printf='%s' -- "${FILE_PATH}" )" -gt "${HIGHLIGHT_SIZE_MAX}" ]]; then
- exit 2
- fi
- if [[ "$( tput colors )" -ge 256 ]]; then
- local pygmentize_format='terminal256'
- local highlight_format='xterm256'
- else
- local pygmentize_format='terminal'
- local highlight_format='ansi'
- fi
- highlight --replace-tabs="${HIGHLIGHT_TABWIDTH}" --out-format="${highlight_format}" \
- --style="${HIGHLIGHT_STYLE}" --force -- "${FILE_PATH}" && exit 5
- # pygmentize -f "${pygmentize_format}" -O "style=${PYGMENTIZE_STYLE}" -- "${FILE_PATH}" && exit 5
- exit 2;;
-
- # Image
- image/*)
- # Preview as text conversion
- # img2txt --gamma=0.6 --width="${PV_WIDTH}" -- "${FILE_PATH}" && exit 4
- exiftool "${FILE_PATH}" && exit 5
- exit 1;;
-
- # Video and audio
- video/* | audio/*)
- mediainfo "${FILE_PATH}" && exit 5
- exiftool "${FILE_PATH}" && exit 5
- exit 1;;
- esac
-}
-
-handle_fallback() {
- echo '----- File Type Classification -----' && file --dereference --brief -- "${FILE_PATH}" && exit 5
- exit 1
-}
-
-
-MIMETYPE="$( file --dereference --brief --mime-type -- "${FILE_PATH}" )"
-if [[ "${PV_IMAGE_ENABLED}" == 'True' ]]; then
- handle_image "${MIMETYPE}"
-fi
-handle_extension
-handle_mime "${MIMETYPE}"
-handle_fallback
-
-exit 1
diff --git a/dotfiles/.config/sway/desktopslav b/dotfiles/.config/sway/desktopslav
index df96ccd..7debab9 100644
--- a/dotfiles/.config/sway/desktopslav
+++ b/dotfiles/.config/sway/desktopslav
@@ -5,17 +5,17 @@
# Outputs
output "HDMI-A-2" background ~/.config/wall2.png fill
output "HDMI-A-1" background ~/.config/wall1.png fill
-output "HDMI-A-1" pos 0 0
-output "HDMI-A-2" pos 1920 0
+output "HDMI-A-1" pos 1920 0
+output "HDMI-A-2" pos 0 0
# Workspaces
-workspace $ws1 output HDMI-A-1
-workspace $ws2 output HDMI-A-1
-workspace $ws3 output HDMI-A-1
-workspace $ws4 output HDMI-A-1
-workspace $ws5 output HDMI-A-1
-workspace $ws6 output HDMI-A-1
-workspace $ws7 output HDMI-A-2
-workspace $ws8 output HDMI-A-2
-workspace $ws9 output HDMI-A-2
-workspace $ws10 output HDMI-A-2
+workspace $ws1 output HDMI-A-2
+workspace $ws2 output HDMI-A-2
+workspace $ws3 output HDMI-A-2
+workspace $ws4 output HDMI-A-2
+workspace $ws5 output HDMI-A-2
+workspace $ws6 output HDMI-A-2
+workspace $ws7 output HDMI-A-1
+workspace $ws8 output HDMI-A-1
+workspace $ws9 output HDMI-A-1
+workspace $ws10 output HDMI-A-1
diff --git a/dotfiles/.config/transmission-daemon/settings.json b/dotfiles/.config/transmission-daemon/settings.json
index bbb4707..b592ff6 100644
--- a/dotfiles/.config/transmission-daemon/settings.json
+++ b/dotfiles/.config/transmission-daemon/settings.json
@@ -11,7 +11,7 @@
"blocklist-enabled": true,
"blocklist-url": "http://john.bitsurge.net/public/biglist.p2p.gz",
"cache-size-mb": 4,
- "dht-enabled": false,
+ "dht-enabled": true,
"download-dir": "/home/yaroslav/dls/p2p",
"download-queue-enabled": true,
"download-queue-size": 5,
@@ -20,7 +20,7 @@
"idle-seeding-limit-enabled": false,
"incomplete-dir": "/home/yaroslav/dls",
"incomplete-dir-enabled": false,
- "lpd-enabled": false,
+ "lpd-enabled": true,
"message-level": 2,
"peer-congestion-algorithm": "",
"peer-id-ttl-hours": 6,
diff --git a/dotfiles/.config/vifm/colors/Default.vifm b/dotfiles/.config/vifm/colors/Default.vifm
deleted file mode 100644
index 7434b36..0000000
--- a/dotfiles/.config/vifm/colors/Default.vifm
+++ /dev/null
@@ -1,80 +0,0 @@
-" You can edit this file by hand.
-" The " character at the beginning of a line comments out the line.
-" Blank lines are ignored.
-
-" The Default color scheme is used for any directory that does not have
-" a specified scheme and for parts of user interface like menus. A
-" color scheme set for a base directory will also
-" be used for the sub directories.
-
-" The standard ncurses colors are:
-" Default = -1 = None, can be used for transparency or default color
-" Black = 0
-" Red = 1
-" Green = 2
-" Yellow = 3
-" Blue = 4
-" Magenta = 5
-" Cyan = 6
-" White = 7
-
-" Light versions of colors are also available (set bold attribute):
-" LightBlack
-" LightRed
-" LightGreen
-" LightYellow
-" LightBlue
-" LightMagenta
-" LightCyan
-" LightWhite
-
-" Available attributes (some of them can be combined):
-" bold
-" underline
-" reverse or inverse
-" standout
-" italic (on unsupported systems becomes reverse)
-" none
-
-" Vifm supports 256 colors you can use color numbers 0-255
-" (requires properly set up terminal: set your TERM environment variable
-" (directly or using resources) to some color terminal name (e.g.
-" xterm-256color) from /usr/lib/terminfo/; you can check current number
-" of colors in your terminal with tput colors command)
-
-" highlight group cterm=attrs ctermfg=foreground_color ctermbg=background_color
-
-highlight clear
-
-highlight Win cterm=none ctermfg=white ctermbg=black
-highlight Directory cterm=bold ctermfg=cyan ctermbg=default
-highlight Link cterm=bold ctermfg=yellow ctermbg=default
-highlight BrokenLink cterm=bold ctermfg=red ctermbg=default
-highlight Socket cterm=bold ctermfg=magenta ctermbg=default
-highlight Device cterm=bold ctermfg=red ctermbg=default
-highlight Fifo cterm=bold ctermfg=cyan ctermbg=default
-highlight Executable cterm=bold ctermfg=green ctermbg=default
-highlight Selected cterm=bold ctermfg=magenta ctermbg=default
-highlight CurrLine cterm=bold,reverse ctermfg=default ctermbg=default
-highlight TopLine cterm=none ctermfg=black ctermbg=white
-highlight TopLineSel cterm=bold ctermfg=black ctermbg=default
-highlight StatusLine cterm=bold ctermfg=black ctermbg=white
-highlight WildMenu cterm=underline,reverse ctermfg=white ctermbg=black
-highlight CmdLine cterm=none ctermfg=white ctermbg=black
-highlight ErrorMsg cterm=none ctermfg=red ctermbg=black
-highlight Border cterm=none ctermfg=black ctermbg=white
-highlight JobLine cterm=bold,reverse ctermfg=black ctermbg=white
-highlight SuggestBox cterm=bold ctermfg=default ctermbg=default
-highlight CmpMismatch cterm=bold ctermfg=white ctermbg=red
-highlight AuxWin cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
-highlight TabLine cterm=none ctermfg=white ctermbg=black
-highlight TabLineSel cterm=bold,reverse ctermfg=default ctermbg=default
-highlight User1 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
-highlight User2 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
-highlight User3 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
-highlight User4 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
-highlight User5 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
-highlight User6 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
-highlight User7 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
-highlight User8 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
-highlight User9 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
diff --git a/dotfiles/.config/vifm/colors/yaroslavps.vifm b/dotfiles/.config/vifm/colors/yaroslavps.vifm
deleted file mode 100644
index bb425ee..0000000
--- a/dotfiles/.config/vifm/colors/yaroslavps.vifm
+++ /dev/null
@@ -1,33 +0,0 @@
-highlight clear
-highlight Win cterm=none ctermfg=white ctermbg=none
-highlight Directory cterm=bold ctermfg=cyan ctermbg=default
-highlight Link cterm=bold ctermfg=blue ctermbg=default
-highlight BrokenLink cterm=bold ctermfg=red ctermbg=default
-highlight Socket cterm=bold ctermfg=magenta ctermbg=default
-highlight Device cterm=bold ctermfg=red ctermbg=default
-highlight Fifo cterm=bold ctermfg=cyan ctermbg=default
-highlight Executable cterm=bold ctermfg=green ctermbg=default
-highlight Selected cterm=bold ctermfg=magenta ctermbg=default
-highlight CurrLine cterm=bold,reverse ctermfg=default ctermbg=default
-highlight TopLine cterm=none ctermfg=white ctermbg=black
-highlight TopLineSel cterm=bold ctermfg=black ctermbg=default
-highlight StatusLine cterm=bold ctermfg=white ctermbg=black
-highlight WildMenu cterm=underline,reverse ctermfg=white ctermbg=black
-highlight CmdLine cterm=none ctermfg=white ctermbg=black
-highlight ErrorMsg cterm=none ctermfg=red ctermbg=black
-highlight Border cterm=none ctermfg=white ctermbg=black
-highlight JobLine cterm=bold,reverse ctermfg=black ctermbg=white
-highlight SuggestBox cterm=bold ctermfg=default ctermbg=default
-highlight CmpMismatch cterm=bold ctermfg=white ctermbg=red
-highlight AuxWin cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
-highlight TabLine cterm=none ctermfg=white ctermbg=black
-highlight TabLineSel cterm=bold,reverse ctermfg=default ctermbg=default
-highlight User1 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
-highlight User2 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
-highlight User3 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
-highlight User4 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
-highlight User5 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
-highlight User6 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
-highlight User7 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
-highlight User8 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
-highlight User9 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
diff --git a/dotfiles/.config/vifm/scripts/README b/dotfiles/.config/vifm/scripts/README
deleted file mode 100644
index 7694952..0000000
--- a/dotfiles/.config/vifm/scripts/README
+++ /dev/null
@@ -1,6 +0,0 @@
-This directory is dedicated for user-supplied scripts/executables.
-vifm modifies its PATH environment variable to let user run those
-scripts without specifying full path. All subdirectories are added
-as well. File in a subdirectory overrules file with the same name
-in parent directories. Restart might be needed to recognize files
-in newly created or renamed subdirectories. \ No newline at end of file
diff --git a/dotfiles/.config/vifm/scripts/imgc b/dotfiles/.config/vifm/scripts/imgc
deleted file mode 100755
index 941b7e7..0000000
--- a/dotfiles/.config/vifm/scripts/imgc
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/bash
-
-W3MIMGDISPLAY="/usr/lib/w3m/w3mimgdisplay"
-FONTH=18 # Size of one terminal row
-FONTW=9 # Size of one terminal column
-
-X=$1
-Y=$2
-COLUMNS=$3
-LINES=$4
-
-x=$((FONTW * X))
-y=$((FONTH * Y))
-
-erase="6;$x;$y;$(( FONTW*COLUMNS ));$(( FONTH*LINES ))\n3;"
-echo -e "$erase" | $W3MIMGDISPLAY
diff --git a/dotfiles/.config/vifm/scripts/imgt b/dotfiles/.config/vifm/scripts/imgt
deleted file mode 100755
index 5d76d5d..0000000
--- a/dotfiles/.config/vifm/scripts/imgt
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/bin/bash
-#
-# Based on script by z3bra -- 2014-01-21
-
-W3MIMGDISPLAY="/usr/lib/w3m/w3mimgdisplay"
-FONTH=16 # Size of one terminal row
-FONTW=9 # Size of one terminal column
-
-X=$1
-Y=$2
-COLUMNS=$3
-LINES=$4
-FILENAME=$5
-
-read width height <<< `echo "5;$FILENAME" | $W3MIMGDISPLAY`
-if [ -z "$width" -o -z "$height" ]; then
- echo 'Error: Failed to obtain image size.'
- exit 1
-fi
-
-x=$((FONTW * X))
-y=$((FONTH * Y))
-
-max_width=$((FONTW * COLUMNS))
-max_height=$((FONTH * LINES))
-
-if [ "$width" -gt "$max_width" ]; then
- height=$((height * max_width / width))
- width=$max_width
-fi
-if [ "$height" -gt "$max_height" ]; then
- width=$((width * max_height / height))
- height=$max_height
-fi
-
-w3m_command="0;1;$x;$y;$width;$height;;;;;$FILENAME\n4;\n3;"
-
-echo -e "$w3m_command" | $W3MIMGDISPLAY
diff --git a/dotfiles/.config/vifm/scripts/vifmimg b/dotfiles/.config/vifm/scripts/vifmimg
deleted file mode 100755
index e5d8763..0000000
--- a/dotfiles/.config/vifm/scripts/vifmimg
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/usr/bin/env bash
-readonly ID_PREVIEW="preview"
-
-#AUTO_REMOVE="yes"
-# By enabling this option the script will remove the preview file after it is drawn
-# and by doing so the preview will always be up-to-date with the file.
-# This however, requires more CPU and therefore affects the overall performance.
-
-if [ -e "$FIFO_UEBERZUG" ]; then
- if [[ "$1" == "draw" ]]; then
- declare -p -A cmd=([action]=add [identifier]="$ID_PREVIEW"
- [x]="$2" [y]="$3" [width]="$4" [height]="$5" \
- [path]="${PWD}/$6") \
- > "$FIFO_UEBERZUG"
-
- elif [[ "$1" == "videopreview" ]]; then
- echo -e "Loading preview..\nFile: $6"
- [[ ! -d "/tmp${PWD}/$6/" ]] && mkdir -p "/tmp${PWD}/$6/"
- [[ ! -f "/tmp${PWD}/$6.png" ]] && ffmpegthumbnailer -i "${PWD}/$6" -o "/tmp${PWD}/$6.png" -s 0 -q 10
- declare -p -A cmd=([action]=add [identifier]="$ID_PREVIEW"
- [x]="$2" [y]="$3" [width]="$4" [height]="$5" \
- [path]="/tmp${PWD}/$6.png") \
- > "$FIFO_UEBERZUG"
-
- elif [[ "$1" == "gifpreview" ]]; then
- echo -e "Loading preview..\nFile: $6"
- [[ ! -d "/tmp${PWD}/$6/" ]] && mkdir -p "/tmp${PWD}/$6/" && convert -coalesce "${PWD}/$6" "/tmp${PWD}/$6/$6.png"
- for frame in $(ls -1 /tmp${PWD}/$6/$6*.png | sort -V); do
- declare -p -A cmd=([action]=add [identifier]="$ID_PREVIEW"
- [x]="$2" [y]="$3" [width]="$4" [height]="$5" \
- [path]="$frame") \
- > "$FIFO_UEBERZUG"
- # Sleep between frames to make the animation smooth.
- sleep .07
- done
-
- elif [[ "$1" == "pdfpreview" ]]; then
- echo -e "Loading preview..\nFile: $6"
- [[ ! -d "/tmp${PWD}/$6/" ]] && mkdir -p "/tmp${PWD}/$6/"
- [[ ! -f "/tmp${PWD}/$6.png" ]] && pdftoppm -png -singlefile "$6" "/tmp${PWD}/$6"
- declare -p -A cmd=([action]=add [identifier]="$ID_PREVIEW"
- [x]="$2" [y]="$3" [width]="$4" [height]="$5" \
- [path]="/tmp${PWD}/$6.png") \
- > "$FIFO_UEBERZUG"
-
- elif [[ "$1" == "clear" ]]; then
- declare -p -A cmd=([action]=remove [identifier]="$ID_PREVIEW") \
- > "$FIFO_UEBERZUG"
- [[ ! -z $AUTO_REMOVE ]] && [[ -f "/tmp${PWD}/$6.png" ]] && rm -f "/tmp${PWD}/$6.png"
- [[ ! -z $AUTO_REMOVE ]] && [[ -d "/tmp${PWD}/$6/" ]] && rm -rf "/tmp${PWD}/$6/"
-
- fi
-fi
diff --git a/dotfiles/.config/vifm/scripts/vifmrun b/dotfiles/.config/vifm/scripts/vifmrun
deleted file mode 100755
index 9eda32a..0000000
--- a/dotfiles/.config/vifm/scripts/vifmrun
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/env bash
-export FIFO_UEBERZUG="/tmp/vifm-ueberzug-${PPID}"
-
-function cleanup {
- rm "$FIFO_UEBERZUG" 2>/dev/null
- pkill -P $$ 2>/dev/null
-}
-
-rm "$FIFO_UEBERZUG" 2>/dev/null
-mkfifo "$FIFO_UEBERZUG"
-trap cleanup EXIT
-tail --follow "$FIFO_UEBERZUG" | ueberzug layer --silent --parser bash &
-
-vifm
-cleanup
diff --git a/dotfiles/.config/vifm/vifm-help.txt b/dotfiles/.config/vifm/vifm-help.txt
deleted file mode 100644
index 59550f6..0000000
--- a/dotfiles/.config/vifm/vifm-help.txt
+++ /dev/null
@@ -1,5899 +0,0 @@
-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
- directory on the command line or 'vifminfo' option includes "savedirs"
- (in which case last visited directories are used as defaults).
-
- - Read list of files from standard input stream and compose custom
- view out of them (see "Custom views" section). Current working
- directory is used as a base for relative paths.
-
- <path> Starts Vifm in the specified path.
-
- <path> <path>
- Starts Vifm in the specified paths.
-
- Specifying two directories triggers split view even when vifm was in
- single-view mode on finishing previous session. To suppress this be-
- haviour :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
- directory node in tree view), otherwise move left one file.
-
- l when 'lsview' is off move into a directory or launches a file,
- otherwise move right one file.
-
- 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.
-
- 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'
- options affect case sensitivity of search queries.
-
-
- [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 (excluding "." and ".." special directories, whose
- appearance is controlled by the 'dotdirs' option);
-
- - manual filter for file names;
-
- - automatic filter for file names;
-
- - local filter for file names (see description of the "=" normal mode
- command).
-
- Performing operations on manual filter for file names automatically
- does the same on automatic one. The file name filter is separated
- mainly for convenience purpose and to get more deterministic behaviour.
-
- The basic vim folding key bindings are used for filtering files.
-
- 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. For this a slash is
- appended to a directory name before testing whether it matches the fil-
- ter. 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.
-
- za toggle visibility of dot files.
-
- zo show dot files.
-
- zm hide dot files.
-
- zf add selected files to file name filter.
-
- zO show files hidden by file name filter.
-
- zM restore all filters.
-
- zR remove all filters.
-
- zr remove local filter.
-
- zd exclude selection or current file from a custom view. Does
- nothing for regular view. For tree view excluding directory
- excludes that sub-tree. For compare views zd hides group of
- adjacent 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.
-
-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 create a window showing detailed information about the current
- file.
-
- Shift-Tab
- enters 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
- directory.
-
- 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).
-
- 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.
-
- 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}).
-
- [count]C
- clone file [count] times.
-
- [count]dd or d[count]selector
- move selected file or files to trash directory (if 'trash'
- option is set, otherwise delete). See "Trash directory" section
- below.
-
- [count]DD or D[count]selector
- like dd and d<selector>, but omitting trash 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
- important in case you're moving files in the same file system
- where your home directory is, but using P to move files on some
- other file system (or file systems, in case you want to move
- files from fs1 to fs2 and your home is on fs3) can save your
- time.
-
- al put symbolic links with absolute paths.
-
- rl put symbolic links with relative paths.
-
- t select or unselect (tag) the current file.
-
- u undo last change.
-
- Ctrl-R redo last change.
-
- dp in compare view of "ofboth grouppaths" kind, makes corresponding
- entry of the other pane equal to the current one. The semantics
- is as follows:
- - nothing done for identical entries
- - if file is missing in current view, its pair gets removed
- - if file is missing or differs in other view, it's replaced
- - file pairs are defined by matching relative paths
- File removal obeys 'trash' option. When the option is enabled,
- the operation can be undone/redone (although results won't be
- visible automatically).
- Unlike in Vim, this operation is performed on a single line
- rather than a set of adjacent changes.
-
- do same as dp, but applies changes in the opposite direction.
-
- v or V enter visual mode, clears current selection.
-
- [count]Ctrl-A
- increment first number in file name by [count] (1 by default).
-
- [count]Ctrl-X
- decrement first number in file name by [count] (1 by default).
-
- ZQ same as :quit!.
-
- ZZ same as :quit.
-
- . repeat last command-line command (not normal mode command) of
- this session (does nothing right after startup or :restart com-
- mand). 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.
-
- [z go to first sibling of current entry.
-
- ]z go to last sibling of current entry.
-
- zj go to next directory sibling of current entry or do nothing.
-
- zk go to previous directory sibling of current entry or do nothing.
-
-Using Count
- You can use count with commands like yy.
-
- [count]yy
- yank count files starting from current cursor 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 to 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
- region;
-
- - invert - amend selection by inverting selection of elements in
- selection region.
-
- No matter how you activate selection editing it starts in "append".
- One can switch type of operation (in the order given above) via "Ctrl-
- G" key.
-
- Almost all normal mode keys work in visual mode, but instead of 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.
-
-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.
-
- [count]/pattern
- search forward for ([count]-th) matching line.
-
- [count]?pattern
- search backward for ([count]-th) matching line.
-
- [count]n
- repeat previous search (for [count]-th occurrence).
-
- [count]N
- repeat previous search in reverse direction (for [count]-th
- occurrence).
-
- [count]g, [count]<, [count]Alt-<
- scroll to the first line of the file (or line [count]).
-
- [count]G, [count]>, [count]Alt->
- scroll to the last line of the file (or line [count]).
-
- [count]p, [count]%
- scroll to the beginning of the file (or N percent into file).
-
- v invoke an editor to edit the current file being viewed. The
- command for editing is taken from the 'vicmd'/'vixcmd' option
- value and extended with middle line number prepended by a plus
- sign and name of the current file.
-
- All "Ctrl-W x" keys work the same was as in Normal mode. Active mode
- is automatically changed on navigating among windows. When less-like
- mode activated on file preview is left using one by "Ctrl-W x" keys,
- its state is stored until another file is displayed using preview (it's
- 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
- option.
-
- Esc, Ctrl-C
- leave command line mode, cancels input. Cancelled input is
- saved into appropriate history and can be recalled later.
-
- Ctrl-M, Enter
- execute command and leave command line mode.
-
- Ctrl-I, Tab
- complete command or its argument.
-
- Shift-Tab
- complete in reverse order.
-
- Ctrl-_ stop completion and return original input.
-
- Ctrl-B, Left
- move cursor to the left.
-
- Ctrl-F, Right
- move cursor to the right.
-
- Ctrl-A, Home
- go to line beginning.
-
- Ctrl-E, End
- go to line end.
-
- Alt-B go to the beginning of previous word.
-
- Alt-F go to the end of next word.
-
- Ctrl-U remove characters from cursor position till the beginning of
- line.
-
- Ctrl-K remove characters from cursor position till the end of line.
-
- Ctrl-H, Backspace
- remove character before the cursor.
-
- Ctrl-D, Delete
- remove character under the cursor.
-
- Ctrl-W remove characters from cursor position till the beginning of
- previous word.
-
- Alt-D remove characters from cursor position till the beginning of
- next word.
-
- Ctrl-T swap the order of current and previous character and move cursor
- forward or, if cursor past the end of line, swap the order of
- two last characters in the line.
-
- Alt-. insert last part of previous command to current cursor position.
- Each next call will insert last part of older command.
-
- Ctrl-G edit command-line content in external editor. See "Command line
- editing" section for details.
-
- Ctrl-N recall more recent command-line from history.
-
- Ctrl-P recall older command-line from history.
-
- Up recall more recent command-line from history, that begins as the
- current command-line.
-
- Down recall older command-line from history, that begins as the 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
- active pane.
-
- Ctrl-X Ctrl-X c
- name of the current file of the inactive pane.
-
- Ctrl-X Ctrl-X d
- path to the current directory of the inactive pane.
-
- Ctrl-X Ctrl-X e
- extension of the current file of the inactive pane.
-
- Ctrl-X Ctrl-X r
- name root of current file of the inactive pane.
-
- Ctrl-X Ctrl-X t
- the last component of path to the current directory of the inac-
- tive pane.
-
-
- Ctrl-X a
- value of automatic filter of the active pane.
-
- Ctrl-X m
- value of manual filter 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
- allowed.
-
- 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
- escaped:
-
- :[range]!
- :autocmd
- :cabbrev
- :cmap
- :cnoreabbrev
- :cnoremap
- :command
- :dmap
- :dnoremap
- :filetype
- :fileviewer
- :filextype
- :map
- :mmap
- :mnoremap
- :nmap
- :nnoremap
- :noremap
- :normal
- :qmap
- :qnoremap
- :vmap
- :vnoremap
- :wincmd
- :windo
- :winrun
-
- To be able to use another command after one of these, wrap it with the
- :execute command. An example:
-
- if filetype('.') == 'reg' | execute '!!echo regular file' | endif
-
- :[count]
-
- :number
- move to the file number.
- :12 would move to the 12th file in the list.
- :0 move to the top of the list.
- :$ move to the bottom of the list.
-
- :[count]command
- The only builtin :[count]command are :[count]d[elete] and
- :[count]y[ank].
-
- :d3 would delete three files starting at the current file position
- moving down.
-
- :3d would delete one file at the third line in the list.
-
- :command [args]
-
- :[range]!program
- execute command via shell. Accepts macros.
-
- :[range]!command &
-
- same as above, but the command is run in the background using vifm's
- means.
-
- Programs that write to stdout like "ls" create an error message showing
- partial output 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
- default the command relies on the external "apropos" utility,
- which can be customized by altering value of the 'aproposprg'
- option.
-
- :autocmd
-
- :au[tocmd] {event} {pat} {cmd}
- register autocommand for the {event}, which can be:
- - DirEnter - performed on entering a directory
- 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.
-
- :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.
-
- :ca[bbrev] lhs-prefix
- display command-line mode abbreviations which left-hand side
- starts with specified prefix.
-
- :ca[bbrev] lhs rhs
- register new or overwrites existing abbreviation for command-
- line mode. rhs can contain spaces and any special sequences
- accepted in rhs of mappings (see "Mappings" section below).
- Abbreviations are expanded non-recursively.
-
- :cnoreabbrev
-
- :cnorea[bbrev]
- display menu of command-line mode abbreviations.
-
- :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.
-
- :change
-
- :c[hange]
- create a menu window to alter a files properties.
-
- :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
- recursively.
-
- :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
- directory specific colorscheme fits current path. It's also
- used to set border color (except view titles) and colors in
- menus and dialogs.
-
- :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).
-
- :comclear
-
- :comc[lear]
- remove all user defined commands.
-
- :command
-
- :com[mand]
- display a menu of user commands.
-
- :com[mand] beginning
- display user defined commands that start with the beginning.
-
- :com[mand] name action
- set a new user command.
- Trying to use a reserved command name will result in an error
- message.
- Use :com[mand]! to overwrite a previously set command.
- Unlike vim user commands do not have to start with a capital
- letter. User commands are run in a shell by default. To run a
- command in the background you must set it as a background com-
- mand with & at the end of the commands action (:com rm rm %f &).
- Command name cannot contain numbers or special symbols (except
- '?' and '!').
-
- :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
- example:
-
- " 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] cmd :commands
- set kind of an alias for internal command (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 the arguments. The
- default is "bycontents listall ofboth grouppaths". See "Compare
- views" section below for details. Tree structure is incompati-
- ble 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.
-
- :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.
-
- :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
- directories (see "Trash directory" section below). Trash direc-
- tories which are specified via %r and/or %u also get deleted
- completely. Also remove all operations from undolist that have
- no sense after :empty and remove all records about files located
- inside directories from all 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.
-
- :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
- appended 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.
- See also "Automatic FUSE mounts" section below. Example for zip
- archives and several actions:
-
- filetype *.zip,*.jar,*.war,*.ear
- \ {Mount with fuse-zip}
- \ FUSE_MOUNT|fuse-zip %SOURCE_FILE %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. See also "Automatic FUSE
- mounts" section 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 presence of $DIS-
- PLAY 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.
-
- 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
- selected files if any. Accepts macros. By default the command
- relies on the external "find" utility, which can be customized
- by altering value of the 'findprg' option.
-
- :[range]fin[d] -opt...
- same as :find above, but user defines all find arguments.
- Searches among selected files if any.
-
- :[range]fin[d] path -opt...
- same as :find above, but user defines all find arguments.
- Ignores selection and range.
-
- :[range]fin[d]
- repeat last :find command.
-
- :finish
-
- :fini[sh]
- stop sourcing a script. Can only be used in a vifm script file.
- This is a quick way to skip the rest of the file.
-
- :goto
-
- :go[to]
- change directory if necessary and put specified path under the
- cursor. The path should be existing non-root path. Macros and
- environment variables are expanded.
-
- :grep
-
- :[range]gr[ep][!] pattern
- will show results of grep command in the menu. Add "!" to
- request inversion of search (look for lines that do not match
- pattern). Searches among selected files if any and no range
- given. Ignores binary files by default. By default the command
- relies on the external "grep" utility, which can be customized
- by altering value of the 'grepprg' option.
-
- :[range]gr[ep][!] -opt...
- same as :grep above, but user defines all grep arguments, which
- are not escaped. Searches among selected files if any.
-
- :[range]gr[ep][!]
- repeats 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.
-
- :highlight
-
- :hi[ghlight]
- display information about all highlight groups active at the
- moment.
-
- :hi[ghlight] clear
- reset all highlighting to builtin defaults and removed all file-
- name-specific rules.
-
- :hi[ghlight] clear ( {pat1,pat2,...} | /regexp/ )
- removes 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
- set style (cterm), foreground (ctermfg) or/and background
- (ctermbg) parameters of highlight group or file name pattern for
- color scheme used in the active view.
-
- All style values as well as color names are case insensitive.
-
- Available style values (some of them can be combined):
- - bold
- - underline
- - reverse or inverse
- - standout
- - italic (on unsupported systems becomes reverse)
- - none
-
- Available group-name values:
- - Win - color of all windows (views, dialogs, menus) and default color
- for their content (e.g. regular files in views)
- - AuxWin - color of auxiliary areas of windows
- - Border - color of vertical parts of the border
- - TabLine - tab line color
- - TabLineSel - color of the tip of selected tab
- - TopLineSel - top line color of the current pane
- - TopLine - top line color of the other 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
- - Selected - color of selected files
- - Directory - color of directories
- - Link - color of symbolic links in the views
- - BrokenLink - color of broken symbolic links
- - 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
-
- Light versions of colors are regular colors with bold attribute set.
- So order of arguments of :highlight command is important and it's bet-
- ter 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 Dupli-
- cated entries were altered by adding an underscore followed by numeri-
- cal 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
- attribute. Thus single bold attribute affects both colors when
- "reverse" attribute is used in vifm run inside terminal emulator. At
- the same time linux native console can handle boldness of foreground
- and background colors independently, but for consistency with terminal
- emulators this is available only implicitly by using light versions of
- colors. This behaviour might be changed in the future.
-
- Although vifm supports 256 colors in a sense they are supported by UI
- drawing library, whether you will be able to use all of them highly
- depends on your terminal. To set up terminal properly, make sure that
- $TERM in the 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.
-
- 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
- AuxWin
- File name specific highlights
- Directory
- Link
- BrokenLink
- Socket
- Device
- Fifo
- Executable
- Selected
- CurrLine
- OtherLine
- TopLine
- TopLineSel
- TabLine
- TabLineSel
-
- "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]
- creates a pop-up menu of directories visited.
-
- :his[tory] x
- x can be:
- d[ir] or . show directory history.
- c[md] or : show command line history.
- s[earch] or / show search history and search forward on l key.
- f[search] or / show search history and search forward on l key.
- b[search] or ? show search history and search backward on l key.
- i[nput] or @ show prompt history (e.g. on one file renaming).
- fi[lter] or = show filter history (see description of the "="
- normal mode command).
-
- :histnext
-
- :histnext
- same as <c-i>. The main use case for this command is to work
- around the common pain point of <tab> and <c-i> being the same
- ASCII character: one could alter the terminal emulator settings
- to emit, for example, the `F1` keycode when Ctrl-I is pressed,
- then `:noremap <f1> :histnext<cr>` in vifm, add "t" flag to the
- 'cpoptions', and thus have both <c-i> and <tab> working as
- expected.
-
- :histprev
-
- :histprev
- same as <c-o>.
-
- :if
-
- :if {expr1}
- starts 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 shows menu of current backgrounded processes.
-
- :let
-
- :let $ENV_VAR = <expr>
- sets 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
- already built), which can be customized by altering value of the
- 'locateprg' option.
-
- :locate
- repeats 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
- displays a menu with list of files in trash. Each element of
- the list is original path of a deleted file, thus the list can
- contain duplicates.
-
- :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.
-
- :marks list ...
- display the contents of the marks that are mentioned in list.
-
- :media
-
- :media only for *nix
- display media management menu. 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)
- before it.
-
- :only
-
- :on[ly]
- switch to a one window view.
-
- :popd
-
- :popd remove pane directories from stack.
-
- :pushd
-
- :pushd[!] /curr/dir [/other/dir]
- add pane directories to stack and process arguments like :cd
- command.
-
- :pushd exchange the top two items of the directory stack.
-
- :put
-
- :[line]pu[t][!] [reg] [ &]
- puts files from specified register (" by default) into current
- directory. The [line] can be used to pick node in a tree-view.
- "!" moves files "!" moves files from their original location
- instead of copying them. During this operation no 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 changes 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 using vi to edit names. ! means go recursively
- through directories.
-
- :[range]rename name1 name2...
- rename each of selected files to a corresponding name.
-
- :restart
-
- :restart
- free a lot of things (histories, commands, etc.), reread
- vifminfo and vifmrc files and run startup commands passed in the
- argument list, thus losing all unsaved changes (e.g. recent his-
- tory or keys mapped in current session).
-
- :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
- enabled.
-
- Note: the command is called screen for historical reasons (when tmux
- wasn't yet supported) and might be changed in future releases, or get
- an alias.
-
- :select
-
- :[range]select
- select files in the given range (current file if no range is
- given).
-
- :select {pattern}
- select files that match specified pattern. 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.
-
- :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 and option-=x
- - for enumeration options - option=x, option+=x and option-=x
- - for set options - option=x, option+=x and option-=x
- - for charset options - option=x, option+=x, option-=x and
- option^=x
-
- the meaning:
- - option - turn option on (for boolean) or print its value (for
- all others)
- - nooption - turn option off
- - invoption - invert option state
- - option! - invert option state
- - option? - print option value
- - option& - reset option to its default value
- - option=x or option:x - set option to x
- - option+=x - add/append x to option
- - option-=x - remove (or subtract) x from option
- - option^=x - toggle x presence among values of the option
-
- Option name can be prepended and appended by any number of
- whitespace characters.
-
- :setglobal
-
- :setg[lobal]
- display all global options that differ from their default value.
-
- :setg[lobal] all
- display all global options.
-
- :setg[lobal] opt1=val1 opt2='val2' opt3="val3" ...
- same as :set, but changes/prints only global options or global
- values of local options. Changes to the latter might be not
- visible until directory is changed.
-
- :setlocal
-
- :setl[ocal]
- display all local options that differ from their default value.
-
- :setl[ocal] all
- display all local options.
-
- :setl[ocal] opt1=val1 opt2='val2' opt3="val3" ...
- same as :set, but changes/prints only local values of local
- options.
-
- :shell
-
- :sh[ell][!]
- start a shell in current directory. "!" suppresses spawning
- dedicated window of terminal multiplexer for a shell. To make
- vifm adaptive to environment it uses $SHELL if it's defined,
- otherwise 'shell' value is used.
-
-
- :siblnext
-
- :[count]siblnext[!]
-
- change directory to [count]th next sibling 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, when one can
- select 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).
-
- :source
-
- :so[urce] file
- read command-line commands from the file.
-
- :split
-
- :sp[lit]
- switch to a two window horizontal view.
-
- :sp[lit]!
- toggle horizontal window splitting.
-
- :sp[lit] path
- splits the window horizontally to show both file directories.
- Also changes other pane to path (absolute or relative to current
- directory of active pane).
-
- :substitute
-
- :[range]s[ubstitute]/pattern/string/[flags]
- for each file in range replace a match of pattern with string.
-
- String can contain \0...\9 to link to capture groups (\0 - all match,
- \1 - first group, etc.).
-
- Pattern is stored in search history.
-
- Available flags:
-
- - i - ignore case (the 'ignorecase' and 'smartcase' options are not
- used)
-
- - I - don't ignore case (the 'ignorecase' and '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
- allowed.
-
- :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
- "location");
-
- - 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.
-
- :tabprevious
-
- :tabp[revious]
- switch to the previous tab (wrapping around).
-
- :tabp[revious] {n}
- go to the {n}-th previous tab. Note that :tabnext handles its
- argument differently.
-
- :touch
-
- :[line]touch file...
- create files at specified paths. Aborts on errors. Doesn't
- update time of existing files. The [line] can be used to pick
- node in a tree-view. Macros are expanded.
-
- :tr
-
- :[range]tr/pattern/string/
- for each file in range transliterate the characters which appear
- in pattern to the corresponding 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
- automatically kept in sync with file system state and considers
- all the filters. Thus the structure corresponds to what one
- would see on visiting the directories manually. As a special
- case for trees built out of custom view file-system tracking
- isn't performed.
-
- To leave tree view go up from its root or use gh at any level of
- the tree. Any command that changes directory will also do, in
- particular, `:cd ..`.
-
- Tree structure is incompatible with alternative representations,
- so values of 'lsview' and 'millerview' options are ignored.
-
- :tree! toggle current view in and out of tree mode.
-
- :undolist
-
- :undol[ist]
- display list of latest changes. Use "!" to see actual commands.
-
- :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. 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.
-
- :vsplit
-
- :vs[plit]
- switch to a two window vertical view.
-
- :vs[plit]!
- toggle window vertical splitting.
-
- :vs[plit] path
- split the window vertically to show both file directories. And
- changes other pane to path (absolute or relative to current
- directory of active pane).
-
- :wincmd
-
- :[count]winc[md] {arg}
- same as running Ctrl-W [count] {arg}.
-
- :windo
-
- :windo [command...]
- execute command for each pane (same as :winrun % command).
-
- :winrun
-
- :winrun type [command...]
- execute command for pane(s), which is determined by type argu-
- ment:
- - ^ - top-left pane
- - $ - bottom-right pane
- - % - all panes
- - . - current pane
- - , - other pane
-
- :write
-
- :w[rite]
- write vifminfo file.
-
- :wq
-
- :wq[!] same as :quit, but ! only disables check of backgrounded com-
- mands. :wqall
-
- :wqa[ll][!]
- same as :qall, but ! only disables check of backgrounded com-
- mands.
-
- :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
- disallow mapping of rhs.
-
- :no[remap]! lhs rhs
- map the key sequence lhs to rhs for command line mode, but dis-
- allow mapping of rhs.
-
- :cnoremap :dnoremap :mnoremap :nnoremap :qnoremap
- :vnoremap
-
- :cno[remap] lhs rhs
- map the key sequence lhs to rhs for command line mode, but dis-
- allow mapping of rhs.
-
- :dn[oremap] lhs rhs
- map the key sequence lhs to rhs for dialog modes, but disallow
- mapping of rhs.
-
- :mn[oremap] lhs rhs
- map the key sequence lhs to rhs for menu mode, but disallow map-
- ping of rhs.
-
- :nn[oremap] lhs rhs
- map the key sequence lhs to rhs for normal mode, but disallow
- mapping of rhs.
-
- :qn[oremap] lhs rhs
- map the key sequence lhs to rhs for view mode, but disallow map-
- ping of rhs.
-
- :vn[oremap] lhs rhs
- map the key sequence lhs to rhs for visual mode, but disallow
- mapping of rhs.
-
- :unmap
-
- :unm[ap] lhs
- remove the mapping of lhs from normal and visual modes.
-
- :unm[ap]! lhs
- remove the mapping of lhs from command line mode.
-
- :cunmap :dunmap :munmap :nunmap :qunmap
- :vunmap
-
- :cu[nmap] lhs
- remove the mapping of lhs from command line mode.
-
- :du[nmap] lhs
- remove the mapping of lhs from dialog modes.
-
- :mu[nmap] lhs
- remove the mapping of lhs from menu mode.
-
- :nun[map] lhs
- remove the mapping of lhs from normal mode.
-
- :qun[map] lhs
- remove the mapping of lhs from view mode.
-
- :vu[nmap] lhs
- remove the 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.
-
- %F %"F All of the selected files in the other directory list.
-
- %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 split window of active terminal multiplexer
- (ignored if not running inside one).
-
- %n Forbid using of terminal multiplexer to run the command.
-
- %i Completely ignore command output.
-
-
- %pc Marks end of the main command and beginning of the clear command
- for graphical preview, which is invoked on closing preview of a
- file.
-
- 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 %m, %M, %s, %S, %i, %u and %U macros 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
- description.
-
- Using %x means expand corresponding macro escaping all characters that
- have special meaning. And %"x means using of double quotes and escape
- only backslash and double quote characters, which is more useful on
- Windows systems.
-
- Position and quantity (if there is any) of %m, %M, %S or %s macros in
- the command is unimportant. All their 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. Currently job
- cannot be stopped or paused.
-
- You can see if command is still running in the :jobs menu. Back-
- grounded commands have progress instead of process id at the line
- beginning.
-
- Background operations cannot be undone.
-
-Cancellation
- Note that cancellation works somewhat different on Windows platform due
- to different mechanism of break signal 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,
- :locate.
-
-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
-
- 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").
-
- 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}
-
- Five first 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.
-
- Regular expression patterns are case insensitive by default, see
- description of commands, which might override default behaviour.
-
- "Globs" section below provides short overview of globs and some impor-
- tant points that one needs to know about them.
-
- 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.
-
-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.
-
- ? means any character at this position. E.g.
-
- :fileviewer ?.out file %c
-
- calls file tool for all files which has 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 negotiation
- and the - symbol to set a range. ^ and ! should appear right after the
- opening square bracket. For example
-
- :filetype *.[!d]/ inspect_dir
-
- associates inspect_dir as additional handler for all directories that
- have one character extension unless it's "d" letter. And
-
- :filetype [0-9].jpg sxiv
-
- associates sxiv picture viewer only for JPEG-files that contain single
- digit in their name.
-
-: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
- exception to regular configuration of the view, until directory
- change. Use :setlocal for that. :setglobal changes view value
- not affecting settings until directory change. :set applies
- changes immediately to all values.
-
-
- 'aproposprg'
- type: string
- default: "apropos %a"
- Specifies format for an external command to be invoked by the
- :apropos command. The format 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
- enables behaviour of older versions of vifm. Flags:
- - f - when included, running :filter command results in not
- inverted (matching files are filtered out) and :filter! in
- inverted (matching files are left) filter, when omitted, meaning
- of the exclamation mark changes to the opposite;
- - s - when included, yy, dd and DD normal mode commands act on
- selection, otherwise they operate on current file only;
- - t - when included, <tab> (thus <c-i>) behave as <space> and
- switches active pane, otherwise <tab> and <c-i> go forward in
- the view history. It's possible to make both <tab> and <c-i> to
- work as expected by setting up the terminal to emit a custom
- sequence when <c-i> is pressed; see :histnext for details.
-
- 'cvoptions'
- type: set
- default:
- Specifies whether entering/leaving custom views triggers events
- that normally happen on 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
- 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
-
- 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 expanding of macros, spe-
- cific for a particular *prg option, and %% sequence for insert-
- ing percent sign literally. This option should include the %s
- macro to specify placement of list of paths to search in and %a
- or %A macro to specify placement of arguments passed to the
- :find command. If some of the macros are not used, they will be
- implicitly added after a space to the value of the option in the
- following order: %s, %a. Note that when neither %a nor %A are
- specified, it's %a which is added implicitly.
-
- The macros can slightly change their meaning depending on :find
- command arguments. When the first argument points to an exist-
- ing directory, %s is assigned all arguments and %a/%A are left
- empty. Otherwise, %s is assigned a dot (".") meaning current
- directory or list of selected file names, if any. %a/%A are
- assigned arguments when first argument starts with a dash ("-"),
- otherwise %a gets an escaped version of arguments, prepended by
- "-name" (on *nix) or "-iname" (on Windows) predicate.
-
- %a and %A macros contain almost the same value, the difference
- is that %a can be escaped and %A is never escaped. %A is to be
- used mainly on Windows, where shell escaping is a mess and can
- break command execution.
-
- Optional %u or %U macro could be used (if both specified %U is
- chosen) to force redirection to custom or unsorted custom view
- respectively.
-
- Starting from Windows Server 2003 a where command is available,
- one can configure vifm to use it in the following way:
-
- set findprg="where /R %s %A"
-
- As the syntax of this command is rather limited, one can't use
- :find command with selection of more than one item in this case.
- The command looks for files only completely ignoring directo-
- ries.
-
- 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
- "$envname"), which will be expanded (prepend it with a slash to
- prevent expansion). The value should expand to an absolute
- path.
-
- If you change this option, vifm won't remount anything. It
- affects 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
- results is requested, %a or %A macro to specify placement of
- arguments passed to the :grep command and the %s macro to spec-
- ify 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
- directory history:
- - startup - on loading file lists during startup
- - dirmark - after navigating to a mark that doesn't specify
- file
- - direnter - on opening directory from a file list
-
- This option has no effect when 'autochpos' is 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
- Highlight all matches of search pattern.
-
- '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)
- and characters after f and F commands. It doesn't affect file
- filtering.
-
- '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 and udisks
- {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")
- - mount-point= - specifies a mount point (can be absent or
- appear 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 error
- stream and exit code of `mount` and `unmount` is taken into
- account to determine whether operation was performed success-
- fully.
-
- '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"
- 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
-
- *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.
-
- 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
- between subsequent input polls, which affects various asynchro-
- nous operations (detecting changes made by external applica-
- tions, monitoring background jobs, redrawing UI). There are no
- strict guarantees, however the higher this value is, the less is
- CPU load in idle mode.
-
- 'number' 'nu'
- type: boolean
- default: false
- scope: local
- Print line number in front of each file name when 'lsview'
- option is turned off. Use 'numberwidth' to control width of
- line number. Also see 'relativenumber'.
-
- 'numberwidth' 'nuw'
- type: integer
- default: 4
- scope: local
- Minimal number of characters for line number field.
-
- 'previewprg'
- type: string
- default: ""
- scope: local
-
- External command to be used instead of preview 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
- %S - number of displayed files
- %= - separation point between left and right align items
- %% - 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.
-
- Example:
-
- set rulerformat='%2l-%S%[ +%x%]'
-
- 'runexec'
- type: boolean
- default: false
- Run executable file on Enter or l.
-
- '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).
-
- '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.
-
- 'shortmess' 'shm'
- type: charset
- default: "p"
- Contains a sequence of single-character flags. Each flag
- enables shortening of some message displayed by vifm in the TUI.
- Flags:
- - 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).
-
- Numbers are rounded from zero. Trailing zeros are dropped.
-
- Example:
-
- set sizefmt=units:iec,precision:2
-
-
- 'slowfs'
- type: string list
- default: ""
- only for *nix
- A list of mounter fs name beginnings (first column in /etc/mtab
- or /proc/mounts) or paths prefixes for fs/directories that work
- too slow for you. This option can be used to stop vifm from
- making some requests to particular kinds of file systems that
- can slow down file browsing. Currently this means don't check
- if directory has changed, skip check if target of symbolic links
- exists, assume that link target located on slow fs to be a
- directory (allows entering directories and navigating to files
- via gf). If you set the option to "*", it means all the systems
- are considered slow (useful for cygwin, where all the checks
- might render vifm very slow if there are network mounts).
-
- Example for autofs root /mnt/autofs:
-
- set slowfs+=/mnt/autofs
-
- 'smartcase' 'scs'
- type: boolean
- default: false
- Overrides the ignorecase option if the search pattern contains
- at least one upper case character. Only used when ignorecase
- option is enabled. It doesn't affect file filtering.
-
- '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, e.g. mode)
- [+-]mtime - time modified (when file contents is changed)
-
- Note: look for st_atime, st_ctime and st_mtime in "man 2 stat"
- for more 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
- implicitly: when "dir" is not specified, sorting behaves as if
- it was the first key in the list. That's why if one wants sort-
- ing 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 to use for
- group sorting, double comma is literal comma. Each expression
- should contain at least one group or its value will be consid-
- ered to be always empty. Only first match of each regular
- expression is considered. Groups are considered from right to
- first similar to 'sort', first group divides list of files into
- sub-groups, each of which is sorted by the second group and so
- on.
-
- Example:
- set sortgroups=-(done|todo).*
- this would put files with "-done" in their names above all files
- with "-todo".
-
- '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:
-
- - %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 at current partition
-
- - %z - short tips/tricks/hints that chosen randomly after one
- minute period
-
- - %{<expr>} - evaluate arbitrary vifm expression '<expr>', e.g.
- '&sort'
-
- - %* - resets or applies one of User1..User9 highlight groups;
- reset happens when width field is 0 or not specified, one of
- groups gets picked when width field is in the range from 1 to
- 9
-
- - all 'rulerformat' macros
-
- Percent sign can be followed by optional minimum field width.
- Add '-' before minimum field width if you want field to be right
- aligned.
-
- On Windows file properties include the 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
- default), '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
- instead (much faster and supports progress tracking). The
- option should eventually be removed. Mostly *nix-like systems
- are affected.
-
- '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.
-
- '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.
-
- '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
- element starts with "%r/". Value of the option can contain
- environment variables (of form "$envname"), which will be
- expanded (prepend $ with a slash to prevent expansion). Envi-
- ronment 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: "ps"
- 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 "...").
-
- '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"
- The actual command used to start vi. Ampersand sign at the end
- (regardless whether it's preceded by space or not) means back-
- grounding 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 X.
-
- 'vifminfo'
- type: set
- default: bookmarks,bmarks
- Controls what will be saved in the $VIFM/vifminfo file.
-
- bmarks - named bookmarks
- 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 (requires dhistory)
- 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 session is empty
- registers - registers content
- 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-
- defined mapping), ignore the builtin mapping and wait for input
- indefinitely as opposed to default behaviour of triggering the
- builtin mapping after a delay defined by 'timeoutlen'. Example:
-
- nnoremap <wait> tw :set wrap!<cr>
- nnoremap <wait> tn :set number!<cr>
- nnoremap <wait> tr :set 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
- pass
- count to a different command.
- v:count1
- same as v:count, but 1 by default.
- 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}.
- 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
- describing 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')
-
- 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 appear)
-
- 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 horizon 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
- interrupt the command.
-
- Use this function to consume output of external commands that don't
- require user interaction and term() for interactive commands that make
- use of terminal and are capable of handling stream redirection.
-
- Usage example:
-
- " command to enter .git/ directory of git-repository (when ran inside one)
- command! cdgit :execute 'cd' 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' "'".term('find -type d | fzf 2> /dev/tty')."'"
-
-Menus and dialogs
- When navigating to some path from a menu there is a difference in end
- location depending on whether path has trailing slash or not. Files
- normally don't have trailing slashes so "file/" won't work and one can
- only navigate to a file anyway. On the other hand with directories
- there are two options: navigate to a directory or inside of it. To
- allow both use cases, the first one is used on paths like "dir" and the
- second one for "dir/".
-
- Commands
-
- :range navigate to a menu line.
-
- :exi[t][!] :q[uit][!] :x[it][!]
- leave menu mode.
-
- :noh[lsearch]
- reset search match highlighting.
-
- :w[rite] {dest}
- write all menu lines into file specified by {dest}.
-
- General
-
- j, Ctrl-N - move down.
- k, Ctrl-P - move up.
- Enter, l - select and exit the menu.
- Ctrl-L - redraw the menu.
-
- Escape, Ctrl-C, ZZ, ZQ, q - quit.
-
- In all menus
-
- The following set of keys has the same meaning as in normal mode.
-
- Ctrl-B, Ctrl-F
- Ctrl-D, Ctrl-U
- Ctrl-E, Ctrl-Y
- /, ?
- n, N
- [count]G, [count]gg
- H, M, L
- zb, zt, zz
-
- zh - scroll menu items [count] characters to the right.
- zl - scroll menu items [count] characters to the left.
- zH - scroll menu items half of screen width 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 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.
-
- Filetype 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
-
- 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
- directories, set all execute flags to 'd' and check 'Set Recursively'
- flag.
-
- Jobs menu
-
- dd requests cancellation of job under cursor. The job won't be removed
- from the list, but marked as being cancelled (if cancellation was 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
-
- r - reload the list.
-
- m - mount/unmount device (cursor should be positioned on lines under
- device information).
-
-
-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
- future, searching whole lines seems quite reasonable).
-
- Sorting
-
- Contrary to search sorting by name works on whole visible part of file
- path.
-
- Highlight
-
- Whole file name is highlighted as one entity, even if there are 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
- example, moving/copying/putting files into a custom view doesn't work,
- because it doesn't make much sense.
-
- On the other hand, operations that use files of a custom view as a
- source (e.g. yanking, copying, moving file from custom view, deletion)
- and 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 combination of size and hash of file contents.
-
- 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;
- - directories are not taken into account;
- - symbolic links to directories are ignored.
-
-Startup
- On startup vifm determines several variables that are used during the
- session. 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
- order:
- - $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
- example:
-
- set
- \smartcase
-
- equals "setsmartcase". When
-
- set<space here>
- \ smartcase
-
- equals "set smartcase".
-
- The $VIFM/vifminfo file contains session settings. You may edit it by
- hand to change the settings, but it's not recommended to do that, edit
- vifmrc instead. You can control what settings will be saved in
- vifminfo by setting 'vifminfo' option. Vifm always writes this file on
- exit unless 'vifminfo' option is empty. Marks, bookmarks, commands,
- histories, filetypes, fileviewers and registers in the file are merged
- with vifm configuration (which has 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 session 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.
-
- 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
- extension being truncated).
-
-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. Currently two formats are supported:
-
- 1) FUSE_MOUNT This format should be used in case when all information
- needed for mounting all files of a particular type is the same. E.g.
- mounting of tar files don't require any file specific options.
-
- Format line:
- FUSE_MOUNT|mounter %SOURCE_FILE %DESTINATION_DIR [%FOREGROUND]
-
- Example filetype command:
-
- :filetype FUSE_MOUNT|fuse-zip %SOURCE_FILE %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
- remote file systems over ftp or ssh.
-
- Format line:
- FUSE_MOUNT2|mounter %PARAM %DESTINATION_DIR [%FOREGROUND]
-
- Example filetype command:
-
- :filetype FUSE_MOUNT2|sshfs %PARAM %DESTINATION_DIR
-
- Example file content:
-
- root@127.0.0.1:/
-
- 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.
-
- 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 '}' '.'{0,3}
- where fw stands for full width and tw stands for text width.
-
- So it basically consists of four parts:
- 1. Optional alignment specifier
- 2. Optional width specifier
- 3. Mandatory column name
- 4. Optional cropping specifier
-
- Alignment specifier
-
- It's an optional minus or asterisk sign as the first symbol of the
- string.
-
- Specifies type of text alignment within a column. Three types are 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 name
-
- This is just a sort key surrounded with curly braces or {root}, e.g.
-
- {name},{ext},{mtime}
-
- {name} and {iname} keys are the same and present both for consistency
- with 'sort' option.
-
- Following keys don't have corresponding sorting keys:
-
- - {root} - display name without extension (as a complement for {ext})
-
- Empty curly braces ({}) are replaced with the default secondary column
- for primary sort key. So after the next command view will be displayed
- almost as if 'viewcolumns' is empty, but adding ellipsis for long file
- names:
-
- set viewcolumns=-{name}..,6{}.
-
- Cropping specifier
-
- It's from one to three dots after closing curly brace in column format.
-
- Specifies type of text truncation if it doesn't fit in the column.
- Currently three types are 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,
- ErrorMsg, StatusLine, JobLine, SuggestBox and WildMenu are always
- determined by the primary color scheme;
-
- - CurrLine, Selected, Directory, Link, BrokenLink, Socket, Device,
- Executable, Fifo, CmpMismatch, Win and AuxWin are determined by
- primary color scheme and a set of local color schemes, which can be
- empty.
-
- There might be a set of local color schemes because they are structured
- hierarchically according to file system structure. For example, having
- the 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
- inserted to some other place in file system.
-
- 2. As a storage of files, that are deleted but not purged yet.
-
- The first scenario uses deletion ("d") operations to put files to trash
- and put ("p") operations to restore files from trash directory. Note
- that such operations move files to and from trash directory, which can
- be long term operations in case of 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
- directory, 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.
-
-Plugin
- Plugin for using vifm in vim as a file selector.
-
- Commands:
-
- :EditVifm select a file or files to open in the current buffer.
- :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
- default it's equal to 'xterm -e'. And another string variable named
- g:vifm_exec, which equals "vifm" by default and specifies path to
- vifm's executable. To pass 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 closes
- mount point from current pane 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.10 November 11, 2018 VIFM(1)
diff --git a/dotfiles/.config/vifm/vifminfo b/dotfiles/.config/vifm/vifminfo
deleted file mode 100644
index 016f986..0000000
--- a/dotfiles/.config/vifm/vifminfo
+++ /dev/null
@@ -1,293 +0,0 @@
-# You can edit this file by hand, but it's recommended not to do that.
-
-# Marks:
-'H
- /home/yaroslav/
- ..
-1556296785
-'b
- /home/yaroslav/bin/
- ..
-1556296785
-'h
- /home/yaroslav/
- ..
-1556296785
-'j
- /home/yaroslav/Downloads
- ..
-1559512388
-'k
- /home/yaroslav
- Extra
-1556629457
-
-# Bookmarks:
-
-# TUI:
-al
-q1
-v2
-ov
-m-1
-l2
-r2
-
-# Left window history (oldest to newest):
-d/run/media/yaroslav/956e5c54-6659-479e-91f1-de6afc4a37b9/Pictures/Camera/2019
- AUG
-2
-d/run/media/yaroslav/956e5c54-6659-479e-91f1-de6afc4a37b9/Pictures/Camera/2019/AUG
- Madrid
-9
-d/run/media/yaroslav/956e5c54-6659-479e-91f1-de6afc4a37b9/Pictures/Camera/2019/AUG/Madrid
- D0
-1
-d/run/media/yaroslav/956e5c54-6659-479e-91f1-de6afc4a37b9/Pictures/Camera/2019/AUG/Madrid/D0
- JPG
-1
-d/run/media/yaroslav/956e5c54-6659-479e-91f1-de6afc4a37b9/Pictures/Camera/2019/AUG/Madrid/D0/JPG
- ..
-0
-d/run/media/yaroslav/956e5c54-6659-479e-91f1-de6afc4a37b9/Pictures/Camera/2019/AUG/Madrid/D0
- _DSC5603.NEF
-2
-d/run/media/yaroslav/956e5c54-6659-479e-91f1-de6afc4a37b9/Pictures/Camera/2019/AUG/Madrid
- D1
-2
-d/run/media/yaroslav/956e5c54-6659-479e-91f1-de6afc4a37b9/Pictures/Camera/2019/AUG/Madrid/D1
- JPG
-1
-d/run/media/yaroslav/956e5c54-6659-479e-91f1-de6afc4a37b9/Pictures/Camera/2019/AUG/Madrid/D1/JPG
- _DSC5617.JPG
-1
-d/run/media/yaroslav/956e5c54-6659-479e-91f1-de6afc4a37b9/Pictures/Camera/2019/AUG/Madrid/D1
- JPG
-1
-d/run/media/yaroslav/956e5c54-6659-479e-91f1-de6afc4a37b9/Pictures/Camera/2019/AUG/Madrid
- D2
-3
-d/run/media/yaroslav/956e5c54-6659-479e-91f1-de6afc4a37b9/Pictures/Camera/2019/AUG/Madrid/D2
- JPG
-1
-d/run/media/yaroslav/956e5c54-6659-479e-91f1-de6afc4a37b9/Pictures/Camera/2019/AUG/Madrid/D2/JPG
- _DSC6153.JPG
-1
-d/run/media/yaroslav/956e5c54-6659-479e-91f1-de6afc4a37b9/Pictures/Camera/2019/AUG/Madrid/D2
- JPG
-1
-d/run/media/yaroslav/956e5c54-6659-479e-91f1-de6afc4a37b9/Pictures/Camera/2019/AUG/Madrid
- D3
-4
-d/run/media/yaroslav/956e5c54-6659-479e-91f1-de6afc4a37b9/Pictures/Camera/2019/AUG/Madrid/D3
- JPG
-1
-d/run/media/yaroslav/956e5c54-6659-479e-91f1-de6afc4a37b9/Pictures/Camera/2019/AUG/Madrid/D3/JPG
- _DSC6573.JPG
-1
-d/home/yaroslav
- Extra
-4
-d/home/yaroslav/Repositories
- i3rice
-4
-d/home/yaroslav/Repositories/i3rice
- arch
-1
-d/home/yaroslav/Repositories/i3rice/arch
- laptop
-1
-d/home/yaroslav/Repositories/i3rice
- .soundalerts
-6
-d/home/yaroslav/Repositories/i3rice/.soundalerts
- start.ogg
-2
-d/home/yaroslav/Repositories/i3rice
- .soundalerts
-6
-d/home/yaroslav/Repositories
- swayrice
-7
-d/home/yaroslav/Repositories/swayrice
- ..
-0
-d/home/yaroslav
- Extra
-4
-
-# Right window history (oldest to newest):
-D/home/yaroslav/Repositories/csmoney/stats/bot
-
-0
-D/home/yaroslav/Extra
- Emuladores
-2
-D/home/yaroslav/Extra/Emuladores
- ..
-0
-D/home/yaroslav/Extra
- Emuladores
-2
-D/home/yaroslav
- Extra
-4
-D/home
- yaroslav
-1
-D/home/yaroslav
- Extra
-4
-D/home/yaroslav/Extra
- OS
-3
-D/home/yaroslav/.config/vifm
- ..
-0
-D/home/yaroslav/.config
- vifm
-9
-D/home/yaroslav
- Documents
-2
-D/home/yaroslav/Documents
- prog
-9
-D/home/yaroslav/.config/vifm
- ..
-0
-D/home/yaroslav/Repositories/i3rice
- ..
-0
-D/home/yaroslav
- ..
-0
-D/home/yaroslav/Repositories/st
-
-0
-D/home/yaroslav
- ..
-0
-D/run/media/yaroslav
-
-0
-D/home/yaroslav
- ..
-0
-D/run/media/yaroslav/6163-3361/DCIM/101D3300
-
-0
-D/home/yaroslav
- ..
-0
-
-# Command line history (oldest to newest):
-:mkdir
-:mkdir src
-:cd csmoney/stats/
-:mkdir test
-:ta
-:cd src/utils/
-:cd stuff/notes/
-:mkdir data
-:cd Documents/eBooks/
-:cd Pictures/Camera/Nikon/
-:mkdir Edited
-:cd Downloads/
-:cd ~
-:cd .venvs/
-:cd Extra/temp/
-:mkdir pack
-:mkdir vscode-node-debug
-:cd /usr
-:cd .vim
-:cd .scripts/
-:cd Pictures/screenshots/
-:empty
-:cd Pictures/
-:cd Repositories/csmoney/stats/backend/
-:cd /run/media/yaroslav/956e5c54-6659-479e-91f1-de6afc4a37b9/
-:cd Repositories/
-:mkdir swayrice
-
-# Search history (oldest to newest):
-/resize
-/70
-/80
-/24
-/29
-/38
-/45
-/408
-/422
-/69
-/76
-/82
-/482
-/89
-/500
-/17
-/71
-/Ima
-/vif
-/setbg
-/komo
-/code
-/node
-/cur
-/win
-/Madrid
-
-# Prompt history (oldest to newest):
-pbackend_test.env
-pbackend_dev.env
-pswayresize
-pdevutils
-pdev
-prawmatch0.json
-pgot.jpg
-pparty
-pbot.js
-pservers.js
-p.eslintrc.js
-p.eslintrc.json
-pc.vim
-prawmatches1.json
-pplayertracker.js
-pindex.js
-pcalculateplayerstats.js
-pplayerstats.js
-pschemas
-pplayerstats.test.js
-pmodels.test.js
-ppubprof2.json
-ppubprof0.json
-ppubprof1.json
-ppubprof7.json
-pvscode-node-debug
-pddquakemite
-
-# Local filter history (oldest to newest):
-
-# Registers:
-""/home/yaroslav/.local/share/vifm/Trash/000_Diskette Park - Stray.zip
-""/home/yaroslav/.local/share/vifm/Trash/000_Sonnig 991 - MALLSOFT ODYSSEY.zip
-""/home/yaroslav/.local/share/vifm/Trash/000_Whitewoods - Spaceship Earth.zip
-""/home/yaroslav/.local/share/vifm/Trash/000_Windows彡96 - Vibes.zip
-""/home/yaroslav/.local/share/vifm/Trash/000_vcr-classique - exotics.zip
-
-# Directory stack (oldest to newest):
-
-# Trash content:
-t/home/yaroslav/.local/share/vifm/Trash/000_Undertale
- /home/yaroslav/Downloads/music/Undertale
-t/home/yaroslav/.local/share/vifm/Trash/000_Diskette Park - Stray.zip
- /home/yaroslav/Downloads/music/Diskette Park - Stray.zip
-t/home/yaroslav/.local/share/vifm/Trash/000_Sonnig 991 - MALLSOFT ODYSSEY.zip
- /home/yaroslav/Downloads/music/Sonnig 991 - MALLSOFT ODYSSEY.zip
-t/home/yaroslav/.local/share/vifm/Trash/000_Whitewoods - Spaceship Earth.zip
- /home/yaroslav/Downloads/music/Whitewoods - Spaceship Earth.zip
-t/home/yaroslav/.local/share/vifm/Trash/000_Windows彡96 - Vibes.zip
- /home/yaroslav/Downloads/music/Windows彡96 - Vibes.zip
-t/home/yaroslav/.local/share/vifm/Trash/000_vcr-classique - exotics.zip
- /home/yaroslav/Downloads/music/vcr-classique - exotics.zip
diff --git a/dotfiles/.config/vifm/vifmrc b/dotfiles/.config/vifm/vifmrc
deleted file mode 100644
index c9d81fc..0000000
--- a/dotfiles/.config/vifm/vifmrc
+++ /dev/null
@@ -1,202 +0,0 @@
-" vim: filetype=vifm
-colorscheme yaroslavps
-
-set vicmd=$EDITOR
-set syscalls
-set nofollowlinks
-set sortnumbers
-set undolevels=100
-set wildmenu
-set wildstyle=popup
-set scrolloff=4
-set ignorecase
-set smartcase
-set nohlsearch
-set incsearch
-set timefmt=%m/%d\ %H:%M
-set suggestoptions=normal,visual,view,otherpane,keys,marks,registers
-set statusline=" Hint: %z%= %A %10u:%-7g %15s %20d "
-
-map <C-h> <C-w>h
-map <C-j> <C-w>j
-map <C-k> <C-w>k
-map <C-l> <C-w>l
-map <C-o> <C-w>o
-map <C-s> <C-w>s
-map <C-v> <C-w>v
-
-map R :restart<CR>
-map x :!sxiv -ft * 2>/dev/null &<CR>
-nnoremap o :file &<cr>
-map E :!$EDITOR %f<CR>
-map mkd :mkdir<space>
-map cd :cd<space>
-map bgg :!cp %f ~/.config/wall1.png && setbg<CR>
-map bgl :!setbglblur %f<CR>
-map bgL :!setbglsimple %f<CR>
-map X :!ext %f &<CR>
-nnoremap s :shell<cr>
-nnoremap w :view<cr>
-vnoremap w :view<cr>gv
-nnoremap yd :!echo %d | xclip %i<cr>
-nnoremap yf :!echo %c:p | xclip %i<cr>
-nnoremap I cw<c-a>
-nnoremap cc cw<c-u>
-nnoremap A cw
-nnoremap ,w :set wrap!<cr>
-nmap <space> tj
-nmap q ZQ
-
-" Tab shortcuts
-map Oh :tabnew ~/<CR>
-map Od :tabnew ~/Documents<CR>
-map OD :tabnew ~/Downloads<CR>
-map Omm :tabnew ~/Music<CR>
-map Opp :tabnew ~/Pictures<CR>
-map Opw :tabnew ~/Pictures/Backgrounds<CR>
-map Ovv :tabnew ~/Video<CR>
-map Or :tabnew ~/Repositories<CR>
-map Os :tabnew ~/.scripts<CR>
-map Ocf :tabnew ~/.config<CR>
-map Omd :tabnew /run/media<CR>
-noremap J :tabn<CR>
-noremap K :tabp<CR>
-
-" ------------------------------------------------------------------------------
-
-" The file type is for the default programs to be used with
-" a file extension.
-" :filetype pattern1,pattern2 defaultprogram,program2
-" :fileviewer pattern1,pattern2 consoleviewer
-" The other programs for the file type can be accessed with the :file command
-" The command macros %f, %F, %d, %F may be used in the commands.
-" The %a macro is ignored. To use a % you must put %%.
-
-" For automated FUSE mounts, you must register an extension with :file[x]type
-" in one of following formats:
-"
-" :filetype extensions FUSE_MOUNT|some_mount_command using %SOURCE_FILE and %DESTINATION_DIR variables
-" %SOURCE_FILE and %DESTINATION_DIR are filled in by vifm at runtime.
-" A sample line might look like this:
-" :filetype *.zip,*.jar,*.war,*.ear FUSE_MOUNT|fuse-zip %SOURCE_FILE %DESTINATION_DIR
-"
-" :filetype extensions FUSE_MOUNT2|some_mount_command using %PARAM and %DESTINATION_DIR variables
-" %PARAM and %DESTINATION_DIR are filled in by vifm at runtime.
-" A sample line might look like this:
-" :filetype *.ssh FUSE_MOUNT2|sshfs %PARAM %DESTINATION_DIR
-" %PARAM value is filled from the first line of file (whole line).
-" Example first line for SshMount filetype: root@127.0.0.1:/
-"
-" You can also add %CLEAR if you want to clear screen before running FUSE
-" program.
-
-" Pdf
-fileviewer *.pdf
- "\ vifmimg pdfpreview %px %py %pw %ph %c
- "\ %pc
- "\ vifmimg clear
- \ pdftotext -nopgbrk %c -
-
-" Audio
-fileviewer *.mp3 mp3info
-fileviewer *.flac soxi
-
-" Video
-fileviewer *.avi,*.mp4,*.wmv,*.dat,*.3gp,*.ogv,*.mkv,*.mpg,*.mpeg,*.vob,
- \*.fl[icv],*.m2v,*.mov,*.webm,*.ts,*.mts,*.m4v,*.r[am],*.qt,*.divx,
- \*.as[fx]
- "\ vifmimg videopreview %px %py %pw %ph %c
- "\ %pc
- "\ vifmimg clear
- \ ffprobe -pretty %c 2>&1
-
-" Man page
-fileviewer *.[1-8] man ./%c | col -b
-
-" Images
-fileviewer *.bmp,*.jpg,*.jpeg,*.png,*.xpm
- \ vifmimg draw %px %py %pw %ph %c
- \ %pc
- \ vifmimg clear
- " Get w3m image previews inside vifm
- " \ imgt %px %py %pw %ph %c
- " \ %pc
- " \ imgc %px %py %pw %ph NOT NEEDED IN XTERM
-fileviewer *.gif
- \ vifmimg gifpreview %px %py %pw %ph %c
- \ %pc
- \ vifmimg clear
-
-fileviewer *.torrent dumptorrent -v %c
-
-" FuseZipMount
-fileviewer *.zip,*.jar,*.war,*.ear,*.oxt zip -sf %c
-
-" ArchiveMount
-fileviewer *.tgz,*.tar.gz tar -tzf %c
-fileviewer *.tar.bz2,*.tbz2 tar -tjf %c
-fileviewer *.tar.txz,*.txz xz --list %c
-fileviewer *.tar tar -tf %c
-
-" Rar2FsMount and rar archives
-fileviewer *.rar unrar v %c
-
-" Fuse7z and 7z archives
-fileviewer *.7z 7z l %c
-
-" Office files
-fileviewer *.doc catdoc %c
-fileviewer *.docx docx2txt.pl %f -
-
-" Syntax highlighting in preview
-"
-" Explicitly set highlight type for some extensions
-"
-" 256-color terminal
-" fileviewer *.[ch],*.[ch]pp highlight -O xterm256 -s dante --syntax c %c
-" fileviewer Makefile,Makefile.* highlight -O xterm256 -s dante --syntax make %c
-"
-" 16-color terminal
-" fileviewer *.c,*.h highlight -O ansi -s dante %c
-"
-" Or leave it for automatic detection
-"
-" fileviewer *[^/] pygmentize -O style=monokai -f console256 -g
-
-" Displaying pictures in terminal
-"
-" fileviewer *.jpg,*.png shellpic %c
-
-" Open all other files with default system programs (you can also remove all
-" :file[x]type commands above to ensure they don't interfere with system-wide
-" settings). By default all unknown files are opened with 'vi[x]cmd'
-" uncommenting one of lines below will result in ignoring 'vi[x]cmd' option
-" for unknown file types.
-" For *nix:
-filetype * xdg-open
-" For OS X:
-" filetype * open
-" For Windows:
-" filetype * start, explorer
-
-" GETTING ICONS TO DISPLAY IN VIFM
-" You need the next 14 lines!
-
-" file types
-set classify=' :dir:/, :exe:, :reg:, :link:'
-" various file names
-set classify+=' ::../::, ::*.sh::, ::*.[hc]pp::, ::*.[hc]::, ::/^copying|license$/::, ::.git/,,*.git/::, ::*.epub,,*.fb2,,*.djvu::, ::*.pdf::, ::*.htm,,*.html,,**.[sx]html,,*.xml::'
-" archives
-set classify+=' ::*.7z,,*.ace,,*.arj,,*.bz2,,*.cpio,,*.deb,,*.dz,,*.gz,,*.jar,,*.lzh,,*.lzma,,*.rar,,*.rpm,,*.rz,,*.tar,,*.taz,,*.tb2,,*.tbz,,*.tbz2,,*.tgz,,*.tlz,,*.trz,,*.txz,,*.tz,,*.tz2,,*.xz,,*.z,,*.zip,,*.zoo::'
-" images
-set classify+=' ::*.bmp,,*.gif,,*.jpeg,,*.jpg,,*.ico,,*.png,,*.ppm,,*.svg,,*.svgz,,*.tga,,*.tif,,*.tiff,,*.xbm,,*.xcf,,*.xpm,,*.xspf,,*.xwd::'
-" audio
-set classify+=' ::*.aac,,*.anx,,*.asf,,*.au,,*.axa,,*.flac,,*.m2a,,*.m4a,,*.mid,,*.midi,,*.mp3,,*.mpc,,*.oga,,*.ogg,,*.ogx,,*.ra,,*.ram,,*.rm,,*.spx,,*.wav,,*.wma,,*.ac3::'
-" media
-set classify+=' ::*.avi,,*.ts,,*.axv,,*.divx,,*.m2v,,*.m4p,,*.m4v,,.mka,,*.mkv,,*.mov,,*.mp4,,*.flv,,*.mp4v,,*.mpeg,,*.mpg,,*.nuv,,*.ogv,,*.pbm,,*.pgm,,*.qt,,*.vob,,*.wmv,,*.xvid::'
-" office files
-set classify+=' ::*.doc,,*.docx::, ::*.xls,,*.xls[mx]::, ::*.pptx,,*.ppt::'
-
----------------------------------------------------------------------------------
-
-set vifminfo=dhistory,chistory,tui,shistory,phistory,fhistory,dirstack,registers,bookmarks,bmarks
diff --git a/dotfiles/.local/bin/xway b/dotfiles/.local/bin/xway
index a6008c6..ab22604 100755
--- a/dotfiles/.local/bin/xway
+++ b/dotfiles/.local/bin/xway
@@ -8,4 +8,4 @@ export CLUTTER_PLATFORM=x11
export SDL_VIDEODRIVER=x11
export QT_QPA_PLATFORM=xcb
-$1
+$@