Nu shell 升级到 0.78.0,一堆麻烦

这一次的升级挺恼火的。

看到 nu shell 发布新版本了,看更新日志好像挺不错。于是我下载压缩包,解压,到「终端」改一下设置,就可以使用新版本了。

但是一上来就报错,真心看不懂,使用 0.78 加载以前的配置文件会报错,说要加 ||

42 │ # Use nushell functions to define your right and left prompt
43 │ let-env PROMPT_COMMAND = { create_left_prompt }
· ───────────┬──────────
· ╰── Parsing as a closure, but || is missing
44 │ let-env PROMPT_COMMAND_RIGHT = { create_right_prompt }
╰────
help: Try add || to the beginning of closure

查看一下 GitHub issues :Error: nu::parser::closure_missing_pipe (nushell v0.78.0) · Issue #8767 · nushell/nushell (github.com)

means that it should be

let-env PROMPT_COMMAND = {|| create_left_prompt }

如果只是一行需要修改,那倒是无所谓,问题是很多地方需要改,那么一个一个加也不是办法呀,还是让它重新生成配置文件吧。

于是我把 env.nuconfig.nu 改个名字,再新开一个 tab,就会提示是否新建配置文件。

使用新的配置文件之后,可以不报错了,但是,ohmyposh这边又有问题了。

修改 env.nuconfig.nu 这两个文件,让 nu 启动时加载 ohmyposh,结果出现这样的报错。

Error: nu::parser::closure_missing_pipe

× Missing || inside closure
╭─[.oh-my-posh.nu:8:1]
8 │ # making the behavior different compared to other shells
9 │ let-env PROMPT_COMMAND_RIGHT = {''}
· ──┬─
· ╰── Parsing as a closure, but || is missing
10 │ let-env POSH_SHELL_VERSION = (version | get version)
╰────
help: Try add || to the beginning of closure

也就是说,现在 .oh-my-posh.nu 里面的语法也是错误的了。

于是我到 https://github.com/JanDeDobbeleer/oh-my-posh/releases/ 查看一下。果然,它也刚刚更新了。

Bug Fixes

  • nushell: update syntax to for v0.78.0 (7e04bdc)

于是我更新 oh-my-posh 到最新的版本,就解决问题了。