🇯🇵 日本語 | 🇺🇸 English | 🇪🇸 Español | 🇵🇹 Português | 🇹🇭 ไทย | 🇨🇳 中文

来试试Fish Shell强大的自动补全、语法高亮和历史记录功能吧

你好!各位刚踏入Web开发世界的新手朋友,以及希望让日常编码更舒适一些的中级开发者们。你们有没有想过,每天使用的“终端”可以变得更方便呢?🤔

很多人初次接触的shell可能是“Bash”,但这次我们要介绍的是一个非常智能且易于使用的shell——“Fish Shell”。Fish是“Friendly Interactive SHell”(友好交互式Shell)的缩写,正如其名,它对我们用户非常友好。

在本文中,我们将从Fish的众多魅力中,特别挑选出“强大的自动补全”、“直观的语法高亮”和“智能的历史记录”这三点,让大家亲身体验它的厉害之处。无需任何复杂的设置!只需复制粘贴文中的代码,你就能感受到“哇,真方便!”。来吧,让我们一起探索Fish的世界,极大地提升你的终端操作效率!🚀


🐠 不用再记命令了?Fish超强大的“自动补全”功能

终端操作中最让人头疼的,莫过于“那个命令是啥来着?”“选项怎么拼?”这样,每次都要回忆或查找命令的麻烦。Fish的自动补全功能将让这些烦恼成为过去。

当你开始输入命令时,它会根据历史记录和上下文,以浅灰色预测并显示你可能要输入的命令。如果预测正确,只需按下 (右箭头键) 或 Ctrl + F 即可完成输入!能惊人地减少打字量。

补全命令的子命令

例如,版本控制工具 `git` 有很多子命令(如 `commit`, `push`, `pull` 等)。只需输入 `git` 并按下空格键,Fish就会列出所有可用的子命令。

$ git 

(输入以上内容后,会列出 'add', 'blame', 'branch', 'checkout' 等)


补全选项(标志)

命令的选项也常常被忘记。但有了Fish就没问题了。输入一个连字符 `-`,它就会列出该命令所有可用的选项并附带说明。你几乎不再需要用 `man` 命令去查询了。

$ ls -

(输入以上内容后,会显示 '-a' (all), '-l' (long format), '-t' (sort by time) 等选项及其说明)


补全文件和目录的路径

当然,文件和目录的路径补全功能也非常强大。使用 `cd` 等命令开始输入路径时,按下 Tab 键即可列出候选项。随着你输入更多字符,候选项范围会逐渐缩小。这还能防止输入错误,真是一举两得!

$ cd D/P/

(例如,想移动到 'Documents/Projects/' 目录时,即使像上面那样输入大写字母,Fish也能智能地补全)


🎨 一目了然!直观的“语法高亮”

黑底白字的界面……不仅有点单调,而且很难分清内容吧。Fish默认会根据语法(Syntax)为文本着色。这样一来,命令的对错和文件类型就能一目了然。

有效命令为蓝色

系统中存在的、可执行的命令会以蓝色显示。输入瞬间就能直观地确认“啊,这个命令能用”,让人很安心。

$ ls -l

('ls' 会显示为蓝色)


无效命令为红色

反之,不存在的命令或拼写错误会以红色显示。在执行前就能发现错误,可以防止不必要的报错。这真的非常方便!

$ lss -l

('ls' 的拼写错误 'lss' 会显示为红色)


按文件和目录类型区分颜色

命令的执行结果也是彩色的。例如,使用 `ls` 命令时,目录会以粗体蓝色显示,可执行文件为绿色,压缩文件为红色等,根据类型进行着色。想找的东西马上就能找到。

$ ls

(当前目录下的文件和文件夹会以不同颜色显示)


🕰️ 边输入边搜索!增量式的“历史记录”功能

“想再用一次刚才那个长长的命令……” 这种时候,你是不是还在狂按 (上箭头键)?用Fish的话,可以更潇洒地调用历史记录。

Fish的历史记录搜索是基于“增量搜索”的。只需输入命令的一部分,它就会提示最近的包含该字符串的历史记录。

边输入边搜索历史记录

例如,假设你过去执行过几次 `git commit` 命令。在提示符后输入 `git`,然后按一下 键试试。这时,它不会只显示前一个命令,而是会只在以 `git` 开头的命令历史中进行回溯搜索。

$ git

(输入以上内容后按 ↑ 键,会显示过去以 'git' 开头的命令)


用关键词搜索整个历史记录

如果想搜索更早的历史记录,或者想通过命令中间的关键词来查找,`history search` 就很方便了。它会只列出历史记录中包含指定关键词的命令。

$ history search "commit"

(历史记录中包含 "commit" 字符串的命令会被列出)


🙋‍♀️ 遇到困难时的“帮助功能”

当你需要帮助时,Fish也同样友好。如果不知道某个命令怎么用,就试试 `help` 命令吧。

令人惊讶的是,Fish会在你的默认网页浏览器中自动打开许多命令的帮助页面(man page)。即使是不习惯在黑漆漆的窗口里阅读英文帮助文档的人,也可以在熟悉的浏览器中仔细阅读。

$ help ls

('ls' 命令的手册页会在网页浏览器的新标签页中打开)


⚠️ 使用Fish时的注意事项

到目前为止,我们介绍了很多Fish的优点,但有一点需要注意。那就是它和“Bash的语法差异”。

市面上许多shell脚本和配置示例仍然是基于Bash编写的。因此,从网上文章中找到的命令直接粘贴到Fish中,有时可能无法运行。

例如,设置环境变量的命令。在Bash中用 `export`,但在Fish中用 `set`。

在Bash中设置环境变量

# 这在Fish中会报错
$ export MY_VARIABLE="hello"

在Fish中设置环境变量

在Fish中,使用 '-x' 或 '--export' 选项来设置变量。

# 这才是Fish的正确写法
$ set -x MY_VARIABLE "hello"

一开始可能会有些不习惯,但Fish的语法更简单、更具一致性,习惯之后反而会觉得更容易理解。如果想执行Bash脚本,也可以通过 `bash -c "脚本内容"` 这样明确指定用Bash来执行。


总结

怎么样?以上只是Fish Shell强大功能的一小部分,但相信你已经能感受到它的便利之处了吧。

所有这些功能,在安装后无需任何额外设置即可使用。仅仅是消除了日常中的这些小烦恼,就能极大地提升编码的乐趣和专注度。

请务必借此机会安装Fish Shell,开启你舒适的终端生活吧!


大家也在阅读这篇文章

通过比较Fish和Bash的差异来学习基本操作流程