私はIntelliJの組み込み端末を fish Shell で使用していますが、これは1つの例外を除いてうまく機能します:~/.config/fish/functions/*
で定義されたfish関数をロードしていないようです。
MacOS Terminal.appまたはiTerm2を使用すると、関数が想定どおりに読み込まれますが、IntelliJの組み込み端末のみが読み込まれません。
奇妙なことに、IntelliJ端末は~/.config/fish/config.fish
を正常にロードします。
Iterm2とTerminal.appのecho $fish_function_path
の出力は次のとおりです。
/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の組み込み端末の3つすべてで同じです。
IntelliJの埋め込み端末とiTerm2のecho $fish_function_path
から、[設定]、[設定]の順に移動して同じ結果を得ることができました。次に、ターミナルでシェル統合をオフにします。
私はphpStorm2017.3.4を使用していましたが、これはどのIntelliJ組み込み端末でも機能すると思います。
誰かがこれに対する良い解決策を IntelliJバグトラッカー に投稿しました。
IntelliJには独自のconfig.fish
があり、.config/fish/config.fish
はロードされますが、関数はロードされません。
IntelliJの内部config.fish
に以下を追加すると、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
~/Library/Application Support/JetBrains/Toolbox/apps/IDEA-U/ch-0/172.4574.11/IntelliJ IDEA.app/Contents/plugins/terminal/fish
IntelliJのplugins/terminal
にあるfish
ディレクトリ全体を、通常のfishconfigディレクトリへのシンボリックリンク(通常は.config/fish/
)に置き換えることもできます。
さらに別のオプションがあります。たとえば、functions
ディレクトリをリンクするだけです。
ln -s ~/.config/fish/functions \
/Applications/IntelliJ\ IDEA.app/Contents/plugins/terminal/fish/config.fish
私にとっては bass
を使用しているので、これも.py
そのディレクトリ内のファイル、私はこれを少し微調整する必要があります。
if test -d ~/.config/fish/functions
for f in ~/.config/fish/functions/*.fish
source $f
end
end
また、Ultimate Editionのパスが少し異なることがわかりました:/Applications/IntelliJ\ IDEA.app/Contents/plugins/terminal/fish/config.fish
IntelliJ2018.1とClion2018.1でも同じ問題が発生します。このスレッドの提案でClionを修正しようとしましたが、どういうわけかうまくいきませんでした(すべて問題がないように見えても、さらに多くのエラーメッセージが表示されました)。
したがって、私の回避策は、Ideaターミナルを/ bin/bash([設定]/[ツール]/[ターミナル]-[シェルパス])に設定し、ターミナルウィンドウの最初のコマンドとしてfish ..と入力すると、すべてが正常に機能し、ターミナルプラグインをいじる必要はありません。
(Jetbrainがそれを修正できない/修正したくないのは非常に残念です。そして/ IDEA-173259は「閉じられています」)