Встроенный терминал IntelliJ не загружает функции рыбы
Я использую встроенный терминал IntelliJ с оболочкой fish, которая хорошо работает с одним исключением: похоже, он не загружает функции fish, определенные в ~/.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 с другим значением для $fish_function_path
?
$HOME
знак равно /Users/moritz
) а также $XDG_CONFIG_HOME
(не установлено) одинаковы во всех трех встроенных терминалах iTerm2, Terminal.app и IntelliJ.
4 ответа
Я смог получить тот же результат от echo $fish_function_path
в встроенный терминал IntelliJ и iTerm2, перейдя в Настройки | Терминал затем отключение интеграции Shell.
Я использовал phpStorm 2017.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's config.fish
меняется, на macOS это может быть
- Ultimate Edition:
/Applications/IntelliJ\ IDEA.app/Contents/plugins/terminal/fish/config.fish
- Community Edition:
/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
Вы также можете просто заменить это целое fish
каталог в IntelliJ's plugins/terminal
с символической ссылкой на ваш обычный каталог конфигурации рыбы, обычно .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
У меня все та же проблема в IntelliJ 2018.1, а также в Clion 2018.1. Я пытался исправить в Clion с помощью предложений в этой теме, но каким-то образом это не сработало (я получил еще больше сообщений об ошибках, даже если все казалось в порядке).
Поэтому мое обходное решение состоит в том, чтобы установить для терминала Idea значение / bin / bash (в меню "Настройки" / "Инструменты" / "Терминал" - "Путь оболочки"), а затем в качестве первой команды в окне терминала введите "fish"... и все работает нормально, никаких действий с плагином терминала не требуется.
(Мне очень жаль, что Jetbrain не может / не хочет это исправить... и /IDEA-173259 "закрыт")