Ключ Enter выводит ^M в определенных ситуациях в iTerm.

Вопрос или проблема

Я использую iTerm2 на Macbook Pro с установленной MacOS Mojave.

В некоторых ситуациях, таких как выполнение git add -p, нажимание return приводит к выводу ^M, вместо того чтобы выполнить действие.

Стадировать этот кусок [y,n,q,a,d,j,J,g,/,e,?]? ^M

Фактический демонстрационный вывод

Это означает, что я не могу предпринять никаких действий с куском, так как не могу выбрать ни один из предложенных вариантов.


Я думал, что это может быть связано с тем, как git обрабатывает возвраты, поэтому я изменил настройку core.autocrlf, но ни одно из ее действительных значений не изменило это поведение.

Затем, пробуя другие методы, я понял, что эта проблема видна только при использовании iTerm, а не приложения Terminal, хотя в обоих случаях используется zsh.


Какие настройки мне нужно изменить, чтобы клавиша возврата работала нормально в этом случае?

Эта проблема возникает из-за странных или устаревших настроек терминала. Инструмент stty в Unix может помочь сбросить их.

У меня была такая же проблема в Iterm2 на Mac, и я исправил это с его помощью.

stty sane

Эта команда исправляет странности терминала, сбрасывая их на разумные значения по умолчанию.

Посмотрите man stty или эту хорошую статью для получения дополнительной информации. http://www.peachpit.com/articles/article.aspx?p=659655&seqNum=13

Я перезапустил вкладку iterm, и это исправило проблему.

Я тоже столкнулся с этой проблемой. Хотя stty sane полезен (как и reset), если клавиша enter не работает, трудно фактически выполнить эти команды.

Вместо этого вы можете использовать Ctrl+J после ввода reset или stty sane, что будет эквивалентно нажатию enter (вместо выдачи ‘^M’).

Ответ или решение

Проблема, с которой вы столкнулись, связана с тем, что iTerm2 на вашем MacBook Pro с операционной системой MacOS Mojave ведет себя иначе, чем стандартное приложение Terminal, в частности, в контексте обработки нажатия клавиши Enter. Когда вы пытаетесь выполнить команду, например, git add -p, вместо ожидаемой реакции вы получаете символ ^M, что указывает на неправильную интерпретацию нажатия клавиши клавиатуры. В данном случае возникает необходимость разобраться с конфигурацией терминала и возможными конфликтами.

Причины проблемы

  1. Символ ^M: Этот символ представляет собой характерный признак того, что терминал интерпретирует символ конца строки (Carriage Return, CR) неправильно. Это может быть следствием неправильной настройки терминала, либо неподходящего значения переменной среды.

  2. Различие между iTerm2 и Terminal: Хотя вы используете одну и ту же оболочку (zsh), iTerm2 может управлять вводом и выводом по-другому. Некоторые конфигурации терминала и клавиатуры могут влиять на то, как обрабатываются нажатия клавиш.

Решения проблемы

  1. Сброс терминала: Один из наиболее эффективных способов восстановить нормальную работоспособность терминала — использовать команду stty. Эта утилита позволяет изменять настройки терминала. Выполните следующую команду:

    stty sane

    Команда stty sane восстанавливает стандартные настройки терминала, что позволяет избежать множества проблем.

  2. Использование команды reset: Если вы не можете ввести команду stty sane из-за неправильного срабатывания клавиш, попробуйте сначала ввести команду reset, а затем выполнить ее с помощью Ctrl + J вместо нажатия клавиши Enter. Это действие имитирует нажатие клавиши Enter, не отправляя неправильный символ.

  3. Перезагрузка iTerm2: Иногда достаточно перезагрузить вкладку или даже полностью закрыть iTerm2 и открыть его заново, чтобы вернуть его в рабочее состояние.

  4. Системные настройки: Убедитесь, что в настройках iTerm2 не установлены нестандартные комбинации или поведение, влияющее на обработку клавиш. Перейдите в настройки iTerm2 и проверьте все пользовательские назначения клавиш.

  5. Версия iTerm2: Проверьте, используете ли вы самую актуальную версию iTerm2. Иногда подобные проблемы решаются в результате обновлений программного обеспечения.

  6. Изменение конфигураций Git: Хотя вы уже упоминали об изменении настройки core.autocrlf, убедитесь, что у вас корректные значения — обычно input для MacOS. Проверка конфигурации может помочь избежать других потенциальных ошибок:

    git config --global core.autocrlf input

Заключение

Решение проблемы с неверной интерпретацией клавиши Enter в iTerm2 требует проверки и потенциальной корректировки настроек терминала и оболочки. Использование команды stty sane, перезагрузка приложения или использование комбинации Ctrl + J могут стать полезными шагами к устранению неисправности. Если меры исправления не помогли, не стесняйтесь обратиться к документации iTerm2 или сообществу для более глубокой диагностики.

Оцените материал
Добавить комментарий

Капча загружается...