Вопрос или проблема
Я использую 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
, что указывает на неправильную интерпретацию нажатия клавиши клавиатуры. В данном случае возникает необходимость разобраться с конфигурацией терминала и возможными конфликтами.
Причины проблемы
-
Символ
^M
: Этот символ представляет собой характерный признак того, что терминал интерпретирует символ конца строки (Carriage Return, CR) неправильно. Это может быть следствием неправильной настройки терминала, либо неподходящего значения переменной среды. -
Различие между iTerm2 и Terminal: Хотя вы используете одну и ту же оболочку (zsh), iTerm2 может управлять вводом и выводом по-другому. Некоторые конфигурации терминала и клавиатуры могут влиять на то, как обрабатываются нажатия клавиш.
Решения проблемы
-
Сброс терминала: Один из наиболее эффективных способов восстановить нормальную работоспособность терминала — использовать команду
stty
. Эта утилита позволяет изменять настройки терминала. Выполните следующую команду:stty sane
Команда
stty sane
восстанавливает стандартные настройки терминала, что позволяет избежать множества проблем. -
Использование команды
reset
: Если вы не можете ввести командуstty sane
из-за неправильного срабатывания клавиш, попробуйте сначала ввести командуreset
, а затем выполнить ее с помощьюCtrl + J
вместо нажатия клавиши Enter. Это действие имитирует нажатие клавиши Enter, не отправляя неправильный символ. -
Перезагрузка iTerm2: Иногда достаточно перезагрузить вкладку или даже полностью закрыть iTerm2 и открыть его заново, чтобы вернуть его в рабочее состояние.
-
Системные настройки: Убедитесь, что в настройках iTerm2 не установлены нестандартные комбинации или поведение, влияющее на обработку клавиш. Перейдите в настройки iTerm2 и проверьте все пользовательские назначения клавиш.
-
Версия iTerm2: Проверьте, используете ли вы самую актуальную версию iTerm2. Иногда подобные проблемы решаются в результате обновлений программного обеспечения.
-
Изменение конфигураций Git: Хотя вы уже упоминали об изменении настройки
core.autocrlf
, убедитесь, что у вас корректные значения — обычноinput
для MacOS. Проверка конфигурации может помочь избежать других потенциальных ошибок:git config --global core.autocrlf input
Заключение
Решение проблемы с неверной интерпретацией клавиши Enter в iTerm2 требует проверки и потенциальной корректировки настроек терминала и оболочки. Использование команды stty sane
, перезагрузка приложения или использование комбинации Ctrl + J
могут стать полезными шагами к устранению неисправности. Если меры исправления не помогли, не стесняйтесь обратиться к документации iTerm2 или сообществу для более глубокой диагностики.