Nel Terminale I non posso digitare lettere minuscole e

13

Se apro una finestra di Terminale e scrivo la lettera "e" (senza virgolette ovviamente), emette un segnale acustico e non scriverò la lettera. Ogni altra lettera funziona bene in Terminal. Anche la maiuscola E funziona. Solo la minuscola e non lo fa.

In ogni altra app del mio computer in lettere minuscole funziona senza problemi, quindi non è un problema di tastiera.

Questo è iniziato a volte nell'ultima settimana. Uso molto Terminal nel mio lavoro e non è mai stato un problema. Ho riavviato (non risolto). Ho ripristinato il terminale (non risolto).

Poiché non conosco la data esatta in cui è iniziato, non sono sicuro di aver apportato modifiche o installato software. Sto cercando di rimuovere tutto ciò che ho installato di recente.

FYI Ho provato a usare la terza parte di iTerm2 e fa la stessa cosa.

ANCHE - se incollo qualcosa con una e inferiore, fa la stessa cosa - non la prenderà. Dovrebbe esserci qualche problema di configurazione bash del terminale che penserei.

In effetti, ho copiato il seguente senso e l'ho incollato in Terminal. Cosa appare? sns e puoi sentire due bip.

Inoltre - nel caso non sia chiaro - questo accade con la tastiera incorporata sull'MBP e con una tastiera esterna. Basandomi su questo e sul problema di incollare, non penso che questo sia un problema di tastiera fisica in alcun modo.

Specifiche: MacBook Pro 2015, OS X completamente aggiornato

    
posta user3720729 11.05.2016 - 22:37
fonte

7 risposte

7

Facciamo il debug.

  1. Cambia shell e riprova. (Credito a @Kent) Nel terminale:
    • $(which zsh)
  2. Commenta tutte le righe in .bash_profile , .bashrc , ecc. e apri una nuova scheda / finestra del terminale. Se questo risolve il problema, qualcosa che viene caricato nell'ambiente della shell sta consumando la lettera e per ragioni che la scienza potrebbe non essere mai in grado di spiegare.
  3. Prova cat in un file che contiene la lettera e per vedere se verrà visualizzato anche: (credito a @techraf)
    • Apri un editor di testo (non un terminale)
    • inserisci del testo con qualche e s e salva il file ( foo.txt ?)
    • Nel terminale, cat del file:
      • cd /path/to/folder; cat foo.txt
    • Se e s esegue il rendering, il terminale può gestirlo, se così non fosse, allora questo è super strano.
  4. Prova il applescript. (Credito a @ALX)

    • Apri l'editor di Applescript
    • Crea il file Applescript con questi contenuti:

      delay 10
      tell application "System Events" to keystroke "e"
      
    • Esegui il file di script e poi passa rapidamente alla finestra del terminale. In pochi secondi preme virtualmente la chiave e e si spera che venga visualizzata nel tuo terminale. Ciò indicherebbe che potrebbe esserci un problema di input / device driver (anche se non ho idea di cosa possa essere)

Non ho intenzione di mentire, sono assolutamente affascinato da questo problema e non vedo l'ora di scoprire quale sia la causa. Non è hardware perché funziona in altre applicazioni, il che significa che è software e non riesco a immaginare chi potrebbe ingoiare la lettera e con il codice.

    
risposta data 12.05.2016 - 04:10
fonte
3

Ho appena trovato questo thread dopo aver eseguito lo stesso problema.

.inputrc

Ho avuto 2 righe in .inputrc , aggiunte in un momento di ignoranza incurante, che inizia con e e s (che sono una configurazione bash valida, ma non una configurazione di letture valida). Sembra che siano stati interpretati come alias di keybinding per la personalizzazione readline.

Rimozione delle linee da .inputrc , ho confermato, risolto il mio problema.

Grazie @ user208052 per il promemoria pertinente per verificare .inputrc .

La configurazione della riga di comando della shell

Il comando bind della shell consente di visualizzare e modificare la configurazione di Readline. (Vedi help bind . help è man per i comandi interni alla shell).

Visualizza bind -p (forse pipe a less |less o reindirizzamento a un file > binds.txt ). "elenca [s] funzioni e associazioni in un modulo che può essere riutilizzato come input" .

Ha voci come "c": self-insert per ogni carattere nell'intervallo ASCII, quindi la config su di esso può sostituire self-insert con qualche altra funzione di Readline.

Ha delle gemme; visualizzarlo mi ha appena insegnato che C-= ( \e= ) stampa possibili completamenti, nella mia configurazione predefinita. Sembra mostrare l'attuale configurazione completa di Readline per la tua shell ... piuttosto utile e potente. Buono per esplorare.

Test end-to-end

  1. e funziona
  2. inserisci una riga errata in .inputrc , apri nuova shell

    et completion-map-case on
    set completion-ignore-case on
    
  3. e è apparentemente un non-operativo

  4. bind -p ( | grep -i '"E"' ) mostra
    • "E": self-insert ,
    • ma non "e": self-insert
    • mentre "A": self-insert e "a": self-insert sono presenti.
risposta data 06.01.2017 - 12:39
fonte
2

Sono un po 'arrugginito, ma incollare in Terminale funziona in modo diverso rispetto a incollare in un programma GUI: ogni carattere viene inviato come una sequenza di tasti separata, non come una copia dagli Appunti al buffer delle applicazioni. Quindi se la "e" è stata rimappata, verrà rimappata anche nella pasta.

Controlla le seguenti posizioni:

System Preferences > Keyboard > Shortcuts

~/Library/KeyBindings/KeyBindings.dict

$ defaults read com.apple.Automator NSUserKeyEquivalents

    
risposta data 12.05.2016 - 09:21
fonte
1

Qualcos'altro che puoi provare, è impostare il terminale per aprire un editor di testo (emacs, vi, ecc.) quando viene aperta una nuova finestra. Ad esempio, nelle preferenze Terminal per "Shell", puoi averlo Esegui comando come /usr/bin/emacs . Se non puoi inserire e nel pannello delle preferenze, allora qualcosa di ancora più strano di quanto è stato proposto finora sta succedendo ...

Quando viene aperta una nuova finestra di terminale, emacs sarà dovrebbe iniziare, e puoi provare a premere e ecc. Non ho idea di cosa succederà, ma come @ Al di sopra, sono curioso di sapere cosa sta succedendo.

    
risposta data 12.05.2016 - 12:56
fonte
0

Controlla le impostazioni stty e assicurati che 'e' non sia stato impostato per errore come backspace o simile. Ci sono stato, fatto. Stty something \ e Lo farei La raccomandazione di disabilitare / commentare out .bash * probabilmente lo scoprirebbe anche.

    
risposta data 16.05.2016 - 19:15
fonte
0

Ho avuto lo stesso problema causato da un errore di battitura in /etc/inputrc :

et output-meta on

invece di

set output-meta on
    
risposta data 01.11.2017 - 12:29
fonte
-1

Basta eliminare il file .inputrc, è nella directory principale. (È un file nascosto).

    
risposta data 27.10.2016 - 14:44
fonte

Leggi altre domande sui tag