由于 Warp 对 .zshrc 的调整,MacOS 上的 WebStorm 终端无法正常工作

WebStorm's terminal on macOS is not working because of Warp's adjustments to .zshrc

提问人:Edgar P-Yan 提问时间:11/13/2023 最后编辑:LazyOneEdgar P-Yan 更新时间:11/13/2023 访问量:47

问:

我现在使用 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 打开它的集成终端没有任何问题。但是 WebStorm 就是不起作用,它只是卡在空的终端窗口并永远保持这种状态:zshenter image description here

但是,如果我从 WebStorm 的终端中删除上述 Warp 线,就会开始工作,但现在 Warp 无法包装子外壳。.zshrc

这是一个已知问题吗?我试过谷歌搜索,但找不到任何相关的东西。我假设它的输出以某种方式破坏了 WebStorm,尽管 VSCode 工作得很好。有没有办法让 WebStorm 在某种程度上“忽略”正在写入输出的内容?printf ...printf

macOS zsh WebStorm JetBrains-IDE warp-terminal

评论


答:

0赞 Edgar P-Yan 11/13/2023 #1

我发现了一个有点骇人听闻的解决方案:事实证明,WebStorm 为其集成的 shell 存储了一个环境变量。因此,只需在 之前添加一个条件,以检查它是否在 WebStorms 终端内运行:TERMINAL_EMULATOR=JetBrains-JediTermifprintf

# 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 有一些配置来处理这些类型的输出会更好。