В терминале я не могу набрать строчные буквы e

14

Если я открываю окно терминала и набираю букву «е» (конечно, без кавычек), он издает звуковой сигнал и не набирает букву. Каждое другое письмо прекрасно работает в терминале. Прописная буква Е тоже работает. Просто строчная е не делает.

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

Это началось где-то на прошлой неделе. Я часто использую терминал в своей работе, и это никогда не было проблемой. Я перезагрузился (не исправил). Я сбросил терминал (не исправил).

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

К вашему сведению, я пытался использовать стороннюю программу iTerm2, и она делает то же самое.

ТАКЖЕ - если я вставлю что-то с более низким e, это сделает то же самое - не возьмет это. Это должна быть проблема с терминалом bash config, я думаю.

Фактически я скопировал следующий смысл, а затем вставил его в терминал. Что появляется? с.н.с. , и вы можете услышать два звуковых сигнала.

Также - в случае, если неясно - это происходит со встроенной клавиатурой на MBP, а также с внешней клавиатурой. Исходя из этого и проблемы вставки, я не думаю, что это физическая проблема клавиатуры.

Характеристики: MacBook Pro 2015 года, полностью обновленный OS X

user3720729
источник
1
Поведение сохраняется, если вы переходите на другую оболочку, например, csh или tcsh?
Кент
2
Это странно ... попробуйте открыть applescript, выполнив поиск в центре внимания, и введите, delay 10затем нажмите return и напишите tell application "System Events" to keystroke "e"точно так, как написано. Когда нажата кнопка воспроизведения, она будет ждать 10 секунд, а затем сама нажать e. Перейти к терминалу до истечения этого времени и проверить его. Если это не сработает, тогда у вас есть серьезная внутренняя проблема с вашим компьютером.
ALX
1
Что произойдет, если cat filnam.txtфайл, в котором находится файл, filnam.txtсодержит текст ASCII e?
techraf
Это только в оболочке или в любой программе, запущенной в Терминале?
agentroadkill

Ответы:

7

Давайте отладим это.

  1. Поменяйте снаряды и попробуйте снова. (Кредит @Kent) В терминале:
    • $(which zsh)
  2. Закомментируйте все строки в .bash_profile, .bashrcи т.д. , и открыть новое терминальную вкладку / окно. Если это решает проблему, то что-то загружаемое в среду оболочки потребляет письмоe по причинам, которые наука никогда не сможет объяснить.
  3. Попробуйте catфайл, содержащий письмо, eчтобы увидеть, будет ли оно вообще отображаться: (Кредит @techraf)
    • Откройте текстовый редактор (не терминал)
    • Введите текст с несколькими eсекундами и сохраните файл (foo.txt ?)
    • В терминале catфайл:
      • cd /path/to/folder; cat foo.txt
    • Если es рендерит, то терминал может справиться с этим, если нет, то это супер странно.
  4. Попробуйте яблочный скрипт. (Кредит @ALX)

    • Откройте редактор Applescript
    • Создайте файл Applescript со следующим содержимым:

      delay 10
      tell application "System Events" to keystroke "e"
    • Выполните файл сценария, а затем быстро перейдите к окну терминала. Через несколько секунд он фактически нажмет eклавишу и, надеюсь, появится в вашем терминале. Это может указывать на то, что может быть проблема с драйвером ввода / устройства (хотя я не знаю, что это может быть)

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

проколоть
источник
1
Лучше попробовать оболочку C, например, tcsh, так как она не будет (не может) читать файлы запуска bash или даже просто запустить интерпретатор, например, python на perl, и набрать там
user151019
1
Да, я на самом деле очарован этой проблемой
Manchineel
«Я не могу себе представить, кто проглотит букву e с кодом». Этот парень может что-то знать ... upload.wikimedia.org/wikipedia/en/5/5e/Cisforcookie.jpg
Аллан
4

Я только что нашел эту тему после того, как столкнулся с той же проблемой.

.inputrc

У меня было 2 строки .inputrc, добавленные в момент небрежного невежества, начиная с eиs (которые являются действительными конфигурациями Bash, но не допустимыми конфигурациями readline). Похоже, они были интерпретированы как псевдонимы клавиш для настройки readline.

Удаление строк .inputrc, я подтвердил, решил мою проблему.

Спасибо @ user208052 за соответствующее напоминание для проверки .inputrc.

Конфигурация оболочки Readline

Команда оболочки bindпозволяет просматривать и изменять конфигурацию Readline. (См help bind. helpЭто manдля команд оболочки, внутренней).

Просмотр bind -p(может быть, труба на меньше |lessили перенаправление в файл > binds.txt). Это «список [s] функций и привязок в форме, которую можно повторно использовать в качестве входных данных» .

В нем есть записи, как "c": self-insertдля каждого символа в диапазоне ASCII, так что испорченная конфигурация может быть self-insertзаменена другой функцией Readline.

У него есть несколько драгоценных камней; просмотр этого только научил меня этому C-=(\e= ) печатает возможные завершения в моей конфигурации по умолчанию. Кажется, он показывает полную текущую конфигурацию Readline для вашей оболочки ... довольно полезную и мощную. Хорошо для изучения.

Сквозное испытание

  1. e работает
  2. вставьте ошибочную строку .inputrc, откройте новую оболочку

    et completion-map-case on
    set completion-ignore-case on
  3. e по-видимому, неоперативный

  4. bind -p( | grep -i '"E"') показывает
    • "E": self-insert,
    • но нет "e": self-insert
    • тогда как "A": self-insertи "a": self-insertприсутствуют.
mcint
источник
2

Я немного заржавел, но вставка в Terminal работает иначе, чем вставка в программе с графическим интерфейсом: каждый символ посылается как отдельное нажатие клавиши, а не как копия памяти из буфера обмена в буфер приложения. Так что, если «е» было переназначено, оно будет также переназначено в пасту.

Проверьте следующие места:

System Preferences > Keyboard > Shortcuts

~/Library/KeyBindings/KeyBindings.dict

$ defaults read com.apple.Automator NSUserKeyEquivalents

zencraft
источник
Проверить на что именно?
холме
Был ли eключ переназначен.
zencraft
1
Предполагая, что ОП не слишком опытен в таких вещах: что именно они должны искать? Пример такого отображения может быть полезным.
холме
1
Для сочетаний клавиш ищите переназначения клавиш: слева есть список приложений, а справа - список ярлыков. Убедитесь, что Терминал отсутствует в списке приложений. Два других должны быть пустыми; если KeyBindings.dict существует или команда defaults возвращает что-то, отправьте это здесь для дальнейшего анализа.
zencraft
1

Еще можно попробовать настроить терминал на открытие текстового редактора (emacs, vi и т. Д.) При открытии нового окна. Например, в настройках терминала для «Shell» вы можете использовать команду «Выполнить», например /usr/bin/emacs. Если вы не можете войти eв панель настроек, то происходит нечто даже более странное, чем то, что было предложено до сих пор ...

Когда новое окно терминала открывается, Emacs будет должен начать, и вы можете попробовать нажать и eт.д. Я понятия не имею , что будет происходить, но как @Pierce выше, мне любопытно , как к тому , что , возможно , происходит.

Кент
источник
0

Проверьте настройку stty и убедитесь, что 'e' не было случайно установлено в качестве возврата или подобного. Был там, сделал это. Stty что-то \ e сделает это Рекомендация отключить / закомментировать .bash * также, вероятно, обнаружит это.

Дэрил Монж
источник
0

У меня была та же проблема, которая была вызвана опечаткой в /etc/inputrc:

et output-meta on

вместо того

set output-meta on
fikovnik
источник
0

Как ни странно, я только что выпустил MacOS 10.13.6 на MacBook Air. С одним пользователем все было в порядке, пользовательский терминал администратора, выполняющий bash, не будет принимать строчную букву «а» - не печатать, не вставлять и т. Д. При запуске zsh все будет в порядке. Другие пользователи, хорошо. Я думаю, что это произошло раньше и исправил это, удалив файл /Users/admin/.inputrc и .bash_profile. Я снова добавил их, и это работает. Как ни странно, в этих файлах нет ничего важного. .inputrc это просто «установить завершение-игнорирование-вкл», и в .bash_profile есть несколько псевдонимов командной строки. Честно говоря, что-то еще может быть, но пока работает.

Кажется, я помню, что мне пришлось удалить и повторно добавить эти файлы поверх этой проблемы. Ну, эти файлы могут вызвать или сбросить проблему по крайней мере.

fieldlab
источник
-1

Просто удалите файл .inputrc, он находится в корневом каталоге. (Это скрытый файл).

user208052
источник