使用 Fish shell 提高命令行效率

2025-06-10

使用 Fish shell 提高命令行效率

终端操作方法多种多样。这就是它的魅力所在:无限的自定义和调整,让工作更快、更高效。

在我使用 WSL 的过程中,我遇到了心爱的 zsh 和 oh-my-zsh 组合的性能问题。我琢磨了一个小时,偶然发现了 fish shell,它在 WSL 中的运行速度比 zsh 快 10 倍(这里没有具体的指标,但感觉真的非常快😅🚀)。但它也有一些自身的怪癖,我们稍后会看到。

安装 Fish Shell 🐟

如果您使用基于 Debian 的发行版:

$ sudo apt-get install fish 
Enter fullscreen mode Exit fullscreen mode

如果您使用的是其他平台,请按照此处的说明进行操作

Fish Shell 简介

Fish Shell 开箱即用,轻量级、性能卓越⚡,功能丰富。这意味着您无需费力操作即可在终端中高效工作。一些原生功能包括:

  • 语法高亮,

  • 自我暗示

  • 制表符补全和

  • 自动加载功能。

文档丰富详尽,您可以通过在 Fish Shell 中输入 help 来获取本地托管在浏览器中的文档。对于大多数人来说,全新安装即可开始使用。但我们希望通过插件、主题等功能进行调整,使其更加实用。与其他 Shell 一样,Fish 自带了许多插件框架,但我们将使用名为oh-my-fish (omf) 的插件框架。

介绍 omf

omf 是 fish shell 上的一层薄薄的组件,因此不会影响速度和性能。只需一条命令即可安装:

$ curl -L https://get.oh-my.fish | fish
Enter fullscreen mode Exit fullscreen mode

完成此操作后,您将在 shell 中使用 omf 命令来安装主题和其他有用的插件。它非常直观,如果您使用过 nvm 或 pip,您会感觉非常熟悉。

您可以在此处了解命令的基本内容

带有 omf 的主题🎨

这里有各种各样的主题供您选择。您可以在这里找到所有主题,也可以使用命令 omf theme 列出所有主题,并查看已安装的主题和默认主题。

安装新主题将直接应用该主题。

$ omf install <theme-name>
$ omf install bira
Enter fullscreen mode Exit fullscreen mode

列出主题并在已安装的主题之间进行切换。🎨
列出主题并在已安装的主题之间进行切换。🎨

如果您安装了多个主题,则可以使用以下方式在它们之间切换:

$ omf theme <theme-name>
Enter fullscreen mode Exit fullscreen mode

带有 omf 🍦 的别名

当你想用尽可能少的按键完成重复的任务时,别名会非常方便。Fish Shell 有一个名为 alias 的命令来定义你的别名。你可以直接从命令行执行此操作。

$ alias <alias> '<command>' -s
$ alias install 'sudo apt-get install' -s
$ alias remove 'sudo apt-get remove --purge' -s
Enter fullscreen mode Exit fullscreen mode

您可以使用安装别名安装任何软件包,或者使用删除别名将其完全卸载。

$ install vim 
$ remove python2.7
Enter fullscreen mode Exit fullscreen mode

创建别名 raw `install` endraw ✍
创建别名install

使用 alias 命令创建的别名仅在一个会话中有效,这意味着如果您创建新的终端实例,它们将无法正常工作。为了使其正常工作,我们必须传递 -s 标志。这将在后台运行 funcsave。

现在它已永久设置,可在任何情况下使用。如果您忘记了别名,可以使用 alias 命令来召唤它们。

列出所有别名。📃
列出所有别名。📃

使用 nvm

fish shell 的一个怪癖是它无法像nvm那样原生运行一些 bash 实用程序。为此,你需要一个名为bass的包来将 nvm 暴露给 fish shell。

bass 创建了一个框架来支持其他 Bash 实用程序包,例如我们将要使用的fish-nvm包。nvm 包也有,但 fish-nvm 不会成为性能瓶颈。

$ omf install bass
$ omf install https://github.com/FabioAntunes/fish-nvm
Enter fullscreen mode Exit fullscreen mode

使用虚拟环境🐍

这只是使用 fish shell 的陷阱之一。当你使用 Python 虚拟环境时,你无法以正常方式激活它。

$ python -m venv venv
$ source venv/bin/activate
Enter fullscreen mode Exit fullscreen mode

相反,fish shell 添加了一个名为 activate.fish 的脚本来启用 shell。

$ source venv/bin/activate.fish
Enter fullscreen mode Exit fullscreen mode

基本套餐 📦

八打灵再也

pj 让你能够以可预测的方式轻松地在你常用的目录之间跳转。你只需要告诉 pj 在哪里查找你的项目/文件夹,它就会通过 Tab 键自动补全让你轻松跳转。

$ omf install pj
Enter fullscreen mode Exit fullscreen mode

例如:我的主目录中有一个名为 test 的文件夹,其中还有一堆其他文件夹。

要将测试文件夹标记为跳转目标,我们需要设置项目路径:

$ set -Ux PROJECT_PATHS ~/test
Enter fullscreen mode Exit fullscreen mode

现在我可以从终端中的任何位置在测试目录内的文件夹之间跳转。

PJ 出击!⚡
PJ 出击!⚡

z

z 与 pj 类似,但它更智能,可以跟踪您访问次数最多的文件夹,以便您轻松跳转到该位置。

$ omf install z
Enter fullscreen mode Exit fullscreen mode

就像我说的,z 是一个智能工具,即使我打错了一个与您最常访问的文件夹名称非常相似的拼写错误,它也会尝试解决并导航到该文件夹​​。

z 在行动!⚡
z 在行动!⚡

插件-git

与 zsh 中的 git 插件一样,plugin-git 包为您提供了一组标准的 git 别名,以加速您的 git 工作流程。

$ omf install https://github.com/jhillyerd/plugin-git
Enter fullscreen mode Exit fullscreen mode

plugin-git 正在运行!⚡
plugin-git 正在运行!⚡

不仅如此,为了确保你使用的别名正确,它还会扩展别名以形成完整的命令。点击此处查看完整的别名列表

零点

Fuzzy Finder 或 fzf 是一个通用命令行工具,可以更快地查找任何内容,无论是文件还是命令历史记录。

$ omf install https://github.com/jethrokuan/fzf
Enter fullscreen mode Exit fullscreen mode

要搜索命令历史记录,您可以使用组合键ctrl + r或写下命令的某些部分,然后点击组合键以仅查找与您的查询匹配的命令。

fzf 正在行动!🔍
fzf 正在行动!🔍

如果您想在当前目录中搜索文件,那么您可以点击ctrl + o并浏览它们。您可以使用此工具做更多的事情,请查看此处的使用部分

结论🙏

希望本文能帮助您安装 Fish Shell,并提升工作流程的效率。如果您有任何建议或疑问,欢迎在下方留言。

鏂囩珷鏉ユ簮锛�https://dev.to/yankee/command-line-productivity-with-fish-shell-52e4
PREV
Git Worktree 实用指南
NEXT
如果你住在小镇,如何成长为一名开发人员?我如何发现自己滑倒了,但没有放弃?如何撰写技术博客,并且在没有读者的情况下也不要放弃?如何用英语制作截屏视频,以及为什么要这样做?我从中得到了什么?