写在前面的话

命令行(Command Line)一向是每位开发者都要或多或少掌握的功能,而Windows/Mac中的终端(Terminal)可谓非常不同,这篇文章详细的讲解了如何使用Hyper取代Mac上的默认终端,打造一个高颜值(划重点,强大的生产力工具,包括很多便捷功能:自动补全命令,记忆历史命令,文字着色与高亮,显示当前Git分支/标签等。

最终效果如下:

在这篇文章中,作者写的非常详细,就算新手也可以根据他的效果完成Hyper的设置。

【英译中】如何打造一款个人命令行终端:Hyper.js + ZSH + starship ☄️🔥

作者:Thomas Jaskiewicz
原文链接:https://tjay.dev/howto-my-terminal-shell-setup-hyper-js-zsh-starship/

我们每天都要接触终端界面,那怎么让它成为一件具有生产力的工具呢?我们应该使用怎样的终端界面?有什么小技巧可以提高我们使用它的效率呢?
每个开发者在购入新电脑的时候,所做的第一件事大概率都是设置终端环境。在这里,我想与你分享一下我自己在使用的终端环境。

Talk is cheap, let’s show some code.

1. 终端 - Hyper.js

1.1 下载并安装Hyper

先进入Hyper官网下载符合你OS的版本,在这里我下载的是MacOS版本。我们解压Hyper-3.0.2-mac.zip得到Hyper.app文件。只要把它拖入Applications文件夹即可进行安装。现在,使用Spotlight Search功能(CMD + 空格),键入hyper,你应该就可以看见Hpyer这个app在列表里了。

现在Hyper的窗口长这个样子:

如果你的看起来不太一样?不用担心,我们稍后再处理这个,因为一开始你可能用了不同的终端界面,或设置。

1.2 基础设定

现在,来施与一些魔法。Hyper的设置文件在 ~/.hyper.js (笔者:使用命令“open ~/.hyper.js”)路径下。文件看起来像这个样子:

 

有一些非常酷的内容!可以通过修改这里的字段来随心所欲地设置终端。
先让我们从基础设定开始吧。

1.2.1 字体(Font)
  • 字体尺寸(fontSize):个人来说,我比较喜欢稍大一些的字体,我在这里把它调整为13。之后你可以通过“CMD”+“+”“CMD”+“-”快捷键来调整字体的大小。
  • 字型(fontFamily):来试试FiraCode吧,这是一种连体合字类型的字体。下面是一个预览。

安装教程在这里。但我更喜欢手动安装(MacOS环境下):

  • 在Github的release页面中下载最新版的字型:Releases · tonsky/FiraCode · GitHub - 在我写这篇文章的时候,最新版是Fira_Code_v5.2.zip
  • 解压文件,得到ttf文件夹。
  • 全选文件夹内的所有.ttf文件,右键,打开,选择安装字体

现在,字体已经装好并且可以在Hyper中进行设置了。(就像刚才说的那样)设置文件在Home路径下。

在终端中执行:

 

现在我们就设置好了FiraCode字型,但是连字还没被开启,现在开启它。
我们需要装一个专门用来干这个的插件 :hyper-font-ligatures

在终端中执行:

插件应该立即出现在你的设置文件中:

 

然而,为了开启连字,我们还得在设置文件里再多加一行(查阅issue #8zeit/hyper#3607):

 

现在,所有的都应该和我们预想的一样了,可以在终端中看到新的连字字型:

1.2.2 主题(Theme)

Hyper可以下载非常多的主题:Hyper Store - Plugins。我们这次用Hyper Store - hyper-one-dark

在终端中执行:

 

然后我们界面就会看起来像这样:

1.2.3 搜索插件(Search Plugin)

要开启搜索功能的话,需要安装另一个专门的插件:Hyper Store - hyper-search

这次需要重启一下Hyper,在重启之后就可以用搜索功能了:

1.2.4 方格导航插件(Pane Navigation Plugin)

为了在不同的区域方格中进行操作,我们需要安装 Hyper Store - hyper -pane

 

怎么运作?

1.2.5 在同一目录中打开新的标签页

总是想在同一路径打开新的标签页?没问题。使用 Hyper Store - hypercwd

1.2.6 为当前标签页增加图标

每次打开很多标签页时,总是难分清当前标签页是哪一个。有一个插件可以帮助你更好地分辨他们:Hyper Store - hyper-active-tab

 

然后自己设置一个图标:

就会变成这样子:

1.2.7 显示CPU,内存和电池状态

增加这个插件 GitHub - Hyperline/hyperline: ✨ Status line plugin for Hyper ✨,可以显示CPU,内存和电池状态:

 

重载一下界面(Shit + CMD + R),下面就会显示一行状态栏:

甚至还能显示当前在Spotify播放的歌曲!

1.2.8 Bonus:如此强大的力量!

Javascript几乎允许我们做任何事。来看看这个 Hyper Store - hyperpower

 

于是:

 

与此同时,还有很多有意思的插件正在被开发中。你可以通过这两个地方找到你心仪的插件:

2 Shell - ZSH + starship

在Linux上,有很多界面可以用:

尝试了数不清的界面以后,我选择ZSH

2.1 安装ZSH

在Mac OS下安装:

还没有安装homebrew?没关系,通过以下命令安装它(官方安装文档在这里):

homebrew是macOS上的一个包管理器。

在安装ZSH后,检查一下它的版本号:

为了指定让Hyper使用ZSH,我们需要更新一下设置项(~/.hyper.js):

 

现在,Hyper重启以后就会默认载入ZSH作为默认的shell,我们可以进行下一步了。

2.2 安装starship

starship是一个提示符(Prompt)拓展,它可以帮助你在shell中标注一些重要信息。再尝试了非常多的拓展之后,这次我们选择 GitHub - starship/starship: ☄️🌌️ The minimal, blazing-fast, and infinitely customizable prompt for any shell! 进行安装。

2.2.1 安装

在官方文档中,介绍了很多方法来安装 GitHub - starship/starship: ☄️🌌️ The cross-shell prompt for astronauts

在Mac OS下:

检查一下安装是否完成:

为了启用starship,我们还需要在~/.zshrc中添加一些设置项。执行接下来的命令,把设置项加到~/.zshrc的末尾:

 

重启Hyper,就会出现如下界面:

但是!至此为止shell还是没有语法高亮,命令候选,历史记录,别名等种种功能,接下来我们需要调整一下。

2.2.2 语法高亮

GitHub - unixorn/awesome-zsh-plugins: A collection of ZSH frameworks, plugins & themes inspired by the various awesome list collections out there是一个Github上面ZSH插件的综合仓库。来找个语法高亮插件吧!

这次试用GitHub - zdharma/fast-syntax-highlighting: (Short name F-Sy-H). Syntax-highlighting for Zshell – fine granularity, number of features, 40 work hours themes

这次安装用“克隆仓库”的方式(这有助于以后的版本更新):

但是也有可能会执行失败:

请使用Https的方式进行克隆:

 

再一系列的安装步骤后,语法高亮就被开启了:

2.2.3 命令候选

GitHub - robbyrussell/oh-my-zsh 里有一个定义好的completion.zsh文件:

这次要在~/.zshrc文件中多加几行:

 

重启命令行工具,现在命令候选也有了:

你可能会问,为什么我不直接用Oh My Zsh呢?个人感觉,Oh My Zsh有点负担过于沉重了。我比较倾向于对自己所使用的工具有点掌控能力,我选择一步一步从零开始开始搭建一个庞然大物。

2.2.4 自动提示(Auto Suggestions)

在上面的候选项功能基础上,有自动提示功能就更好了。有了自动提示,只要用户一开始键入命令就会显示你可能想要的内容,试试 GitHub - zsh-users/zsh-autosuggestions: Fish-like autosuggestions for zsh

安装:

 

这个插件真的在自动提示方面干得非常出色,你可以按方向键来接受来自系统的提示。

2.2.5 命令历史的设置

现在我们要用一个Oh My Zsh上已经准备好的设置文件,来设置我们的命令历史。

 

现在,按方向键的上下键,你可以跳到上一次输入的命令。
你甚至可以使用Control + R来搜索输入过的命令。

2.2.6 给ls的结果着色

现在如果我们想列出文件夹中的内容,是一个灰色的列表:

看上去不太妙啊,或许加点颜色让他更可读比较好。

在使用ls命令的时候,有个-G选项。

但是,每次都加上-G可就太累了,于是我们创建一个别名(Alias):

2.2.7 快捷键

既然每天都要用命令行工具,那么快捷键就是必要的。使用按键跳转光标到一行的开始(CMD + ←),或者跳转光标到一行的结束(CMD + →)。

安装快捷键绑定:

2.2.8 别名(Aliases)

在使用命令行工具的时候,别名很有用处。你可以预先定义一些快捷命令,在你开发APP或者编写脚本的时候确实地提升你的效率。

下面罗列出了一些我经常用的别名:

~/.zsh/aliases.zsh

还有一些小小的福利,这里有一些git的别名可以帮助你。下面的命令很宽泛,但是我写了一些注释来帮助你理解这些命令是做什么的。

~/.gitconfig

总结

我希望这篇文章能帮助你提升你的命令行工具使用效率(最好是爆炸性的!)。以上也只是一个入门或者初级的,而非最终形态的解决方案。还有数不清的工具,插件和设置等待着你去发掘。每个使用者都有自己不同的环境,不同的技术。

我尽量把注意力放在了许多使用者都会用到的一些功能上面。

如果你也有一些非常棒的迫不及待想要介绍给大家的工具,欢迎留下你的评论。