Fish shell

Не так давно у меня появилось немножко свободного времени, и я решил посмотреть аналоги моему любимому zsh. Не могу сказать, что он меня в чем то неустраивал, напротив, многие его фишки, включая подсветку, дополнение по Tab и автоматическое раскрытие путей, пришлись мне по душе.

Одновременно с этим @saratovsource намекнул, что пересел на Fish shell около полугода назад и вполне доволен.

{% img /images/posts/2014-07-15-fish-shell/logo.png %}

И так, Fish (friendly interactive shell) - это командная оболочка для Unix-подобных операционных систем. К её плюсам можно отнести подсветку синтаксиса и продвинутое автодополнение из коробки.

1. Предсказание пути

Не нужно больше переходить в отдельный режим, набирая Ctrl-r, чтобы найти и выполнить команду из истории. Fish предлагает варианты по мере того, как вы набираете. И если это то что вам нужно, смело жмите Ctrl-f или right. Очень удобно!

{% img /images/posts/2014-07-15-fish-shell/fish1-o.gif %}

Есть аналогичный плагин для zsh - zsh-autosuggestions.

2. Поиск при дополнении по Tab

Также полезная и удобная штука.

{% img /images/posts/2014-07-15-fish-shell/fish2-o.gif %}

3. fish_config

Команда fish_config запускает простенький веб-сервер c приложением, которое позволяет вам менять некоторые параметры оболочки (темы, оформление), просматривать список функций, переменных окружения и историю. Функциональность более чем спорная, ведь большинству пользователей не составляет труда посмотреть/поменять настройки прямо в консоли.

4. Fish и Zsh

У Fish не такое большое и активное сообщество как у Zsh. Тут уж не поспоришь. Но, так как текущей функциональности вкупе с несколькими плагинами вполне достаточно для комфортной работы и баги фиксится довольно быстро, это не должно иметь решающее значение.

5. Общие впечатления

Вообще после zsh Fish кажется очень быстрым (1). Во многом за счет предсказания пути скорость переходов становиться почти заоблачной :)

Из минусов, могу выделить отсутствие дополнения alias’ов по Tab’у. То есть, если у вас допустим gco - alias git checkout, то Fish не предложит вам список веток. Для этого придется набрать git co. Возможно в будущей версии это будет исправлено.

Также Fish не совместима со стандартами POSIX (not POSIX compliant). Это значит, что скорей всего не получиться скопировать Bash однострочник из Интернета и выполнить его в командной строке - синтаксис чуточку другой. Плюс некоторые утилиты (например autoenv или Vim) из-за этого могут работать не совсем корректно. В случае с Vim, это решается добавлением set shell=/bin/bash в .vimrc.

Итоги

В целом впечатления положительные. Может Fish и сыроват по сравнению с тем же zsh, но некоторые его возможности просто поражают. Так что советую попробовать, тем более, что сейчас перейти с одной облочки на другую можно за пару минут.

Дополнительные ссылки:

(1) - вполне возможно причиной некоторых тормозов является используемый мною oh-my-zsh.

Anton Kaliaev

Software engineer, blogger, public speaker, traveler

Ulyanovsk, Russia http://homeonrails.com