marsevilspirit's blog

fish的配置

fish的配置

今天心血来潮,想试试现代shell是什么感觉。

下载fish

arch linux 可通过包管理器一键下载:

1
$ sudo pacman -S fish

使用fish

1
$ fish

刚开始感觉还不错,用rust写的东西就是高级😆。

修改fish的prompt

因为之前zsh的prompt用惯了,想改个跟之前一样的:

my prompt

想要自定义prompt,需要对fuction目录下的fish_prompt.fish进行修改:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 这是一个简单的提示符,格式如下
# mars:/last-dir (branch|status) $
# 若想自定义,这个网页有教程: https://fishshell.com/docs/current/cmds/fish_git_prompt.html
function fish_prompt
set -l __last_command_exit_status $status

set -l cyan (set_color -o cyan)
set -l yellow (set_color -o yellow)
set -l red (set_color -o red)
set -l blue (set_color -o blue)
set -l normal (set_color normal)
set -l white (set_color -o white --bold)

set -l name $white(whoami)
set -l cwd $cyan(basename (prompt_pwd))/

set -g __fish_git_prompt_showuntrackedfiles 'true'
set -g __fish_git_prompt_showcolorhints 'true'
set -g __fish_git_prompt_show_informative_status 'true'
set -g __fish_git_prompt_color_prefix blue
set -g __fish_git_prompt_color_suffix blue
set -g __fish_git_prompt_color_branch yellow --bold
set -l git_info (fish_git_prompt)

set -l dollar "$normal\$"

echo -n -s "$name $cwd$git_info $dollar "
end

再对right_prompt进行设置:

1
2
3
function fish_right_prompt -d "Write out the right prompt"
echo "["(date "+%H:%M:%S")"]"
end

最后完美复现先前的prompt。

禁用fish的自动补全

为什么我想禁用它呢?因为我觉得这个东西真的很烦,之前也没用过。

我查官方tutorial, 用下面的命令可以关闭:

1
$ set -g fish_autosuggestion_enabled 0

放在config.fish可以永久禁用。

我只能说一句:fish NB!

修改fish为默认shell

我们首先通过命令查看当前 shell:

1
$ echo $SHELL

查看操作系统中存在的 shell 有那些:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ cat /etc/shells
# Pathnames of valid login shells.
# See shells(5) for details.

/bin/sh
/bin/bash
/bin/rbash
/usr/bin/sh
/usr/bin/bash
/usr/bin/rbash
/usr/bin/git-shell
/bin/zsh
/usr/bin/zsh
/usr/bin/systemd-home-fallback-shell
/bin/fish
/usr/bin/fish <-- 我们发现Fish已经安装

切换 shell,在这里通过chsh命令实现:

1
$ chsh -s /usr/bin/fish

之后reboot重启系统就好了。

fisher插件管理器

我使用的fisher作为fish的插件管理器。

这里要避个雷,oh-my-fish已经不被维护了,不要在使用oh-my-fish了。

下面的操作具体看官方的github比较好:https://github.com/jorgebucaran/fisher

fisher的安装

1
$ curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher

Sep 2024