From 9c45f84e3cf5db8349a487f5ef3ca0c5277dc7aa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Yaroslav=20de=20la=20Pe=C3=B1a=20Smirnov?=
 <yps@yaroslavps.com>
Date: Sun, 12 Dec 2021 15:21:53 +0300
Subject: Clean up configs

Remove unneeded junk.
---
 dotfiles/.config/ranger/commands.py                |  216 -
 dotfiles/.config/ranger/commands_full.py           | 1508 -----
 dotfiles/.config/ranger/rc.conf                    |  466 --
 dotfiles/.config/ranger/rifle.conf                 |   60 -
 dotfiles/.config/ranger/scope.sh                   |  145 -
 dotfiles/.config/sway/desktopslav                  |   24 +-
 dotfiles/.config/transmission-daemon/settings.json |    4 +-
 dotfiles/.config/vifm/colors/Default.vifm          |   80 -
 dotfiles/.config/vifm/colors/yaroslavps.vifm       |   33 -
 dotfiles/.config/vifm/scripts/README               |    6 -
 dotfiles/.config/vifm/scripts/imgc                 |   16 -
 dotfiles/.config/vifm/scripts/imgt                 |   38 -
 dotfiles/.config/vifm/scripts/vifmimg              |   53 -
 dotfiles/.config/vifm/scripts/vifmrun              |   15 -
 dotfiles/.config/vifm/vifm-help.txt                | 5899 --------------------
 dotfiles/.config/vifm/vifminfo                     |  293 -
 dotfiles/.config/vifm/vifmrc                       |  202 -
 dotfiles/.local/bin/xway                           |    2 +-
 18 files changed, 15 insertions(+), 9045 deletions(-)
 delete mode 100755 dotfiles/.config/ranger/commands.py
 delete mode 100755 dotfiles/.config/ranger/commands_full.py
 delete mode 100644 dotfiles/.config/ranger/rc.conf
 delete mode 100644 dotfiles/.config/ranger/rifle.conf
 delete mode 100755 dotfiles/.config/ranger/scope.sh
 delete mode 100644 dotfiles/.config/vifm/colors/Default.vifm
 delete mode 100644 dotfiles/.config/vifm/colors/yaroslavps.vifm
 delete mode 100644 dotfiles/.config/vifm/scripts/README
 delete mode 100755 dotfiles/.config/vifm/scripts/imgc
 delete mode 100755 dotfiles/.config/vifm/scripts/imgt
 delete mode 100755 dotfiles/.config/vifm/scripts/vifmimg
 delete mode 100755 dotfiles/.config/vifm/scripts/vifmrun
 delete mode 100644 dotfiles/.config/vifm/vifm-help.txt
 delete mode 100644 dotfiles/.config/vifm/vifminfo
 delete mode 100644 dotfiles/.config/vifm/vifmrc

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
+$@
-- 
cgit v1.2.3