https://elv.sh/
先说结论:
对于能习惯 fish 的用户建议:别换,比 fish 难用很多,尤其是自动补全功能弱了很多,并非开箱即用
对于连 fish 都用不惯的用户建议:别换,你用不会的
首先对包管理器更新不是很激进的用户有个坑,0.18 对 0.16 的语法不兼容,想用插件的要注意版本问题。
对我来说从 fish 换到 elvish 的主要理由是:fish 已经失去专注交互体验的初心,被用户绑架加了太多兼容 bash 的东西。明明可以直接开个 bash 做的事情。
elvish 主打的是编程语言的体验,交互体验属于次要的,连编辑快捷键都要自己绑。
比如在 macOS 上,fish 能自动处理 path_helper,还支持 source POSIX 风格的 .profile,用 elvish 就需要自己写个两三行配置处理 path_helper 的输入,然后对 .profile 做替換处理以后再 eval。
对于新学一门 shell 编程语言没啥抵触的用户的话,还是挺带感的。
有个包管理器系统,不过因为版本迭代问题,没啥特别有用的插件,还不如直接抄点到配置里。
哦,忘了说了,elvish 支持在 pipe 里传数据结构,和外部程序可以通过把数据结构序列化成 JSON 来交互。
对于编程来说比较棒的是在加载脚本时 elvish 会执行一些静态检查,不至于只有执行以后才能发现错误。