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.
Commit 3b90eeaaca4e8336a37cc083e9ee41841798343c

Adjust and copy doc updates to the manual
Author: xaizek
Author date (UTC): 2026-01-13 18:48
Committer name: xaizek
Committer date (UTC): 2026-01-13 18:48
Parent(s): cd4d9d03cab19d238a1413879141470faee34ef1
Signing key: 99DC5E4DB05F6BE2
Tree: d3cfee502663c7a1e1ae64433fcf51806df782f3
File Lines added Lines deleted
ChangeLog 4 0
data/man/vifm.1 89 1
data/vim/doc/app/vifm-app.txt 19 18
File ChangeLog changed (mode: 100644) (index 2302e8e9a..4f682dc6c)
81 81 Improved description of the local filter in the documentation. Thanks to Improved description of the local filter in the documentation. Thanks to
82 82 CaptainFantastic. CaptainFantastic.
83 83
84 Documented quoting and escaping on command-line. Patch by Kirill Rekhov.
85
86 Documented name conflict resolution dialog. Patch by Kirill Rekhov.
87
84 88 Fixed 'trashdir' with "%r" on BSD-like systems (those with getmntinfo() Fixed 'trashdir' with "%r" on BSD-like systems (those with getmntinfo()
85 89 instead of getmntent() API). The regression was apparently introduced in instead of getmntent() API). The regression was apparently introduced in
86 90 v0.9.1-beta. Thanks to sublimal. v0.9.1-beta. Thanks to sublimal.
File data/man/vifm.1 changed (mode: 100644) (index 4523dbaf6..9ac410cd5)
1 .TH VIFM 1 "21 December 2025" "vifm 0.15"
1 .TH VIFM 1 "13 January 2026" "vifm 0.15"
2 2 .\" --------------------------------------------------------------------------- .\" ---------------------------------------------------------------------------
3 3 .SH NAME .SH NAME
4 4 .\" --------------------------------------------------------------------------- .\" ---------------------------------------------------------------------------
 
... ... Example:
1424 1424 .EE .EE
1425 1425 This means the complete command is nohlsearch, and the short one is noh. This means the complete command is nohlsearch, and the short one is noh.
1426 1426
1427 Parsing of the text after the colon is based on quoting and escaping rules.
1428 These rules determine how Vifm splits the entered text into arguments. Note:
1429 some commands, such as :echo, interpret their arguments as expressions,
1430 which use their own syntax (see "Expression syntax").
1431
1432 Supported mechanisms:
1433
1434 - single quotes '...'
1435 The content is taken literally.
1436 Backslash escaping does not work inside.
1437 However, '' inside single quotes is replaced with ' (same as in Vim).
1438 Everything between the quotes becomes a single argument.
1439
1440 - double quotes "..."
1441 Also form a single argument.
1442 A backslash inside double quotes escapes the next character (for example,
1443 \\" becomes a quote, \\\\ becomes a backslash).
1444 Some C‑style escape sequences are interpreted (\\a, \\b, \\f, \\n, \\r,
1445 \\t, \\v).
1446
1447 Example:
1448 :echo "a b\ c \"x\""
1449 output:
1450 a b c "x"
1451
1452 - backslash escaping \\
1453 Outside quotes, it allows including spaces, quotes, or a backslash
1454 into an argument.
1455 Works similarly in double quotes and does not work inside single quotes.
1456
1457 Example (visible behavior):
1458 :command Foo touch a\ b
1459 defines the Foo command with a single argument: a b
1460
1461 Calling it:
1462 :Foo
1463 creates a file named:
1464 a b
1465
1466 After processing quotes and backslashes, most commands split the line into
1467 arguments by whitespace. Some commands (such as :substitute or
1468 :tr) can use custom characters as separators.
1469
1427 1470 Most of command-line commands completely reset selection in the current view. Most of command-line commands completely reset selection in the current view.
1428 1471 However, there are several exceptions: However, there are several exceptions:
1429 1472 .RS 2 .RS 2
 
... ... directory was modified not by operation that are meant for it. But this
7808 7851 won't lead to any issues with operations, since they ignore nonexistent won't lead to any issues with operations, since they ignore nonexistent
7809 7852 files. files.
7810 7853 .\" --------------------------------------------------------------------------- .\" ---------------------------------------------------------------------------
7854 .SH Name conflicts
7855 .\" ---------------------------------------------------------------------------
7856 When copying, moving, or creating symbolic links, Vifm can encounter a name
7857 conflict: a file with the same name already exists in the target directory.
7858 In such cases Vifm shows a dialog asking how to resolve the conflict.
7859
7860 Available actions:
7861
7862 - overwrite
7863 Replace the existing file with the incoming one.
7864
7865 - overwrite all
7866 Apply the overwrite action to all further conflicts during the same
7867 operation without asking again.
7868
7869 - skip
7870 Do not copy or move the file that caused the conflict.
7871
7872 - skip all
7873 Skip all further conflicting files without prompting.
7874
7875 - rename
7876 Enter a new name for the incoming file.
7877 Pressing Enter without typing a new name keeps the old name and causes
7878 the dialog to appear again.
7879
7880 - merge
7881 For directories: copy only missing files from the source directory into
7882 the existing one.
7883
7884 - merge all
7885 Apply the merge action to all further directory conflicts.
7886
7887 - append
7888 If the destination file is shorter, append the missing tail bytes from the
7889 source file.
7890 Example: if the source is 1000 bytes and the destination is 300
7891 bytes in size, the last 700 bytes of the source are appended. This action
7892 is intended for resuming interrupted copy operations.
7893
7894 Notes:
7895
7896 - The conflict dialog appears for :put, p, P, al and rl commands.
7897 - Conflict resolution choices apply only to the current operation.
7898 .\" ---------------------------------------------------------------------------
7811 7899 .SH File copying .SH File copying
7812 7900 .\" --------------------------------------------------------------------------- .\" ---------------------------------------------------------------------------
7813 7901 For enabling copy-on-write of BTRFS on Linux, set "fastfilecloning" flag of For enabling copy-on-write of BTRFS on Linux, set "fastfilecloning" flag of
File data/vim/doc/app/vifm-app.txt changed (mode: 100644) (index c2bd8f548..a823aaeea)
... ... Example: >
1261 1261 This means the complete command is nohlsearch, and the short one is noh. This means the complete command is nohlsearch, and the short one is noh.
1262 1262
1263 1263 *vifm-commands-quoting* *vifm-commands-quoting*
1264 Parsing of text after the colon is based on quoting and escaping rules. These
1265 rules determine how Vifm splits the entered text into arguments. (Note: some
1266 commands, such as :echo, interpret their arguments as an expression, but the
1267 quoting rules themselves remain the same.)
1264 Parsing of the text after the colon is based on quoting and escaping rules.
1265 These rules determine how Vifm splits the entered text into arguments. Note:
1266 some commands, such as |vifm-:echo|, interpret their arguments as expressions,
1267 which use their own syntax (see |vifm-expression-syntax|).
1268 1268
1269 1269 Supported mechanisms: Supported mechanisms:
1270 1270
 
... ... Supported mechanisms:
1276 1276
1277 1277 - double quotes "..." - double quotes "..."
1278 1278 Also form a single argument. Also form a single argument.
1279 A backslash inside double quotes escapes the next character
1280 (for example \" becomes a quote, \\ becomes a backslash).
1281 Some C‑style escape sequences are interpreted (e.g. \n, \t).
1279 A backslash inside double quotes escapes the next character (for example,
1280 \" becomes a quote, \\ becomes a backslash).
1281 Some C‑style escape sequences are interpreted (`\a`, `\b`, `\f`, `\n`,
1282 `\r`, `\t`, `\v`).
1282 1283
1283 1284 Example: Example:
1284 1285 :echo "a b\ c \"x\"" :echo "a b\ c \"x\""
1285 output: a b c "x"
1286 output:
1287 a b c "x"
1286 1288
1287 1289 - backslash escaping \ - backslash escaping \
1288 1290 Outside quotes, it allows including spaces, quotes, or a backslash Outside quotes, it allows including spaces, quotes, or a backslash
1289 1291 into an argument. into an argument.
1290 Inside double quotes it works the same way.
1291 It does not work inside single quotes.
1292 Works similarly in double quotes and does not work inside single quotes.
1292 1293
1293 1294 Example (visible behavior): Example (visible behavior):
1294 1295 :command Foo touch a\ b :command Foo touch a\ b
 
... ... Supported mechanisms:
1300 1301 a b a b
1301 1302
1302 1303 After processing quotes and backslashes, most commands split the line into After processing quotes and backslashes, most commands split the line into
1303 arguments by spaces. Some commands (such as :substitute or :tr) use different
1304 separators.
1304 arguments by whitespace. Some commands (such as |vifm-:substitute| or
1305 |vifm-:tr|) can use custom characters as separators.
1305 1306
1306 1307 *vifm-commands-and-selection* *vifm-commands-and-selection*
1307 1308 Most of command-line commands completely reset selection in the current view. Most of command-line commands completely reset selection in the current view.
 
... ... Available actions:
6636 6637
6637 6638 - append - append
6638 6639 If the destination file is shorter, append the missing tail bytes from the If the destination file is shorter, append the missing tail bytes from the
6639 source file. Example: if source is 1000 bytes and destination is 300 bytes,
6640 the last 700 bytes of the source are appended. This is intended for
6641 resuming interrupted copy operations.
6640 source file.
6641 Example: if the source is 1000 bytes and the destination is 300
6642 bytes, the last 700 bytes of the source are appended. This is intended
6643 for resuming interrupted copy operations.
6642 6644
6643 6645 Notes: Notes:
6644 6646
6645 - The conflict dialog appears for :copy, :move, and for link creation
6646 commands (like al or ar).
6647 - File extensions are not modified automatically when renaming.
6647 - The conflict dialog appears for |vifm-:put|, |vifm-p|, |vifm-P|,
6648 |vifm-al| and |vifm-rl| commands.
6648 6649 - Conflict resolution choices apply only to the current operation. - Conflict resolution choices apply only to the current operation.
6649 6650
6650 6651 -------------------------------------------------------------------------------- --------------------------------------------------------------------------------
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