En la Terminal no puedo escribir minúscula e

14

Si abro una ventana de Terminal y escribo la letra "e" (sin comillas, por supuesto) suena y no escribirá la letra. Cualquier otra carta funciona bien en la Terminal. E mayúscula también funciona. Solo la minúscula e no.

En todas las demás aplicaciones de mi computadora, minúscula e funciona sin problemas, por lo que no es un problema de teclado.

Esto comenzó en algún momento de la última semana. Uso mucho la Terminal en mi trabajo y nunca ha sido un problema. He reiniciado (no se solucionó). He reiniciado el terminal (no lo reparó)

Como no sé la fecha exacta en que comenzó esto, no estoy seguro de si hice algún cambio o instalé el software. Estoy tratando de eliminar todo lo que instalé recientemente.

Para su información, he tratado de usar el iTerm2 de terceros y hace lo mismo.

TAMBIÉN, si pego algo con una e inferior, hace lo mismo, no lo tomaré. Tiene que ser un problema de configuración de terminal bash, creo.

De hecho, copié el siguiente sentido y luego lo pegué en Terminal. Que aparece sns y puedes escuchar dos pitidos.

Además, en caso de que no esté claro, esto sucede con el teclado incorporado en el MBP, así como con un teclado externo. Basado en eso y el problema de pegar, no creo que este sea un problema de teclado físico de ninguna manera.

Especificaciones: MacBook Pro 2015, OS X totalmente actualizado

usuario3720729
fuente
1
¿Persiste el comportamiento si va a otro shell, como csh o tcsh?
Kent
2
Eso es extraño ... intente abrir applescriptbuscándolo en el centro de atención, escriba y delay 10luego presione Intro y escriba tell application "System Events" to keystroke "e"exactamente como está escrito. Cuando se presiona reproducir, esperará 10 segundos y luego presione e por sí mismo. Vaya a la terminal antes de que expire ese tiempo y pruébelo. Si eso no funciona, entonces tiene un problema interno grave con su computadora.
ALX
1
¿Qué sucede si cat filnam.txtel archivo llamado filnam.txtcontiene texto ASCII e?
techraf
¿Es esto solo en el shell o en cualquier programa que se ejecute en Terminal?
agentroadkill

Respuestas:

7

Vamos a depurarlo.

  1. Cambie las conchas e intente nuevamente. (Crédito a @Kent) En terminal:
    • $(which zsh)
  2. Comente todas las líneas .bash_profile, .bashrc, etc y abrir una nueva pestaña / ventana de terminal. Si esto resuelve el problema, algo que se está cargando en el entorno de shell está consumiendo la carta epor razones que la ciencia nunca podrá explicar.
  3. Intente catcon un archivo que contenga la letra epara ver si incluso se mostrará: (Crédito a @techraf)
    • Abra un editor de texto (no terminal)
    • Ingrese un texto con unos pocos esy guarde el archivo ( foo.txt?)
    • En terminal, catel archivo:
      • cd /path/to/folder; cat foo.txt
    • Si es render, entonces el terminal puede manejarlo, si no, entonces esto es super raro.
  4. Prueba con AppleScript. (Crédito a @ALX)

    • Editor de Applescript abierto
    • Cree un archivo Applescript con estos contenidos:

      delay 10
      tell application "System Events" to keystroke "e"
    • Ejecute el archivo de script y luego navegue rápidamente a la ventana de terminal. En unos segundos, prácticamente presionará la etecla y, con suerte, aparecerá en su terminal. Esto indicaría que podría haber un problema con el controlador de entrada / dispositivo (aunque no tengo idea de qué podría ser)

No voy a mentir, estoy absolutamente fascinado por este problema y no puedo esperar para saber cuál es la causa. No es hardware porque funciona en otras aplicaciones, lo que significa que es software y no puedo imaginar quién tragaría la carta econ el código.

atravesar
fuente
1
Es mejor probar un shell C, por ejemplo, tcsh, ya que no (no puede) leer los archivos de inicio de bash o incluso simplemente iniciar un intérprete, por ejemplo, python en perl y escribir allí
user151019
1
Sí, estoy realmente FASCINADO por este problema
Manchineel
"No puedo imaginar quién tragaría la letra e con el código" Este chico podría saber algo ... upload.wikimedia.org/wikipedia/en/5/5e/Cisforcookie.jpg
Allan
4

Acabo de encontrar este hilo después de encontrarme con el mismo problema.

.inputrc

Tuve 2 líneas .inputrc, agregadas en un momento de ignorancia descuidada, comenzando con eys (que son válidas bash config, pero no válidas readline config). Parecen haber sido interpretados como alias de combinación de teclas para la personalización de línea de lectura.

La eliminación de las líneas de .inputrc, he confirmado, resolvió mi problema.

Gracias @ user208052 por el recordatorio relevante para verificar .inputrc.

La configuración de Readline del shell

El bindcomando del shell permite ver y modificar la configuración de Readline. (Ver help bind. helpEs manpara comandos internos del shell).

Ver bind -p(quizás canalizar a menos |lesso redirigir a un archivo > binds.txt). Se "enumera [s] funciones y enlaces en una forma que se puede reutilizar como entrada" .

Tiene entradas como "c": self-insertpara cada carácter en el rango ASCII, por lo que la configuración arruinada puede reemplazarse self-insertcon alguna otra función de Readline.

Tiene algunas gemas; verlo me enseñó que C-=( \e=) imprime las posibles terminaciones, en mi configuración predeterminada. Parece mostrar la configuración actual completa de Readline para su shell ... bastante útil y potente. Bueno para explorar

Prueba de punta a punta

  1. e trabajos
  2. inserte una línea errónea .inputrc, abra un nuevo caparazón

    et completion-map-case on
    set completion-ignore-case on
  3. e aparentemente es un no-op

  4. bind -p( | grep -i '"E"') muestra
    • "E": self-insert,
    • pero no "e": self-insert
    • mientras que "A": self-inserty "a": self-insertestán presentes.
mcint
fuente
2

Estoy un poco oxidado, pero pegar en Terminal funciona de manera diferente a pegar en un programa GUI: cada carácter se envía como una pulsación de tecla separada, no como una copia desde el portapapeles al búfer de la aplicación. Entonces, si la "e" se ha reasignado, también se reasignará en la pasta.

Verifique las siguientes ubicaciones:

System Preferences > Keyboard > Shortcuts

~/Library/KeyBindings/KeyBindings.dict

$ defaults read com.apple.Automator NSUserKeyEquivalents

Zencraft
fuente
¿Ver qué exactamente?
nohillside
Si la eclave se ha reasignado.
zencraft
1
Suponiendo que el OP no tiene mucha experiencia en tales cosas: ¿qué deben buscar exactamente? Un ejemplo de tal mapeo podría ser útil.
nohillside
1
Para los atajos de teclado, busque reasignaciones de teclas: hay una lista de aplicaciones a la izquierda y una lista de atajos a la derecha. Asegúrese de que Terminal no esté en la lista de aplicaciones. Los otros dos deberían estar vacíos; si KeyBindings.dict existe o el comando predeterminado devuelve algo, publíquelo aquí para un análisis más detallado.
zencraft
1

Algo más que puede intentar es configurar la Terminal para abrir un editor de texto (emacs, vi, etc.) cuando se abre una nueva ventana. Por ejemplo, en las preferencias de Terminal para "Shell", puede hacer que ejecute comandos como /usr/bin/emacs. Si no puede ingresar een el panel de preferencias, entonces está sucediendo algo aún más extraño de lo que se ha propuesto hasta ahora ...

Cuando se abre una nueva ventana de Terminal, se debe iniciar emacs , y puede intentar presionar, eetc. No tengo idea de lo que sucederá, pero al igual que @Pierce arriba, tengo curiosidad por saber qué está pasando.

Kent
fuente
0

Verifique la configuración stty y asegúrese de que 'e' no se haya configurado accidentalmente como retroceso o similar. He estado allí, hecho eso. Stty algo \ e lo haría La recomendación de deshabilitar / comentar .bash * también probablemente lo descubriría.

Daryl Monge
fuente
0

Yo tenía el mismo problema que fue causado por tener un error tipográfico en /etc/inputrc:

et output-meta on

en lugar de

set output-meta on
fikovnik
fuente
0

Curiosamente, esto acaba de aparecer con macOS 10.13.6 en un MacBook Air. Un usuario estaba bien, el terminal de usuario administrador que ejecuta bash no aceptaría la letra minúscula 'a': no ​​escribir, no pegar, etc. Ejecutar zsh estaría bien. Otros usuarios, bien. Creo que esto había sucedido antes y lo solucionó eliminando el archivo /Users/admin/.inputrc y .bash_profile. Los volví a agregar y funciona. Curiosamente no hay nada importante en estos archivos. .inputrc es solo "set complete-ignore-case On", y hay un par de alias de línea de comando en .bash_profile. Honestamente, algo más podría estar funcionando, pero funciona por ahora.

Parece recordar haber tenido que eliminar y volver a agregar estos archivos sobre este problema. Bueno, estos archivos pueden desencadenar o restablecer el problema al menos.

fieldlab
fuente
-1

Simplemente elimine el archivo .inputrc, está en el directorio raíz. (Es un archivo oculto).

usuario208052
fuente