Fish Shell Cheat Sheet

hoanganhlam

Lam

Posted on May 13, 2021

Fish Shell Cheat Sheet

[Completions] Examples

Start each example with complete -c cmdname

-x
  # no filename completion
Enter fullscreen mode Exit fullscreen mode
-s d -x -a "read skip"
  # -d {read|skip}
Enter fullscreen mode Exit fullscreen mode
-s d -x
  # -d <something>
Enter fullscreen mode Exit fullscreen mode
-s f -r
  # -f FILE
Enter fullscreen mode Exit fullscreen mode
-s f -l force
  # -f, --force
Enter fullscreen mode Exit fullscreen mode
-a "(cat /etc/passwd | cut -d : -f 1)"
  # first argument as filename
Enter fullscreen mode Exit fullscreen mode

[Completions] Conditions

Condition Description
-n __fish_complete_directories STRING DESCRIPTION performs path completion on STRING, allowing only directories, and giving them the description DESCRIPTION.
-n __fish_complete_path STRING DESCRIPTION performs path completion on STRING, giving them the description DESCRIPTION.
-n __fish_complete_groups prints a list of all user groups with the groups members as description.
-n __fish_complete_pids prints a list of all processes IDs with the command name as description.
-n __fish_complete_suffix SUFFIX performs file completion allowing only files ending in SUFFIX. The mimetype database is used to find a suitable description.
-n __fish_complete_users prints a list of all users with their full name as description.
-n __fish_print_filesystems prints a list of all known file systems. Currently, this is a static list, and not dependent on what file systems the host operating system actually understands.
-n __fish_print_hostnames prints a list of all known hostnames. This functions searches the fstab for nfs servers, ssh for known hosts and checks the /etc/hosts file.
-n __fish_print_interfaces prints a list of all known network interfaces.
-n __fish_print_packages prints a list of all installed packages. This function currently handles Debian, rpm and Gentoo packages.
-n __fish_use_subcommand
-n __fish_seen_subcommand_from init

Example

complete -c ruby -s X -x -a '(__fish_complete_directories (commandline -ct))' --description 'Directory'
Enter fullscreen mode Exit fullscreen mode

[Completions] Options

complete \
  -c                         # command
  -s                         # short option
  -l                         # long option
  -r, --require-parameter
  -f, --no-files
  -x                         # exclusive (-r -f)
  -n '__fish_use_subcommand' # condition
  --description ".."
Enter fullscreen mode Exit fullscreen mode

Example

  complete -c $cmd \
-n '__fish_use_subcommand' \
-x -a hello \
--description 'lol'
Enter fullscreen mode Exit fullscreen mode

[Completions] Creating completions

~/.fish/completions/mycommand.fish

complete -c mycommand ...
complete -c mycommand ...
complete -c mycommand ...
Enter fullscreen mode Exit fullscreen mode

[Function] Events

Emitting

emit my_event
Enter fullscreen mode Exit fullscreen mode

Listening

function myhook --on-event my_event
  ···
end
Enter fullscreen mode Exit fullscreen mode

This lets you hook onto events, such as fish_prompt.

[Function] Combining tests

if test -f foo.txt && test -f bar.txt
Enter fullscreen mode Exit fullscreen mode
if test -f foo.txt -a -f bar.txt
Enter fullscreen mode Exit fullscreen mode
if test \( -f foo.txt \) -a -f \( bar.txt \)
Enter fullscreen mode Exit fullscreen mode

[Function] Conditional

if test -f foo.txt
  ···
else if test -f bar.txt
  ···
else
  ···
end
Enter fullscreen mode Exit fullscreen mode

[Function] Writing functions

function my_function --description "My description"
  ···
end
Enter fullscreen mode Exit fullscreen mode

Help

| Alt H | Help on word (man) |
| Alt W | Help on word (short descriptions) |
| Alt L | List directory on cursor |
{: .-shortcuts}

Keys

Shortcut Description
Alt ← / Alt → Move word
^U Delete to beginning
^W Delete to previous /
^D Delete next character
Alt D Delete next word
^C Cancel line
Alt P Page output
--- ---
Alt ↑ / Alt ↓ Previous / next arguments
Alt E / Alt V Open in external editor
^L Repaint screen

Reference

💖 💪 🙅 🚩
hoanganhlam
Lam

Posted on May 13, 2021

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related

Fish Shell Cheat Sheet
fishshell Fish Shell Cheat Sheet

May 13, 2021