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 356dee8656123c7c8a05620aa3e7f96bda514ba1

Rework --help text to be more compact and readable
Author: xaizek
Author date (UTC): 2025-07-22 15:56
Committer name: xaizek
Committer date (UTC): 2025-07-22 15:56
Parent(s): 2b8ecb1e8f20cbf8b2bdcb5e3c6cf26b966eb30a
Signing key: 99DC5E4DB05F6BE2
Tree: 283af548c43f1c20f46c325e24c63b8df7a130ff
File Lines added Lines deleted
ChangeLog 2 0
src/args.c 53 52
File ChangeLog changed (mode: 100644) (index 3c26734a1..c4ddbd0c7)
51 51 Improved potentially confusing wording in the dialog confirming exit while Improved potentially confusing wording in the dialog confirming exit while
52 52 background jobs are running. background jobs are running.
53 53
54 Reworked --help output to be more compact and readable.
55
54 56 Fixed 'trashdir' with "%r" on BSD-like systems (those with getmntinfo() Fixed 'trashdir' with "%r" on BSD-like systems (those with getmntinfo()
55 57 instead of getmntent() API). The regression was apparently introduced in instead of getmntent() API). The regression was apparently introduced in
56 58 v0.9.1-beta. Thanks to sublimal. v0.9.1-beta. Thanks to sublimal.
File src/args.c changed (mode: 100644) (index 56cb030d8..50b287054)
... ... show_help_msg(const char wrong_arg[])
397 397 fprintf(stderr, "Wrong argument: %s\n\n", wrong_arg); fprintf(stderr, "Wrong argument: %s\n\n", wrong_arg);
398 398 } }
399 399
400 puts("vifm usage:\n");
401 puts(" To read list of files from stdin use\n");
402 puts(" vifm -\n");
403 puts(" To start in a specific directory give the directory path.\n");
404 puts(" vifm /path/to/start/dir/one");
405 puts(" or");
406 puts(" vifm /path/to/start/dir/one /path/to/start/dir/two\n");
407 puts(" To open file using associated program pass its path to vifm.\n");
408 puts(" If no path is given vifm will start in the current working directory.\n");
409 puts(" vifm --select <path>");
410 puts(" open parent directory of the given path and select specified file");
411 puts(" in it.\n");
412 puts(" vifm -f");
413 puts(" makes vifm instead of opening files write selection to");
414 puts(" $VIFM/vimfiles and quit.\n");
415 puts(" vifm --choose-files <path>|-");
416 puts(" sets output file to write selection into on exit instead of");
417 puts(" opening files. \"-\" means standard output.\n");
418 puts(" vifm --choose-dir <path>|-");
419 puts(" sets output file to write last visited directory into on exit.");
420 puts(" \"-\" means standard output.\n");
421 puts(" vifm --delimiter <delimiter>");
422 puts(" sets separator for list of file paths written out by vifm.\n");
423 puts(" vifm --on-choose <command>");
424 puts(" sets command to be executed on selected files instead of opening");
425 puts(" them. Command can use any of command macros.\n");
426 puts(" vifm --choose-files|--on-choose <arg> -1");
427 puts(" choose at most one item.\n");
428 puts(" vifm --plugins-dir <path>");
429 puts(" additional plugins directory (can appear multiple times).\n");
430 puts(" vifm --logging[=<startup log path>]");
431 puts(" log some operational details to $XDG_DATA_HOME/vifm/log or");
432 puts(" $VIFM/log. If the optional startup log path is specified and");
433 puts(" permissions allow to open it for writing, then logging of early");
434 puts(" initialization (before configuration directories are determined)");
435 puts(" is put there.\n");
400 puts("Usage: vifm [OPTION]... [ [--select] PATH [ [--select] PATH ] ]");
401 puts("");
402 puts("Forms of a PATH:");
403 puts(" * \"-\" specifies reading list of paths from stdin");
404 puts(" * a relative path to an existing directory to open");
405 puts(" * an absolute path whose deepest existing parent will be opened");
406 puts(" * a path to an existing file to open with a handler/editor");
407 puts(" * when omitted, a pane starts in current or its last visited "
408 "directory");
409
410 puts("");
411 puts("Generic OPTIONs:");
412 puts(" --select <path>");
413 puts(" navigate to <path> instead of entering/opening it (can appear before");
414 puts(" each PATH).");
415 puts(" -c <command> | +<command>");
416 puts(" run command-line mode <command> after startup.");
417 puts(" --no-configs");
418 puts(" don't process vifmrc and vifminfo on startup.");
419 puts(" --plugins-dir <path>");
420 puts(" add an additional plugins directory (can appear multiple times).");
421 puts(" --logging[=<startup log path>]");
422 puts(" log some operational details to $XDG_DATA_HOME/vifm/log or $VIFM/log.");
423 puts(" If <startup log path> is specified and writable, early initialization");
424 puts(" logs (before configuration directories are determined) are put there.");
425 puts(" --help | -h");
426 puts(" print this help message and exit.");
427 puts(" --version | -v");
428 puts(" print version information and exit.");
429
430 puts("");
431 puts("File-choosing OPTIONs:");
432 puts(" --choose-files <path>|-");
433 puts(" on file open, store selection in <path> or print it (\"-\") and exit.");
434 puts(" --delimiter <delimiter>");
435 puts(" separator of multiple paths for --choose-files (newline by default).");
436 puts(" --choose-dir <path>|-");
437 puts(" on exit, write current location to <path> or print it (\"-\").");
438 puts(" --on-choose <command>");
439 puts(" on file open, run <command> with expanded macros in a shell and exit.");
440 puts(" -1");
441 puts(" constrain --choose-files and --on-choose to at most one item.");
442 puts(" -f");
443 puts(" on file open, store selection in $VIFM/vimfiles and exit (prefer");
444 puts(" using --choose-* or --on-choose options over this one).");
436 445
437 446 #ifdef ENABLE_REMOTE_CMDS #ifdef ENABLE_REMOTE_CMDS
438 puts(" vifm --server-list");
439 puts(" list available server names and exit.\n");
440 puts(" vifm --server-name <name>");
441 puts(" name of target or this instance.\n");
442 puts(" vifm --remote");
443 puts(" passes all arguments that left in command line to vifm server.\n");
444 puts(" vifm --remote-expr <expr>");
445 puts(" passes expression to vifm server and prints result.\n");
447 puts("");
448 puts("Client-server OPTIONs:");
449 puts(" --server-list print names of active servers and exit.");
450 puts(" --server-name <name> name of a target or this instance.");
451 puts(" --remote send all arguments that are left on the "
452 "command line");
453 puts(" to a server.");
454 puts(" --remote-expr <expr> evaluate <expr> remotely and print the result.");
446 455 #endif #endif
447 puts(" vifm -c <command> | +<command>");
448 puts(" run command-line mode <command> on startup.\n");
449 puts(" vifm --help | -h");
450 puts(" show this help message and quit.\n");
451 puts(" vifm --version | -v");
452 puts(" show version number and quit.\n");
453 puts(" vifm --no-configs");
454 puts(" don't read vifmrc and vifminfo.");
455 456 } }
456 457
457 458 /* Prints detailed version information to the screen. */ /* Prints detailed version information to the screen. */
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