Интеграция оболочки iTerm2 и конфликты Oh My Zsh

Я недавно переустановил iTerm2 и теперь столкнулся с интересной проблемой после настройки интеграции оболочки iTerm.

При открытии нового окна терминала все выглядит правильно, показывая правильную тему «агностер» из Oh My ZSH:

работает< / а>

Если я выдаю clear, теперь мое окно терминала будет выглядеть так:

не работает

Я могу вернуть все к исходному состоянию, снова выполнив поиск ~/.zshrc, но мне действительно интересно узнать о корневой проблеме и о том, есть ли способ ее исправить.

Я попытался скрыть маркер в настройках iTerm, но это привело к пустому терминалу.

В предыдущей установке (до того, как я протер этот Mac) у меня работали Oh My ZSH и Shell Integration, и, хотя временами это выглядело немного шатко, казалось, что тема Oh My ZSH сохраняется независимо от очистки терминала или выдачи любая другая команда.

Есть у кого-нибудь идеи по этому поводу? Я снова и снова проверял настройки iTerm, но не могу найти ничего, что могло бы быть связано.


person Will    schedule 09.04.2016    source источник
comment
Возникла проблема с gitlab. Может быть, это поможет тебе.   -  person NaN    schedule 10.04.2016
comment
@NaN - Спасибо, похоже, проблема! Я смог использовать решение ниже, и теперь все работает отлично. :)   -  person Will    schedule 10.04.2016


Ответы (3)


Я только что установил Shell Integration в iTerm 2 (сборка 2.9.20160313) и столкнулся с той же проблемой.

Я решил это, добавив одну строку в ~/.iterm2_shell_integration.zsh сразу после export ITERM_SHELL_INTEGRATION_INSTALLED=Yes в строке 3:

ITERM2_PRECMD_PS1="$PS1"

Таким образом, заголовок вышеупомянутого файла выглядит так:

if [[ -o login ]]; then
  if [ "$TERM" != "screen" -a "$ITERM_SHELL_INTEGRATION_INSTALLED" = "" ]; then
    export ITERM_SHELL_INTEGRATION_INSTALLED=Yes

    ## BEGIN EDIT
    ITERM2_PRECMD_PS1="$PS1"
    ## END EDIT

    # Indicates start of command output. Runs just before command executes.
    iterm2_before_cmd_executes() {
      printf "\033]133;C;\007"
    }

    # ...

Скорее всего, это ошибка, поскольку (как вы можете видеть из комментариев в том же файле) сценарий должен сохранять ваш $PS1 при входе в систему, но это не так.

person lucag    schedule 10.04.2016
comment
Это работает как шарм! Спасибо вам за быстрый ответ. Теперь я могу приступить к работе! :) - person Will; 10.04.2016
comment
Я также комментирую строку 4: ITERM2_SHOULD_DECORATE_PROMPT="1" - person Jorge Maroto; 25.09.2016

Поздний ответ, но это сработало для меня.

На странице интеграции оболочки iTerm2 вы можете загрузить сценарий установки и передать его в bash.

Вместо этого загрузите его локально и измените, чтобы он знал, что вы используете ZSH.

Сначала скачайте скрипт

wget https://iterm2.com/misc/install_shell_integration.sh

Затем вместо того, чтобы сценарий определял оболочку, просто определите ее как «zsh».

# comment out this line
# SHELL=$(echo "${SHELL}" | tr / "\n" | tail -1)

# replace it with this line
SHELL="zsh"

Затем сделайте установочный скрипт исполняемым и запустите его.

chmod +x install_shell_integration.sh
./install_shell_integration.sh

После этого интеграция должна быть установлена ​​правильно.

Примечание. Удалите интеграцию с Bash, если она вам не нужна.

rm ~/.iterm2_shell_integration.bash
person user1491929    schedule 30.06.2016
comment
Спасибо, это сработало для меня. Проблема заключалась в следующем: хотя я по какой-то причине использовал zsh, переменная SHELL была bash! жесткое кодирование на zsh помогло! - person Geek; 12.03.2017
comment
В этом больше нет необходимости, поскольку ошибка исправлена. Во всяком случае, это все еще показывает, как установить интеграцию. - person noun; 20.11.2017

Для тех, у кого все еще есть эта проблема, теперь есть опция в настройках профиля iterm, которая позволяет вам отключить эти метки (которые подробно описаны в разделе меток на этой странице)

  1. Открыть настройки iterm
  2. Выбрать профили
  3. Выберите профиль
  4. Выберите вкладку Терминал
  5. Снимите флажок «Интеграция с оболочкой» ›Флажок« Показывать индикаторы отметок ».

Снимок экрана с настройкой в ​​настройках iterm

person Nile Daley    schedule 17.08.2020