在终端机中,我无法输入小写字母e


14

如果打开终端窗口,然后键入字母“ e”(当然不带引号),则会发出哔声,并且不会键入该字母。每隔一个字母在Terminal中都可以正常工作。大写字母E也可以。只是小写字母e没有。

在我计算机上的所有其他应用程序中,小写字母e都可以正常工作,因此这不是键盘问题。

这是在上周的某个时间开始的。我在工作中经常使用Terminal,但这从来不是问题。我已重新启动(未修复)。我已重置终端(未修复)。

由于我不知道确切的开始日期,因此不确定是否进行了任何更改或安装了软件。我正在尝试删除我最近安装的所有内容。

仅供参考,我尝试使用第三方iTerm2,它执行相同的操作。

另外-如果我粘贴具有较低e的东西,它也会做同样的事情-不会接受。我认为这一定是一些终端bash配置问题。

实际上,我复制了以下含义,然后将其粘贴到Terminal中。出现什么? sns,您会听到两次哔声。

另外-如果不清楚-这是MBP上的内置键盘和外部键盘发生的。基于该问题和粘贴问题,我认为这绝对不是物理键盘问题。

规格:2015 MacBook Pro,完全最新的OS X


1
如果转到csh或tcsh之类的其他shell,该行为是否仍然存在?
肯特

2
太奇怪了...尝试applescript通过在聚光灯下搜索打开它,然后键入,delay 10然后按回车键,然后按tell application "System Events" to keystroke "e"原样书写。按下播放键时,它将等待10秒钟,然后单独按下e键。在该时间到期之前转到终端并进行测试。如果这不起作用,则说明您的计算机存在严重的内部问题。
ALX

1
如果您cat filnam.txt所在的文件filnam.txt包含一些ASCII文本,会发生什么情况e
techraf


这是仅在Shell中还是在Terminal中运行的任何程序中?
agentroadkill

Answers:


7

让我们调试一下。

  1. 更换外壳,然后重试。(贷方为@Kent)在终端中:
    • $(which zsh)
  2. 注释掉,等中的所有行.bash_profile.bashrc然后打开一个新的终端标签/窗口。如果这解决了问题,则e由于科学可能永远无法解释的原因,正在装入Shell环境的某些东西正在消耗这封信。
  3. 尝试cat处理一个包含字母的文件,e看它是否还会显示:(记入@techraf)
    • 打开文本编辑器(不是终端)
    • 输入一些带有几个es的文本并保存文件(foo.txt?)
    • 在终端中,cat文件:
      • cd /path/to/folder; cat foo.txt
    • 如果es render,那么终端可以处理它,如果不是,那么这很奇怪。
  4. 试试applescript。(贷方为@ALX)

    • 打开Applescript编辑器
    • 使用以下内容创建Applescript文件:

      delay 10
      tell application "System Events" to keystroke "e"
    • 执行脚本文件,然后快速导航到终端窗口。几秒钟后,它将几乎按下该e键,并希望出现在您的终端中。这将表明可能存在输入/设备驱动程序问题(尽管我不知道那可能是什么)

我不会说谎,我对这个问题完全着迷,迫不及待地想知道原因。它不是硬件,因为它可以在其他应用程序中使用,这意味着它是软件,我无法想象谁会e用代码吞下这封信。


1
最好尝试使用C shell(例如tcsh),因为它不会(无法)读取bash启动文件,或者甚至只是在Perl上启动解释器(例如python)并在其中键入内容
user151019

1
是的,我实际上对这个问题
着迷

“我无法想象谁会用代码吞下字母e”这个家伙可能知道一些... upload.wikimedia.org/wikipedia/zh/5/5e/Cisforcookie.jpg
艾伦(Allan)

4

遇到相同问题后,我才发现此线程。

.inputrc

我在中有2行.inputrc在稍加无知的时候加了, e和开始s(这是有效的bash配置,但不是有效的readline配置)。它们似乎已被解释为自定义行的键绑定别名。

.inputrc我已经确认,删除中的行就解决了我的问题。

感谢@ user208052提供有关提醒的检查.inputrc

Shell的Readline配置

Shell的bind命令允许查看和修改Readline配置。(见help bindhelpman用于壳内部命令)。

查看bind -p(也许通过管道传输到less |less或重定向到文件> binds.txt)。它“以可以重用作为输入的形式列出函数和绑定”

它具有像"c": self-insertASCII范围内的每个字符一样的条目,因此搞砸了的配置可能会替换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
假设OP在这些方面不太有经验:他们究竟应该寻找什么?此类映射的示例可能会有所帮助。
nohillside

1
对于“键盘快捷键”,请查找键重新映射:左侧有一个应用列表,右侧有一个快捷列表。确保终端不在应用列表中。另外两个应为空;如果存在KeyBindings.dict或defaults命令返回某些内容,请在此处发布以进行进一步分析。
zencraft

1

您可以尝试的其他方法是,在打开新窗口时将终端设置为打开文本编辑器(emacs,vi等)。例如,在“ Shell”的“终端”首选项中,您可以使用“运行”命令,例如/usr/bin/emacs。如果您无法e在首选项窗格中输入,那么将会发生比迄今为止建议的还要奇怪的事情……

当打开一个新的终端窗口时,Emacs 要开始,你可以尝试按e等。我不知道会发生什么,但像上面@Pierce,我很好奇,什么是可能的事情。


0

检查stty设置,并确保不会意外将'e'设置为退格键或类似键。去过也做过。\ e可以做到的事推荐禁用/注释.bash *的建议也可能会发现它。


0

我也有同样的问题,这是由于输入错误造成的/etc/inputrc

et output-meta on

代替

set output-meta on

0

奇怪的是,我刚在MacBook Air上运行macOS 10.13.6。一个用户很好,运行bash的admin用户终端将不接受小写字母'a'-不键入,不粘贴等。运行zsh可以。其他用户,很好。我认为这是以前发生的,并通过删除/Users/admin/.inputrc文件和.bash_profile来解决。我重新添加了它们,并且可以正常工作。奇怪的是,这些文件中没有重要内容。.inputrc只是“将complete-ignore-case设置为On”,。bash_profile中有几个命令行别名。老实说,可能还有其他问题,但现在可以使用。

我似乎记得必须在此问题上删除并重新添加这些文件。好吧,这些文件至少可以触发或重置问题。


-1

只需删除.inputrc文件,该文件位于根目录中。(这是一个隐藏文件)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.