Fish Shell Cheat Sheet
Lam
Posted on May 13, 2021
[Completions] Examples
Start each example with complete -c cmdname
-x
# no filename completion
-s d -x -a "read skip"
# -d {read|skip}
-s d -x
# -d <something>
-s f -r
# -f FILE
-s f -l force
# -f, --force
-a "(cat /etc/passwd | cut -d : -f 1)"
# first argument as filename
[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'
[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 ".."
Example
complete -c $cmd \
-n '__fish_use_subcommand' \
-x -a hello \
--description 'lol'
[Completions] Creating completions
~/.fish/completions/mycommand.fish
complete -c mycommand ...
complete -c mycommand ...
complete -c mycommand ...
[Function] Events
Emitting
emit my_event
Listening
function myhook --on-event my_event
···
end
This lets you hook onto events, such as fish_prompt
.
[Function] Combining tests
if test -f foo.txt && test -f bar.txt
if test -f foo.txt -a -f bar.txt
if test \( -f foo.txt \) -a -f \( bar.txt \)
[Function] Conditional
if test -f foo.txt
···
else if test -f bar.txt
···
else
···
end
[Function] Writing functions
function my_function --description "My description"
···
end
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
💖 💪 🙅 🚩
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.