WebStorm 在 macOS 上的终端由于 Warp 对 .zshrc 的调整而无法工作

问题描述 投票:0回答:1

我使用 Warp(Mac 的终端模拟器)与 vscode 结合使用了几个月,没有出现任何问题。 Warp 具有“包装”它运行的 shell 的功能,使其更适合使用某些 GUI 功能,但要使其与子 shell 一起使用(即,当您在另一个 zsh 中打开一个新的 zsh 时),您必须将这些行添加到

.zshrc 

# Warp: this is used to warpify subshells.
# Learn more: https://docs.warp.dev/features/subshells.
printf '\eP$f{"hook": "SourcedRcFileForWarp", "value": { "shell": "zsh" }}\x9c'

VSCode 使用

zsh
打开其集成终端,没有任何问题。但 WebStorm 就是不起作用,它只是卡在空的终端窗口上并永远保持这样的状态:

但是如果我从

.zshrc
WebStorm 的终端中删除上述 Warp 线,WebStorm 的终端就会开始工作,但现在 Warp 无法包裹子 shell。

这是一个已知问题吗?我尝试过谷歌搜索但找不到任何相关内容。我认为

printf ...
的输出以某种方式破坏了 WebStorm,尽管 VSCode 工作得很好。有没有办法让WebStorm“忽略”
printf
正在写入输出?

macos zsh webstorm jetbrains-ide warp-terminal
1个回答
0
投票

我发现了一个有点hacky的解决方案:事实证明,WebStorm为其集成的shell存储了一个环境变量

TERMINAL_EMULATOR=JetBrains-JediTerm
。因此,只需在
if
之前添加
printf
条件即可检查它是否在 WebStorms 终端内运行:

# Warp: this is used to warpify subshells.
# Learn more: https://docs.warp.dev/features/subshells.
# Note: don't run it inside the WebStorms terminal, as it will break. 
if [[ ! $TERMINAL_EMULATOR = "JetBrains-JediTerm" ]]
then
    printf '\eP$f{"hook": "SourcedRcFileForWarp", "value": { "shell": "zsh" }}\x9c'
fi

它可以工作,但如果有一些配置可以让 WebStorm 只处理这些类型的输出,那就更好了。

© www.soinside.com 2019 - 2024. All rights reserved.