---
title: "Fish shell && Starship = 终端配置懒人包"
title-en: "Fish shell && Starship = Terminal Configuration for the Lazy"
tags: ["fish", "shell"]
categories: ["shares"]
pubDate: "2020-06-20T13:11:54.000Z"
isDraft: false
---

## 一段废话

试图解决闪屏的问题，打算重新装遍系统。

苹果做电子消费品的态度真的是让人不服不行，照常理说，重装系统算挺硬核的操作了吧。

> Mac产品经理：我觉得重装系统这种事吧，偶尔用户是有需要的，咱们设计个快捷键入口，让他们想装就装吧。
>
> 工程师：？？？？？

然后工程师肝出了这么个重装系统[^1]的方法，重启电脑，之后：

1. 从互联网安装最新版本的 macOS：按住 Option-Command-R 直到旋转地球出现，然后松开按键。

    此选项将安装与您电脑兼容的 macOS 最新版本。

2. 从互联网重新安装您电脑原始版本的 macOS：按住 Shift-Option-Command-R 直到旋转地球出现，然后松开按键。

极致的简化逻辑，甚至于使得男同学接近女同学的方法又被无情 `-1`。

除此之外，整个体验中，稳定的下载速度也是必不可少的。系统镜像通常要5、6GB的大小，不稳定的下载速度可能会让人烦躁（此处鞭尸巨硬）。

因为第一次装成了出厂自带的版本，我又重新装了一次，过程丝毫不痛苦，开机按个快捷键，然后去玩会新出的荒野乱斗，系统就装好等待配置了。两次的体验趋同，稳如老狗。

一直使用的`zsh`和`ohmyzsh`，以及`spaceship`主题，装完系统准备还原工作环境的时候，打开终端，刚想把复制来的`ohmyzsh`的安装命令粘贴执行，按回车的小手被崇尚新鲜感的心理给制止了，于是到`gayhub`想找个不同的“配置傻瓜包”或者主题。

于是我找到了标题的 [Fish Shell](https://fishshell.com) 和 [starship](http://starship.rs/)。

## Fish shell

**ohmyzsh**把配置一个简单易用的zsh终端环境简化为：

-   执行安装命令
-   克隆插件仓库，在配置中选择自己要用的插件
-   使用

> Fish开发者：蛤？有点麻烦，不能开箱即用算哪门子方便

于是，使用**fish**的步骤是：

1. 执行安装命令
2. 使用

这里其实是把过程的步骤简化的夸张了点，实际中还有切换默认**shell**等等步骤，但整个过程对于我这种对高级功能没什么需求的人来说，这个过程已经被化简到极致了，我感觉自己以后是不会再碰**zsh**和**ohmyzsh**了，除非**fish**跟我一个日常使用的环境工具有不可调节的冲突。

## Fish shell懒人配置

**fish**默认支持语法高亮，自动补全。打开开关就可以使用**vim-mode**。几乎涵盖了我**zsh**中经常使用的插件。

一直没听说过，但fish的支持度比我预期的要高，安装**autojump**时，打印的信息中有关于在fish中如何配置的说明。conda环境也支持一行命令自动配置fish。

唯一的一个小痛点是自动补全不能映射之前使用的 `,` 。

关于**fish**被称为更现代的shell的原因我还没了解，其高级特性我也一窍不通，但我真的挺喜欢它，在讨好懒人方面它给了我很好的第一印象。

## starship：开箱即用又配置丰富

使用**brew**装好之后，在**shell**配置文件加一行执行命令就可以使用了。

如果你想配置各种语言工程**prompt**的**icon**，文档有完整的例子，甚至还有中文文档。

> 用户：我想改golang的prompt的emoji图标，这个老鼠太丑了
>
> ：来，把这一行加进去，换个你喜欢的emoji吧

## 效果图

![](https://static.yuhang.ch/blog/fish-in-starship_1.png)

[^1]: [重新安装 macOS](https://support.apple.com/zh-cn/guide/mac-help/mchlp1599/mac)