xaizek / vifm (License: GPLv2+) (since 2018-12-07)
Vifm is a file manager with curses interface, which provides Vi[m]-like environment for managing objects within file systems, extended with some useful ideas from mutt.
<root> / FAQ (d2407fca4adea8e0a2d6cb9f1fafbe35ca104e97) (5,559B) (mode 100644) [raw]
Q: Vifm fails to display some files which present on file system, is it a bug?

A: Most likely reason for missing files are name filters.  Use `:filter?`
   command to see their state or try pressing zR shortcut to disable all
   filters (undo that with zM).

   You got there probably by pressing zf on a file by accident at some point.
   In this case the file will be missing only in one of the panes.
   If you don't have :filter in your vifmrc and 'vifminfo' includes "state"
   value, such accidental filtering will persist across restarts of Vifm until
   you use :filter command or press a key like zO that resets permanent filter.

--------------------------------------------------------------------------------
Q: Vifm doesn't run executables, what's wrong with it?

A: Nothing.  Just set 'runexec' option on.  It's off by default.

--------------------------------------------------------------------------------
Q: How can I use SSH with Vifm?

A: Follow this steps:
   1) Download and install sshfs
   2) Register an extension that will be used for connections over SSH.
      The format is:
      :filetype extensions FUSE_MOUNT2|some_mount_command using %PARAM and %DESTINATION_DIR variables

      A sample line might look like this:
      :filetype *.ssh FUSE_MOUNT2|sshfs %PARAM %DESTINATION_DIR

      %PARAM and %DESTINATION_DIR are filled in by Vifm at runtime.
      %PARAM value is filled from the first line of file (whole line).

      You can also add %CLEAR if you want to clear screen before running FUSE
      program.
   3) Create a file with ssh extension that contains connection parameters in the
      first line.  A sample first line could be:
      root@127.0.0.1:/

--------------------------------------------------------------------------------

Q: How to browse FTP in Vifm?

A: Use CurlFTPFS FUSE filesystem on *nix, which you can find here:
     http://curlftpfs.sourceforge.net/
   And on Windows you need to use FTPDrive, which will mount an FTP remote as
   a drive for you.  Get it here:
     http://www.killprog.com/fdrve.html

--------------------------------------------------------------------------------

Q: How can I customize Vifm?

A: There are several ways to do that:

  - using vifmrc file (run `:goto $MYVIFMRC` to find it)
    This file can contain any of Vifm commands.  You probably would like to set
    mappings and options here.  Vifm will never change this file (it's similar
    to ~/.vimrc).

  - changing color scheme (run `:cd $VIFM/colors` to find color schemes)
    You can change colors of different TUI elements in existing color schemes or
    add a new one.

--------------------------------------------------------------------------------

Q: What operations can be undone/redone?

A: List of currently supported operations:
  - rename
  - move
  - copy
  - non-permanent removal (i.e., deletion to trash)
  - change of permissions (chmod)
  - owner change
  - group change
  - creation of symbolic links with absolute or relative paths
  - creation of directories

--------------------------------------------------------------------------------

Q: How to execute Vifm commands after using :! ?

A: The only way to do this is using :execute command.  Example:
  :execute ':!shell command' | some-other-command-here

--------------------------------------------------------------------------------

Q: Is there a way to copy/paste without sending to trash first?

A: Yes, to do that, one should yank (copy) files as usual, but use "P" key (not
   "p") to put (paste) them into current directory.

--------------------------------------------------------------------------------

Q: Vifm expands macros in a wrong way in user defined commands with Vifm's
   commands (like in `:command com :mkdir ~/tmp/%c:e | cd ~/tmp/%c:e`).  How to
   fix it?

A: Just double percent sign (%%).  Why?  Because user commands containing
   Vifm's command-line commands are parsed twice.  First time to replace %a
   macro, and second time during command execution.  So doubled percent sign
   will be parsed with single % during first parse and a %x macro will be
   expanded during second parse.

--------------------------------------------------------------------------------

Q: Vifm expands range in a wrong way in user defined commands (like in
   `:command com :%yank`) and shows "Invalid command name" message.  How to fix
   it?

A: See answer to the previous question.

--------------------------------------------------------------------------------

Q: How to make shell aliases and functions work in Vifm when running them like
   ":!foo"?

A: Here is a solution for bash, other shells should allow to do something
   similar.

   1. Add the following lines to ~/.bashrc

       shopt -s expand_aliases
       unset BASH_ENV

   2. Add the following line to ~/.vifm/vifmrc

       let $BASH_ENV = '~/.bashrc'

   After following the steps above aliases and functions should work the same
   way as if they were typed in interactive shell by user.  However, they won't
   be completed by <tab> completion.

--------------------------------------------------------------------------------

Q: How can I help Vifm?

A: Just use it and report any problems, bugs or suggestions to its developers by
   email or in bug trackers.  You can also send your configuration and
   colorscheme files to developers.  They can be collected and published on
   Vifm's web-site.  Examples of configuration files can also show how Vifm is
   typically used and suggest improvements of common use cases.
Hints

Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://code.reversed.top/user/xaizek/vifm

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@code.reversed.top/user/xaizek/vifm

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a pull request:
... clone the repository ...
... make some changes and some commits ...
git push origin master