Fish is a smart & user-friendly command line shell for Linux, macOS, and the rest of the family. Unlike other shells, which disable certain features by default to save system resources, Fish enables all features by default—finally, a command line shell for the 90s!
A curation of plugins, prompts, and other treasures for the friendly interactive shell. This page is not an official Fish project. We do not to advertise for profit. Want to have your project featured here? Send us a pull request.
Install Fish
sudo apt-add-repository ppa:fish-shell/release-4
sudo apt-get update && sudo apt-get upgrade
sudo apt-get install fish
chsh -s $(which fish)
fish_add_path -m ~/.local/binsudo pacman -S fish
chsh -s $(which fish)
fish_add_path -m ~/.local/binNerd-Fonts - Iconic font aggregator, collection, & patcher
Install FiraCode
git clone --filter=blob:none --sparse https://github.com/ryanoasis/nerd-fonts
cd nerd-fonts
git sparse-checkout add patched-fonts/FiraCode
./install.sh FiraCodeFisher - Manage functions, completions, bindings, and snippets from the CLI
curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisherfzf - Ef-🐟-ient key bindings for junegunn/fzf. (Alternative)
Install dependencies
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install-
sudo apt install fd-find ln -s $(which fdfind) ~/.local/bin/fd
paru -S cachyos-extra-v3/fd -
sudo apt install bat ln -s /usr/bin/batcat ~/.local/bin/bat
paru -S cachyos-extra-v3/bat
Finally install fzf with Fisher
fisher install PatrickF1/fzf.fishSponge - Clean command history from typos automatically
fisher install meaningful-ooo/spongeSometimes you want to ignore sponge_delay variable and access the whole history of the current session. In such cases you can instruct Sponge to purge entries only on shell exit with sponge_purge_only_on_exit variable:
set sponge_purge_only_on_exit trueAutopair - Auto-complete matching pairs in the Fish command-line. (Alternative)
fisher install jorgebucaran/autopair.fishfisher install jorgebucaran/getopts.fishInstall pyenv:
curl -fsSL https://pyenv.run | bashConfigure fish shell to use pyenv:
set -Ux PYENV_ROOT $HOME/.pyenv
test -d $PYENV_ROOT/bin; and fish_add_path $PYENV_ROOT/binInstall a pyenv fisher plugin to setup completions and shell integration:
fisher install amir20/fish-pyenv Tide - A modern prompt manager for Fish
fisher install IlanCosman/tide@v6-
Install byobu
sudo apt install byobusudo pacman -S byobu -
Start byobu on login
byobu-enable -
Enable mouse in byobu
-
Create/open
~/.byobu/profile.tmuxand add the following linessource $BYOBU_PREFIX/share/byobu/profiles/tmux ## Make mouse useful, tmux > 2.1 include select, resize pane/window and console wheel scroll set -g mouse on ## Lower escape timing from 500ms to 50ms for quicker response to scroll-buffer access set -s escape-time 50
-
-
Delete next word with
Ctrl + Deleteand previous word withCtrl + Backspace-
Open
~/.config/fish/functions/fish_user_key_bindings.fishand add the following lines within the functionbind \x7f backward-delete-char # Normal Backspace deletes characters bind \b backward-kill-word # Ctrl+Backspace deletes words bind \e\[3\;5~ kill-word # Bind Ctrl+Delete to delete the next word
[!NOTE]
Termiuson iOS registers bothbackspaceandctrl + backspacewith the same keycode^H. So, you may want to skip the backspace keybindings.You can check what your terminal gets on a keypress by entering
catand pressing the key you want to check. -
-
Install
keychain:sudo apt install keychainsudo pacman -S keychain
-
Add these lines to
~/.config/fish/conf.d/keychain.fish:if status is-login and status is-interactive # To add a key, set -Ua SSH_KEYS_TO_AUTOLOAD keypath # To remove a key, set -U --erase SSH_KEYS_TO_AUTOLOAD[index_of_key] keychain --eval $SSH_KEYS_TO_AUTOLOAD | source end
[!TIP]
SSH_KEYS_TO_AUTOLOADis an array of key paths to be loaded bykeychain. You can add or remove keys from the array as needed.Add multiple keys to
SSH_KEYS_TO_AUTOLOADarrayset -Ua SSH_KEYS_TO_AUTOLOAD ~/.ssh/{key1,key1.pub,key2,key2.pub}