Manjaro 系统 fish shell 安装调教记录

什么是 Fish Shell?

Fish 是用于 macOS、 Linux 和其他系列操作系统的智能且用户友好的命令行 shell。Fish 包括诸如语法突显、自动建议输入功能和精美的选项卡补全功能,这些功能都是开箱即用,不需要任何配置。

Fish 安装

对于基于 Arch Linux 的系统, 使用 Pacman 命令来安装 fish shell。

sudo pacman -S fish

fish 设置为默认 shell

echo $(which fish) | sudo tee -a /etc/shells
chsh -s $(which fish)

插件管理

这里推荐一个插件管理工具 Fisher,当然你也可以使用 oh-my-fish

# 安装插件管理器
curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher

安装成功之后,你就可以与 Fisher 交互式地安装、更新和删除插件

# 使用 install 命令安装插件,后跟 GitHub 上存储库的路径,要获得特定版本的插件,在插件名称后面添加一个@符号,后面跟一个tag、branch或commit
fisher install IlanCosman/tide@v5

# 使用 list 命令列出当前安装的所有插件
fisher list

# 使用 update 命令将一个或多个插件更新到它们的最新版本
fisher update [jorgebucaran/fisher]  # [] 表示可选

# 使用 remove 命令删除已安装的插件
fisher remove jorgebucaran/nvm.fish

# 移除所有插件
fisher list | fisher remove

插件推荐

虽然 Fish 开箱即用的功能已经很强大了,但是安装一些插件会让他如虎添翼。

1. IlanCosman/tide@v5

如果你曾是zsh用户,并且用过PowerLevel10k,那这个插件会带给你同样的快乐,安装插件成功后执行tide configure设置终端 prompt 样式

2. jethrokuan/z

类似autojump插件,比cd更快速地直接跳到想去的文件夹

3. andreiborisov/sponge

让指令历史记录更干净,不会去记录失败或打错的指令到历史记录中

4. jorgebucaran/autopair.fish

自动你补全 ()[]{}"" , 以及 ''

5. patrickf1/fzf.fish

fzf插件的升级版,使搜索功能更强大,具体可以前往 fzf.fish 进行了解,除了搜索历史命令(ctrl + r),还可以搜索文件、目录(ctrl + alt + f),进程号(ctrl + alt + p)和变量(ctrl + alt + v

6. jhillyerd/plugin-git

提供了大量git命令的缩写,节省敲击 git 命令的时间

关于虚拟环境

因为作者本人之前在zsh上是使用virtualenvvirtualenvwrapper管理Python的虚拟环境,但是fish shell中并不支持virtualenvwrapper,所以只能寻求其他方案,这里推荐使用 virtualfish

1. 安装
python -m pip install --user virtualfish (pipx install virtualfish)
2. 安装 VirtualFish 加载程序
# 新开终端执行
vf install
3. 常用命令
vf new [<options>] <envname> # Create a virtual environment.
vf ls [--details]  # List the available virtual environments.
vf activate <envname>  # Activate a virtual environment. (Note: Doesn’t use the activate.fish script provided by Virtualenv.)
vf deactivate  # Deactivate the current virtual environment.
vf upgrade [<options>] [<envname(s)>]  # Upgrade virtual environment(s).
vf rm <envname>  # Delete a virtual environment.
vf tmp [<options>]  # Create a temporary virtual environment with a randomly generated name that will be removed when it is deactivated.
vf cd  # Change directory to currently-activated virtual environment.
vf cdpackages  # Change directory to currently-active virtual environment’s site-packages.
vf globalpackages  # Toggle system site packages.
vf addpath  # Add a directory to this virtual environment’s sys.path.
vf all <command>  # Run a command in all virtual environments sequentially.
vf connect [<envname>]  # Connect the current working directory with the currently active (or specified) virtual environment. This requires the auto-activation plugin to be enabled in order to have any effect besides creating a .venv file in the current directory.
4. 插件推荐
vf addplugins auto_activation compat_aliases

# auto_activation 自动激活和退出虚拟环境
# compat_aliases 兼容 virtualenvwrapper 命令

上一篇:Arch 系安装Fcitx5中文输入法

下一篇:Manjaro 系统安装钉钉后输入框无法输入中文