vscode Shell集成在与Tide提示符一起使用时,当使用Fish shell时会破坏提示符,

jmo0nnb3  于 4个月前  发布在  Vscode
关注(0)|答案(4)|浏览(156)

VS Code 版本:1.80.0(通用)

OS 版本:macOS 13.4.1(22F82)

重现步骤

  1. Fish 设置为您系统的默认 shell。
  2. 安装 Tide 提示符。
  3. 在启动集成终端时观察损坏的提示符和错误消息:
fish: Unknown command: '_tide_item_pwd git'
~/.config/fish/functions/_tide_1_line_prompt.fish (line 4): 
        _tide_item_$item
        ^~~~~~~~~~~~~~~^
in function '_tide_1_line_prompt'
in command substitution
fish: Unknown command: '_tide_item_status cmd_duration context jobs'
~/.config/fish/functions/_tide_1_line_prompt.fish (line 11): 
        _tide_item_$item
        ^~~~~~~~~~~~~~~^
in function '_tide_1_line_prompt'
in command substitution

截图

  • Shell 集成已禁用,Tide 已安装

  • Shell 集成已启用,Tide 未安装

  • Shell 集成已启用,Tide 已安装(提示符损坏)

r7s23pms

r7s23pms1#

看起来这是由于 #185355 引起的,并破坏了依赖于声明 fish prompt 函数的文件中局部变量的提示符。使用以下 fish_prompt.fish 文件重现问题很简单:

set TEST hello

function fish_prompt
echo $TEST
end

现在,在设置中禁用终端 › 集成 › Shell 集成:已启用。创建一个新的终端窗口,您应该看到 "hello" 作为提示符。再次启用 shell 集成并创建另一个新的终端窗口,提示符现在将为空。

编辑:具体来说,它正在复制 fish_prompt 函数,该函数破坏了对本地变量的链接。从手册页来看:
使用 -c 复制函数仅复制函数的主体,并不附加来自原始函数的任何事件通知。
这意味着使用函数源代码文本创建了一个新的函数,而不是像 JavaScript 开发人员可能期望的那样复制引用。我认为 #185355 可能需要回退。
我已经测试过这一点,并确认这不是问题所在。所以还有其他事情在发生,需要进行更深入的调查,但我现在没有足够的时间。

8iwquhpp

8iwquhpp2#

是的,这里也存在同样的问题。

nfg76nw0

nfg76nw03#

Same issue, though in my case I'm seeing an extra newline at the end of the prompt.
IlanCosman/tide#433

waxmsbnn

waxmsbnn4#

为了补充这一点,我使用Hydro并刚刚注意到我遇到了这个问题。禁用shell集成可以解决问题。

相关问题