Встроенный терминал 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.

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 "закрыт")

Другие вопросы по тегам