0%

fish or zsh? 我爱fish!

fish好用,谁赞成,谁反对?

从大一暑假刚刚开始接触linux开始,我就一直用的是fish, 最近在用服务器的时候,服务器只有zsh没有fish,我也使用了一段时间的zsh,也给自己的电脑配置了一下zsh(mac默认的shell就是zsh,可是我一直没有配置)。两者比较下来,我还是觉得fish是最好用的shell,没有之一。

fish的优点

  1. 开箱即用,使用一条命令即可完成安装,不需要额外的配置:

    1
    2
    sudo apt install fish   # linux
    homebrew install fish # mac

    当然fish也可以使用Oh My Fish自定义主题,但是我感觉自带的主题已经很清晰好看了。

  2. 智能的自动补全:zsh安装autosuggestions插件之后,也可以实现类似的功能,但是zsh的自动补全更像是根据历史命令来补全,并不关心上下文,而fish的自动补全是基于上下文的,在不同的位置会有不同的补全;而且 fish 还会自动解析 man page,智能补全命令。

  3. 速度快,相比于配置多种多样插件的zsh来讲,fish的速度更快

fish广为诟病的缺点:不兼容bash!

这确实是fish相比zsh的非常严重的不足之处,每当遇到比较复杂的bash命令时,需要输入bash先回到bash,再执行bash命令。但是,我觉得这个问题并不是很严重,因为我在使用fish的时候,基本上都是在做一些简单的操作,比如cdgitscp等,在执行这些命令的时候,智能的自动补全对于我来说是比较重要的;对于比较复杂的操作,通常会写成一个shell脚本,直接使用bash环境执行,

zsh的配置

我也使用了一段时间的zsh,在这里简单分享一下我最简版的zsh配置(出于速度考虑,这里全部使用的是gitee上的镜像仓库):

Oh my zsh安装

第一步 → 把 oh-my-zsh 项目 Clone 下来:

1
git clone https://gitee.com/mirrors/oh-my-zsh.git ~/.oh-my-zsh

第二步 → 复制 .zshrc

1
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc

第三步 → 更改你的默认 Shell

1
chsh -s /bin/zsh

自动补全插件

1
git clone https://gitee.com/xiaoqqya/zsh-autosuggestions.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

编辑~/.zshrc

Add the plugin to the list of plugins for Oh My Zsh to load (inside ~/.zshrc):

1
2
3
4
plugins=( 
# other plugins...
zsh-autosuggestions
)

​ Start a new terminal session.

语法高亮插件

1
git clone https://gitee.com/mirror-hub/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

和上面的步骤一样

1
plugins=( [plugins...] zsh-syntax-highlighting)

字体主题:

如果你和我一样不知道使用什么主题的话,可以先用一段时间的random,每次打开终端都会随机选择一个主题,直到你找到一个你喜欢的主题为止。

也可以参考一下这个主题列表

现在我使用的是这个主题:af-magic