En la Terminal no puedo escribir en minúscula e

13

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

En todas las demás aplicaciones de mi computadora, la 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. Utilizo mucho Terminal en mi trabajo y nunca ha sido un problema. He reiniciado (no lo arreglé). He reiniciado el terminal (no lo arreglé).

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 cualquier cosa que haya instalado recientemente.

Para tu 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 sense y luego lo pegué en la Terminal. Que aparece sns y puede escuchar dos pitidos.

También, en caso de que no esté claro, esto sucede con el teclado integrado en el MBP, así como con un teclado externo. En base a eso y al problema de pegado, no creo que se trate de un problema de teclado físico de ninguna manera.

Especificaciones: MacBook Pro 2015, OS X totalmente actualizado

    
pregunta user3720729 11.05.2016 - 22:37

7 respuestas

7

Vamos a depurarlo.

  1. Cambia las conchas y vuelve a intentarlo. (Crédito a @Kent) En la terminal:
    • $(which zsh)
  2. Comente todas las líneas en .bash_profile , .bashrc , etc. y abra una nueva pestaña / ventana de terminal. Si esto resuelve el problema, algo que se carga en el entorno de shell está consumiendo la letra e por razones que la ciencia nunca puede explicar.
  3. Intente cat ing un archivo que contenga la letra e para ver si se mostrará: (Crédito a @techraf)
    • Abre un editor de texto (no terminal)
    • Ingrese un texto con unos pocos e s y guarde el archivo ( foo.txt ?)
    • En la terminal, cat el archivo:
      • cd /path/to/folder; cat foo.txt
    • Si e s se procesa, entonces el terminal puede manejarlo, si no, entonces esto es súper raro.
  4. Prueba con Applecript. (Crédito a @ALX)

    • Editor de Applescript abierto
    • Crea 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 del terminal. En unos segundos, virtualmente presionará la tecla e 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 lo que podría ser)

No voy a mentir, estoy absolutamente fascinado con 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 se tragaría la letra e con el código.

    
respondido por el Pierce 12.05.2016 - 04:10
3

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

.inputrc

Tuve 2 líneas en .inputrc , agregadas en un momento de ignorancia descuidada, comenzando con e y s (que son configuración bash válida, pero no configuración readline válida). Parece que se han interpretado como alias de combinación de teclas para la personalización de línea de lectura.

Eliminando las líneas de .inputrc , confirmé, resolví mi problema.

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

La configuración de Readline de la shell

El comando bind del shell permite ver y modificar la configuración de Readline. (Consulte help bind . help es man para los comandos internos del shell).

Ver bind -p (tal vez canalizar a menos |less o redirigir a un archivo > binds.txt ). "Lista [s] funciones y enlaces en una forma que puede ser reutilizada como entrada" .

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

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

Prueba de extremo a extremo

  1. e funciona
  2. inserte una línea errónea en .inputrc , abra el nuevo shell

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

  4. bind -p ( | grep -i '"E"' ) muestra
    • "E": self-insert ,
    • pero no "e": self-insert
    • mientras que "A": self-insert y "a": self-insert están presentes.
respondido por el mcint 06.01.2017 - 12:39
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 del portapapeles al búfer de aplicación. Por lo tanto, si la "e" se ha reasignado, también se volverá a correlacionar en el pegado.

Comprueba las siguientes ubicaciones:

System Preferences > Keyboard > Shortcuts

~/Library/KeyBindings/KeyBindings.dict

$ defaults read com.apple.Automator NSUserKeyEquivalents

    
respondido por el zencraft 12.05.2016 - 09:21
1

Otra cosa que puedes probar, es configurar la Terminal para que abra un editor de texto (emacs, vi, etc.) cuando se abre una nueva ventana. Por ejemplo, en las preferencias de Terminal para "Shell", puede tenerlo Ejecutar comando como /usr/bin/emacs . Si no puede ingresar e en el panel de preferencias, entonces está sucediendo algo aún más extraño que lo que se ha propuesto hasta ahora ...

Cuando se abra una nueva ventana de Terminal, emacs will debería comenzar, y puedes intentar presionar e etc. No tengo idea de lo que sucederá, pero me gusta @ Pierce arriba, tengo curiosidad por lo que posiblemente esté pasando.

    
respondido por el Kent 12.05.2016 - 12:56
0

Verifique la configuración estándar 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 * probablemente también lo descubrirá.

    
respondido por el Daryl Monge 16.05.2016 - 19:15
0

Tuve 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
    
respondido por el fikovnik 01.11.2017 - 12:29
-1

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

    
respondido por el user208052 27.10.2016 - 14:44

Lea otras preguntas en las etiquetas