Hike News

从 zsh 到 fish shell

很扯淡的前言:本文是一篇很随意的文章。大概是前几天一个晚上,杰哥唐突说:“没有配置过的 zsh 就是 shit,甚至不如 bash,如果使用的是没有配置过的 zsh,那么你的人生令人难过,我是佛祖 我拯救你 快换fish”,妈耶吓死千千了,于是抱着猎奇的心态,我就这样下载了一次 fish。

下载 fish shell

之前我的电脑终端是 oh-my-zsh 里的某个主题,vps 上的是 zsh,谈不上好看和好用,起码说他是彩色的而且有一些视觉上的『交互』?(描述并不是很准确。omzsh 我没有下载什么插件,同样也没有配置任何东西,对于我这种只在终端 cd 和 ls 的玩家好像无关紧要,但是对于杰哥那种运维来讲也许算是折磨吧。也许他们崇尚一种『开箱即用』的理念,而懒得花费时间去进行无聊的配置,所以 fish —正好满足他们这种需求。

在 mac OS 环境下载 fish (使用 homebrew)

brew install fish

把 fish 添加到列表

vim /etc/shells 在最后加上 /usr/local/bin/fish

切换 shell 到新下载的 fish

chsh -s /usr/local/bin/fish

这样 shell 从 zsh 变成了 fish,你会看见一条可爱的小鱼。

来试试骚气的东西,比如:

set fish_greeting 'FUCKING CODE RIGHT NOW 你可以设置一个 greeting

sudo scutil --set HostName MBP👉👉👉💋 你可以修改一下曾经很无聊的 hostname

当然等等这些沙雕玩意在别的 shell 同样可以设置,只不过会在不同程度影响启动速度罢了。比如 omzsh 我设置完了这些没卵用的东西后,启动速度肉眼可见的变慢。但是换做 fish ,你不必担心。

OMF 的安装

言归正传,既然 zsh 有 oh-my-zsh,那么优秀的 fish 当然有 oh-my-fish 与其对应了: https://github.com/oh-my-fish/oh-my-fish 。OMF 是 fish shell 的框架,可以管理 fish 的配置、主题和插件。

他有一万种下载方法

curl -L https://get.oh-my.fish | fish 我选择 curl 这个官方一键脚本

更新插件和主题

omf update

下载包

omf install [<name>|<url>]

列出已下载的包

omf list

管理包

omf repositories [list|add|remove]

应用某个主题

omf theme <theme>

查看故障

omf doctor

……等等等等,简直就是个低配版 homebrew 哇,麻雀虽小五脏俱全的感觉。简单看完这些用法之后,就要动手换一下主题啦,提升一下原本黑洞洞的颜值。

动手简单配置

主题的话,https://github.com/oh-my-fish/oh-my-fish/blob/master/docs/Themes.md ,列出了好多好多不错的选择,我随意选择了 bobthefish 这一款。

使用 OMF 下载 bobthefish

omf install bobthefish

但是并没有和预想的一样,因为还需要下载一些字体和奇怪的 icon

git clone https://github.com/powerline/fonts.git --depth=1

cd fonts

./install.sh

cd ..

rm -rf fonts

cd ~/Library/Fonts && curl -fLo "Droid Sans Mono for Powerline Nerd Font Complete.otf" https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/DroidSansMono/complete/Droid%20Sans%20Mono%20Nerd%20Font%20Complete.otf

手动应用这些字体:
iTerm2 -> Preferences -> Profiles -> Text -> Font : Noto Mono for Powerline, monofor for Powerline

set -g theme_powerline_fonts yes

set -g theme_nerd_fonts yes

重启终端,成功啦,接下来我们更改配色方案,我选择了 zenburn 。
可以预览配色方案

bobthefish_display_colors // 预览

vim ~/.config/fish/config.fish // 写入配置

set -g theme_color_scheme zenburn

简单的玩法就这些,进阶的可以看文档折腾,下面上图。

我觉得花花绿绿的海星

结语

fish 真的好用吗?我个人而言

  • 单独是 fish,下载完就有「
    Autosuggestions」功能 ,根据你的历史命令给你建议,类似于 zsh 的 tab 键自动补全,不过这个你不用按 tab,也不用打过多的字母,右方向键就可以,节省了很多的时间。不过其他 shell 也有插件实现这个功能,可惜需要下载或者手写,而且有启动速度慢的风险。
  • fish 有管理插件、主题的 OMF,还有文中没有提过的管理插件的 fisherman ,和包管理器 fundle
  • fish 做到了开箱即用。
  • fish 启动速度贼快。

可是 fish 不太支持 bash 语法。不过 ls,cd,rm -rf 什么的无所谓哈哈哈。

就像是世界上最好的语言是什么?新手机要不要贴膜戴壳一样,shell 究竟哪个好用,仁者见仁智者见智。大不了我们可以 cat /etc/shells 然后随便 random 一个!万一有一天我们嫌弃了 OMF,不妨 omf destroy ,这时候还要最后感谢 OMF 的方便~哈哈


(完)