У терміналі я не можу ввести малі літери e


14

Якщо я відкрию вікно "Термінал" і введу букву "е" (без лапок, звичайно), він подає звуковий сигнал і не буде вводити літеру. Кожен інший лист працює добре в Терміналі. Велика літера E теж працює. Просто малі e ні.

У будь-якому іншому додатку на моєму комп’ютері з малих літер e працює без проблем, тому це не проблема клавіатури.

Це почалося десь за останній тиждень. Я багато використовую Термінал у своїй роботі, і це ніколи не було проблемою. Я перезавантажив (не виправив). У мене є термін скидання (не виправлено).

Оскільки я не знаю точної дати, коли це почалося, я не впевнений, чи вносив я якісь зміни чи встановлював програмне забезпечення. Я намагаюся видалити все, що я встановив недавно.

FYI Я намагався використовувати iTerm2 третьої сторони, і це робить те саме.

ТАКОЖ - якщо я вставляю щось із нижнього e, воно робить те саме - не візьметься. Я б вважав, це повинна бути якась проблема терміналу bash config.

Насправді я скопіював такий сенс, а потім вклеїв його в Термінал. Що з’являється? sns, і ви можете почути два звукові сигнали.

Також - якщо це незрозуміло - це відбувається з вбудованою клавіатурою на MBP, а також із зовнішньою клавіатурою. Виходячи з цього і вставляючого питання, я не думаю, що це фізична проблема клавіатури.

Технічні характеристики: 2015 MacBook Pro, повністю оновлена ​​ОС X X


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


Це лише в оболонці або в будь-якій програмі, що працює в Terminal?
agentroadkill

Відповіді:


7

Давайте налагодимо це.

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

    • Відкрийте редактор Applescript
    • Створіть файл Applescript із цим вмістом:

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

Я не збираюся брехати, я абсолютно захоплений цим питанням і не можу дочекатися, коли дізнаюся, в чому причина. Це не апаратне забезпечення, оскільки воно працює в інших програмах, а це означає, що це програмне забезпечення, і я не уявляю, хто проковтне букву eз кодом.


1
Краще спробувати оболонку C, наприклад tcsh, оскільки вона не зможе (не зможе) прочитати файли запуску bash або навіть просто запустити інтерпретатора, наприклад, python on perl та введіть там
user151019

1
Так, я насправді ЗАПАШЕНИМ цим випуском
Манхінель

"Я не уявляю, хто проковтне букву e з кодом" Цей хлопець може щось знати ... upload.wikimedia.org/wikipedia/en/5/5e/Cisforcookie.jpg
Аллан

4

Я щойно знайшов цю тему після того, як натрапив на ту саму проблему.

.inputrc

У мене було два рядки .inputrc, додані в момент недбалого незнання, починаючи з eіs (які є коректною конфігурацією bash, але не дійсною конфігурацією 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присутні.

2

Я трохи іржавий, але вставка в Terminal працює інакше, ніж вставлення в програмі GUI: кожен символ надсилається як окремий натискання клавіші, а не як записка від буфера обміну до буфера додатків. Тож якщо "e" було перестановлено, воно також буде перезаписане в пасту.

Перевірте такі місця:

System Preferences > Keyboard > Shortcuts

~/Library/KeyBindings/KeyBindings.dict

$ defaults read com.apple.Automator NSUserKeyEquivalents


Перевірте, що саме?
nohillside

Чи eперезавантажений ключ.
zencraft

1
Якщо припустити, що ОП не надто досвідчена в таких речах: на що саме їх слід шукати? Приклад такого відображення може бути корисним.
nohillside

1
Для клавіатурних скорочень шукайте переналагодження клавіш: зліва знаходиться список програм та список ярликів праворуч. Переконайтеся, що термінал не знаходиться у списку програм. Інші два мають бути порожніми; якщо KeyBindings.dict існує або команда за замовчуванням щось повертає, опублікуйте це для подальшого аналізу.
zencraft

1

Ще щось, що ви можете спробувати, це встановити термінал для відкриття текстового редактора (emacs, vi тощо), коли відкриється нове вікно. Наприклад, у налаштуваннях терміналу для "Shell" ви можете мати команду Run, наприклад /usr/bin/emacs. Якщо ви не можете увійти eв область налаштувань, то відбувається щось навіть непарніше, ніж було запропоновано дотепер ...

Коли відкриється нове вікно терміналу, emacs буде повинен почати, і ви можете спробувати натиснути і eт.д. Я поняття не маю , що буде відбуватися, але як @Pierce вище, мені цікаво , як до того , що , можливо , відбувається.


0

Перевірте налаштування stty та переконайтеся, що "e" не випадково встановлено як резервна область чи подібне. Був там зробив те. Stty something \ e Зробимо це Рекомендація вимкнути / коментувати .bash * також, ймовірно, виявить це.


0

У мене була та сама проблема, яка була викликана помилковим написом у /etc/inputrc:

et output-meta on

замість

set output-meta on

0

Як не дивно, я тільки що придумав, що на MacBook Air працює MacOS 10.13.6. Один користувач був добре, термінал користувача адміністратора, що працює bash, не прийме малу літеру 'a'- не вводить, не вставляє і т. Д. Запуск zsh було б добре. Іншим користувачам, штрафу. Я думаю, що це було раніше і виправлено це шляхом видалення файлу /Users/admin/.inputrc та .bash_profile. Я повторно додав їх, і це працює. Як не дивно, нічого важливого в цих файлах немає. .inputrc просто "встановити завершення-ігнорувати-увімкнено", і в .bash_profile є кілька псевдонімів командного рядка. Чесно кажучи, щось інше може бути, але працює поки що.

Здається, пам’ятаю, що потрібно було видалити та повторно додати ці файли через цю проблему. Ну, ці файли можуть викликати або скинути проблему хоча б.


-1

Просто видаліть .inputrc файл, він знаходиться в кореневій директорії. (Це прихований файл).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.