Fish Shell 3.7.0:在使用改进的同时保持C++

在Linux生态系统中,一个以其多功能性和强大性而突出的功能是用户可以选择的外壳种类繁多。

与经典的Bash以及Zsh和Tcsh等其他功能一样,Fish长期以来以其用户友好的方法和高级功能而被许多Linux用户广泛认可和采用。

最近宣布的Fish 3.7.0版本有超过1289次提交,加强了这一地位,并承诺进行增强和修复。让我们来看看它们。

鱼壳3.7.0

主要亮点

Fish 3.7.0改进了命令行历史管理。现在,用户可以毫不费力地找到具有子序列匹配的复杂命令行。历史寻呼机还引入了更智能的搜索功能和更直观的方式来处理不匹配的搜索查询。

关于性能,命令完成和全局化可以显著提高速度,尤其是在NFS等速度较慢的文件系统上,这对于处理繁重命令行工作负载的用户来说是一个巨大的胜利。

此次更新中的另一个突出功能是能够为多键序列设置超时,增强了vi模式下模式切换等功能的可用性。同时,LS_COLORS将不再自动设置,促使用户接受更个性化的配置。

脚本和命令行改进

  • 稳定性和灵活性:
    Fish 3.7.0解决了几个错误,并增强了脚本编写体验。从修复崩溃场景到改进内置
    工作
    ’命令,更新使脚本编写更加可靠和通用。
  • 互动体验:
    更新为交互体验带来了显著的变化,如改进了vi模式下的历史记录搜索、iTerm2中更好的工作目录报告以及增强的选择颜色配置。
  • 命令完成和提示增强功能:
    Fish 3.7.0还引入了用于历史管理的新绑定功能、改进的错误消息以及对外部命令的扩展支持。

美学和可用性调整

默认主题现在使用命名颜色,与终端调色板对齐,Dracula主题与上游更改同步。此外,提示会更准确地显示工作目录。

最后,Fish 3.7.0为各种命令添加了大量的补全,让用户的生活更轻松。该版本还改进了手动页面完成生成器,并进行了其他完成调整。

铁锈:前方之路

Fish shell主要是用C++编写的。然而,这种情况很快就会改变。

Fish的主要开发人员之一David Adam证实,几乎所有的C++代码都已成功过渡到Rust。这次转换增加了87029行Rust代码,同时删除了76776行C++代码,这标志着他们的最新更新100%重写。

然而,他澄清说,这一里程碑并不意味着新版Fish shell已经为最终用户做好了准备。该项目目前的状态很有希望,性能有所提高,但在某些领域也面临挑战。

值得注意的是,重写尚未实现其技术目标,尤其是在线程安全方面,这是向Rust过渡的主要动机。

此外,平台支持仍然是一个重大障碍。对Cygwin和MSys2等平台的短期支持似乎不太可能,而对较旧的Linux发行版的打包也带来了挑战。

考虑到这一点,现有的Fish第三个系列将继续使用C++进行编码。但是,当它推出第四个系列时,预计它将做出重大改变,将其主要编程语言转移到Rust。