fishを使っていてハマッたのが、
関数を定義しても永続化されないことです。

永続化するには
funcsave を使う必要があります。

一方で、
funced を使えば外部エディタで
関数を定義・編集できます。

この場合も funcsave を使って
永続化する必要があります。

両者を組み合わせた関数
fed を定義しました。

関数

~/.config/fish/functions/fed.fish に
以下の内容を書きます。

function fed
	funced $argv[1]; and funcsave $argv[1]
end

実行例

$ fed hoge
Waiting for Emacs...
$ type hoge
hoge is a function with definition
function hoge
    echo hoge!!
end
$ cat ~/.config/fish/functions/hoge.fish
function hoge
        echo hoge!!
end
$ hoge
hoge!!

最後までお読みいただき、ありがとうございました。参考になれば嬉しいです。