Fish Shell 配置笔记
记录一下关于fish
的使用和配置。
概述
fish
和zsh
是最常见的两种用于替代默认bash
的现代shell,两者的定位有点区别:
fish
对用户友好,开箱即用,不需要复杂配置,缺点是语法与bash
不兼容;zsh
兼容bash
的语法,缺点是必须进行较复杂的配置,否则和bash
使用体验差不多。
对这些shell的主题配置,通常都会基于oh-my-zsh
、oh-my-fish
以及pwsh
的oh-my-pwsh
这些美化工具进行,
但是鉴于fish
的开箱即用特点,我决定不使用美化工具,默认的就可以了。
由于fish
不兼容bash
的语法,因此通常不建议将其作为默认shell使用,而是在登陆后手动开启fish
1
fish
这样我们可以继续使用bash
的.bashrc
进行环境变量等配置,fish
也会自动继承相应的配置。
使用
fish
默认支持实时更新的彩色显示,对于无效命令使用红色进行警告,有效命令则显示为蓝色,对于有效路径会显示下划线提示。
(这些默认行为都可以通过配置修改)
fish
会自动给出命令提示,以灰色显示在光标之后,可以使用向右方向键自动补全,使用tab
则会列出更多的候选项,命令提示会自动学习历史记录。
fish
中对于含空格的参数,可以使用\
转义或者使用单引号、双引号包裹。
1
2
3mkdir My\ Files
cp ~/Some\ File 'My Files'
ls "My Files"
fish
直接支持通配符,管道和输出重定向等操作,基本和bash
相同。
还有很多使用细节,直接查看Fish 官方文档即可。
配置
在fish
中发挥类似.bashrc
角色的文件是~/.config/fish/config.fish
,其中的内容在fish
启动时被执行。
如果觉得内容放在一个文件中比较复杂,可以将其拆分为若干个.fish
文件,存放在~/.config/fish/conf.d/
目录下,
这些文件的载入顺序在config.fish
之前。
我们还可以定义专门的function
,对函数文件要求以function
名称作为文件名,加上后缀.fish
,存放于~/.config/fish/functions/
目录下,这些函数都会在fish
启动时自动加载,载入顺序也在config.fish
之前。
我们可以添加fish_greeting.fish
文件,使用空函数代替默认的欢迎语
1
2function fish_greeting
end
除此之外,fish
还会把一部分配置变量保存到~/.config/fish/fish_variables
文件中,通常使用set -U
或者浏览器设置的主题颜色等会保存在这里,例如set -U fish_greeting
也可以达到关闭欢迎语的效果。
这里我们只关注了用户级的配置文件,实际上还有很多系统级配置文件。