【问题标题】:IntelliJ's embedded terminal does not load fish functionsIntelliJ 的嵌入式终端不加载 fish 函数
【发布时间】:2018-03-18 10:53:45
【问题描述】:

我正在使用 IntelliJ 的嵌入式终端和 fish shell,它运行良好,但有一个例外:它似乎没有加载 ~/.config/fish/functions/* 中定义的鱼函数。

当我使用 macOS Terminal.app 或 iTerm2 时,函数按预期加载,只有 IntelliJ 的嵌入式终端无法加载。

奇怪的是,IntelliJ 终端确实加载 ~/.config/fish/config.fish 就好了。

这是echo $fish_function_path 在 iterm2 和 Terminal.app 中的输出:

/Users/moritz/.config/fish/functions
/usr/local/Cellar/fish/2.6.0/etc/fish/functions
/usr/local/share/fish/vendor_functions.d
/usr/local/Cellar/fish/2.6.0/share/fish/functions

这是在 IntelliJ 的嵌入式终端中运行时的输出:

/Applications/IntelliJ IDEA.app/Contents/plugins/terminal/fish/functions
/usr/local/Cellar/fish/2.6.0/etc/fish/functions
/usr/local/share/fish/vendor_functions.d
/usr/local/Cellar/fish/2.6.0/share/fish/functions

我猜这看起来像 IntelliJ 的嵌入式终端使用 $fish_function_path 的不同值初始化 fish 会话?

$HOME (=/Users/moritz) 和 $XDG_CONFIG_HOME(未设置)在 iTerm2、Terminal.app 和 IntelliJ 的嵌入式终端这三者中都是相同的。

【问题讨论】:

  • 请关注此问题:youtrack.jetbrains.com/issue/IDEA-173259 以获取更新。
  • 信息不足且相互矛盾 :-) 如果 fish 能够找到 config.fish,那么从您的个人函数目录中自动加载函数应该没有困难。在 IntelliJ 中运行 fish 时,$HOME 和 $XDG_CONFIG_HOME 设置为什么?假设前者已设置但未设置后者“ls -ld $HOME/.config/fish/functions”输出什么? $fish_function_path 设置为什么?如果你创建一个简单的自动加载函数,在 $HOME.config/fish/functions/ij.fish 中说“function ij; echo ij ran; end”,你可以通过输入“ij”来运行该函数吗?
  • echo $fish_function_path 显示什么? IntellJ 的终端和 Terminal.app 下的输出有区别吗?
  • 嗨,Kurtis Rader,我可以在 iTerm2 和 Terminal.app 中运行该功能,但不能在 IntelliJ 的嵌入式终端中运行。不过,我在config.fish 中定义的别名即使在 IntelliJ 的嵌入式终端中也可以使用。对不起,如果这是矛盾的,但事实就是这样;-)

标签: intellij-idea fish


【解决方案1】:

我可以通过进入设置 | 在 IntelliJ 的嵌入式终端和 iTerm2 中从 echo $fish_function_path 获得相同的结果。终端然后关闭 Shell 集成。

我使用的是 phpStorm 2017.3.4,但我认为这也适用于任何 IntelliJ 嵌入式终端。

【讨论】:

  • 哦,是的,这似乎确实有效!比我的解决方案容易得多。谢谢!我会接受这个,我认为你可以安全地删除答案中的最后一个预防性声明,如果你愿意的话。
  • 不过,我想知道“Shell 集成”到底是什么意思,以及关闭它可能会产生什么副作用...?
  • 不确定 Shell 集成究竟做了什么,但它记录在这里 jetbrains.com/help/idea/settings-tools-terminal.html。我找到了 IntelliJ 使用的 fish.config 文件,并决定没有 :-)
【解决方案2】:

检查 intelliJ 选项。关闭 shell 集成

【讨论】:

    【解决方案3】:

    有人在IntelliJ bug tracker 中发布了一个很好的解决方案。

    IntelliJ 有自己的config.fish,其中.config/fish/config.fish 会被加载,但函数不会...

    将以下内容添加到 IntelliJ 的内部 config.fish 中,并且鱼函数可以在 IntelliJ 的嵌入式终端中正常加载:

    if test -d ~/.config/fish/functions
      for f in ~/.config/fish/functions/*.fish
        source $f
      end
    end
    

    IntelliJ 的config.fish 的位置不同,在 macOS 上可能是

    • 终极版:/Applications/IntelliJ\ IDEA.app/Contents/plugins/terminal/fish/config.fish
    • 社区版:/Applications/IntelliJ\ IDEA\ CE.app/Contents/plugins/terminal/fish/config.fish
    • 甚至类似的东西,如果通过 Jetbrains Toolbox 安装:~/Library/Application Support/JetBrains/Toolbox/apps/IDEA-U/ch-0/172.4574.11/IntelliJ IDEA.app/Contents/plugins/terminal/fish

    您也可以将 IntelliJ 的 plugins/terminal 中的整个 fish 目录替换为指向正常鱼配置目录的符号链接,通常是 .config/fish/

    还有一个选择:你可以直接链接functions目录,例如:

    ln -s ~/.config/fish/functions \
      /Applications/IntelliJ\ IDEA.app/Contents/plugins/terminal/fish/config.fish
    

    【讨论】:

    • 我找到了一个更简单的方法,只需删除 IDEA 的 fish 目录并创建一个指向用户的软链接。
    • 这也是一个很好的方法,尽管它更具侵入性,因为它还覆盖了同样存在的 fishd.<something> 文件,由于某种原因,它在我的设置中不能很好地工作。
    【解决方案4】:

    对我来说,因为我使用 bass 并将一些 .py 文件放在该目录中,所以我必须稍微调整一下。

    if test -d ~/.config/fish/functions
      for f in ~/.config/fish/functions/*.fish
        source $f
      end
    end
    

    我还发现终极版的路径有点不同: /Applications/IntelliJ\ IDEA.app/Contents/plugins/terminal/fish/config.fish

    【讨论】:

      【解决方案5】:

      我在 IntelliJ 2018.1 和 Clion 2018.1 中仍然遇到同样的问题。我尝试通过此线程中的建议修复 Clion,但不知何故它不起作用(即使一切似乎都正常,我也收到了更多错误消息)。

      所以我的解决方法是将 Idea 终端设置为 /bin/bash(在 Settings/Tools/Terminal - Shell Path 中),然后作为终端窗口中的第一个命令输入 fish.. 一切正常,无需摆弄终端插件需要。

      (我觉得很遗憾,Jetbrain 不能/不想修复它.. 并且 /IDEA-173259 已“关闭”)

      【讨论】:

      • 您是否尝试过关闭“shell 集成”并保留其他所有内容?
      • 关闭终端集成是什么意思?我确实希望在 intellij/clion 中有终端窗口..
      • 这是“外壳集成”。看看接受的答案
      猜你喜欢
      • 1970-01-01
      • 2016-02-14
      • 2021-11-03
      • 2015-04-19
      • 2019-02-27
      • 2020-08-18
      • 1970-01-01
      • 1970-01-01
      • 2014-09-16
      相关资源
      最近更新 更多