Yesterday I tryed the fish-shell.

Well, in the morning I noticed that the Homepage was broken so I opened an issue and I got a really quick response. I thought the following:

there is one big internet community

where people help each other, in fact I can get a great piece of software and contribute back with a pr, opening an issue or whatever.

The community around fish-shell is part of that big community. In the evening I was also contacted by bucaran who is the author of many quality software projects, in particular fisherman.

So, I was really stimulated from the first day and most of all: fish-shell looks great.

First impressions

Tab completions, autosuggestions and syntax highlighting is really captivating! You can also update it by parsing installed man pages with fish_update_completion.

Web based configuration with fish_config seems a good idea but I tried it and customized few things and got an issue in the configuration. Don’t worry, to reset configuration just launch rm -rf $HOME/.config/fish.

In general, fish shell Design is really interesting and fascinating.

Cons

To be honest, right now I am missing my bash aliases and functionalities but I guess this nostalgia will not last long.

fish-shell seems not linked to GNU Readline, so for example CTRL-X-X shortcut which moves the cursor form the end of the line to the beginning and vice-versa does not work.

If I launch vi /path/to/file syntastic plugin complains

syntastic: error: your shell /usr/local/bin/fish can't handle traditional UNIX syntax for redirections
Press ENTER or type command to continue

However, if I use vim instead, it works.

Mmh, the day after I opened an issue here and got a quick answer that made my solve it. Yes, there is One Big community :)

By the way, you should add this line on top of your .vimrc, before loading any plugin

set shell=/bin/sh

Setup

I tryed it on Linux and OSX. On OSX you can install it with Homebrew

brew install fish

then to make it your default shell edit /etc/shells, for instance with sudo vi /etc/shells, and add the row

/usr/local/bin/fish

then run

chsh -s /usr/local/bin/fish

Plugins

So let’s try fisherman, and let’s trust its author too! Just launch

curl -L install.fisherman.sh | fish

(by the way, it works also from a bash shell :)

Ok ok, for those who do not feel comfortable with piping external content to their shell: you are right! Take a look to Installing fisherman detailed instructions.

First thing I miss is z which I installed at path ~/.shell/z/z.sh.

Install it with

fisher install omf/plugin-z

then configure a Z_SCRIPT_PATH variabile with the path where z.sh is installed

echo "set -g Z_SCRIPT_PATH ~/.shell/z/z.sh" >> ~/.config/fish/config.fish

Yes, fish-shell can run bash programs, and furthermore my z history is shared among shells.

It’s time to defeat bash nostalgia, let’s install Shellder, a beautiful powerline prompt. OSX Terminal supports powerline patched fonts, I chose Roboto Mono Medium for Powerline font. You can get them from powerline/fonts repo.

Once you have the proper fonts installed, launch

fisher install shellder

and you will get this

qs-install

If you want a nice minimal prompt, that does not require powerline patched fonts, try

fisher install pure

Resources