Nel terminale non riesco a digitare lettere minuscole


14

Se apro una finestra Terminale e digito la lettera "e" (senza virgolette ovviamente) emette un segnale acustico e non digita la lettera. Ogni altra lettera funziona benissimo in Terminal. Anche la maiuscola E funziona. Solo la e minuscola non lo fa.

In ogni altra app sul mio computer le lettere minuscole funzionano senza problemi, quindi non è un problema di tastiera.

Questo è iniziato qualche volta nell'ultima settimana. Uso Terminal molto nel mio lavoro e questo non è mai stato un problema. Ho riavviato (non risolto). Ho resettato il terminale (non riparato).

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

Cordiali saluti, ho provato a utilizzare iTerm2 di terze parti e fa la stessa cosa.

ANCHE - se incollo qualcosa con una e inferiore, fa la stessa cosa - non la accetterà. Dovrebbe essere un problema di configurazione terminale bash, penso.

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

Inoltre, nel caso in cui non sia chiaro, ciò accade con la tastiera integrata nell'MBP e con una tastiera esterna. Sulla base di questo e del problema di incollaggio, non penso che questo sia un problema di tastiera fisica in alcun modo.

Specifiche: MacBook Pro 2015, OS X completamente aggiornato


1
Il comportamento persiste se si passa a un'altra shell, come csh o tcsh?
Kent,

2
È strano ... prova ad aprirlo applescriptcercandolo sotto i riflettori e digita delay 10quindi premi Invio e scrivi tell application "System Events" to keystroke "e"esattamente come scritto. Quando si preme, il gioco attenderà 10 secondi, quindi premere e da solo. Vai al terminale prima che scada il tempo e testalo. Se ciò non funziona, allora hai un grave problema interno con il tuo computer.
ALX,

1
Cosa succede se la posizione in cat filnam.txtcui il file chiamato filnam.txtcontiene del testo ASCII e?
techraf,


È solo nella shell o in qualsiasi programma in esecuzione in Terminal?
agentroadkill,

Risposte:


7

Eseguiamo il debug.

  1. Cambia shell e riprova. (Credito a @Kent) Nel terminale:
    • $(which zsh)
  2. Commenta tutte le righe in .bash_profile, .bashrcecc. E apri una nuova scheda / finestra del terminale. Se questo risolve il problema, qualcosa che viene caricato nell'ambiente shell sta consumando la lettera eper motivi che la scienza potrebbe non essere mai in grado di spiegare.
  3. Prova catun file che contiene la lettera eper vedere se verrà visualizzato: (Ringraziamenti a @techraf)
    • Apri un editor di testo (non un terminale)
    • Inserisci del testo con qualche secondo ee salva il file ( foo.txt?)
    • Nel terminale, catil file:
      • cd /path/to/folder; cat foo.txt
    • Se viene eeseguito il rendering, il terminale può gestirlo, in caso contrario, è super strano.
  4. Prova a applecript. (Credito a @ALX)

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

      delay 10
      tell application "System Events" to keystroke "e"
    • Eseguire il file di script e quindi passare rapidamente alla finestra del terminale. In pochi secondi premerà virtualmente il etasto e si spera che si presenti sul tuo terminale. Ciò indicherebbe che potrebbe esserci un problema con il driver di input / dispositivo (anche se non ho idea di cosa potrebbe essere)

Non mentirò, sono assolutamente affascinato da questo problema e non vedo l'ora di scoprire qual è la causa. Non è hardware perché funziona in altre applicazioni, il che significa che è un software e non riesco a immaginare chi avrebbe ingoiato la lettera econ il codice.


1
Meglio provare una shell C ad esempio tcsh poiché non (non può) leggere i file di avvio di bash o anche solo avviare un interprete ad esempio python su perl e digitare lì
user151019

1
Sì, in realtà sono FASCINATO da questo numero
Manchineel,

"Non riesco a immaginare chi inghiottire la lettera e con il codice" Questo ragazzo potrebbe sapere qualcosa ... upload.wikimedia.org/wikipedia/en/5/5e/Cisforcookie.jpg
Allan

4

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

.inputrc

Ho avuto 2 righe .inputrc, aggiunte in un momento di ignoranza incurante, a partire da ees (che sono valide bash config, ma non valide readline config). Sembrano essere stati interpretati come alias di keybinding per la personalizzazione readline.

Rimuovendo le righe da .inputrc, ho confermato, ho risolto il mio problema.

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

La configurazione Readline della shell

Il bindcomando della shell consente di visualizzare e modificare la configurazione di Readline. (Vedi help bind. helpÈ manper i comandi interni alla shell).

Visualizza bind -p(forse reindirizza a meno |lesso reindirizza a un file > binds.txt). E "lista [s] funzioni e legature in una forma che può essere riutilizzato come input" .

Ha voci come "c": self-insertper ogni carattere nell'intervallo ASCII, quindi la configurazione errata può sostituire self-insertcon un'altra funzione Readline.

Ha delle gemme; vederlo mi ha insegnato che C-=( \e=) stampa i 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 lavori
  2. inserire una riga errata .inputrc, aprire una nuova shell

    et completion-map-case on
    set completion-ignore-case on
  3. e è apparentemente un no-op

  4. bind -p( | grep -i '"E"') mostra
    • "E": self-insert,
    • ma no "e": self-insert
    • mentre "A": self-inserte "a": self-insertsono presenti.

2

Sono un po 'arrugginito, ma incollare in Terminal funziona in modo diverso rispetto all'incollare in un programma GUI: ogni personaggio viene inviato come una sequenza di tasti separata, non come una copia dagli appunti al buffer dell'app. 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


Verifica esattamente cosa?
Nohillside

Se la echiave è stata rimappata.
zencraft,

1
Supponendo che l'OP non sia troppo esperto in queste cose: cosa dovrebbero cercare esattamente? Un esempio di tale mappatura potrebbe essere utile.
Nohillside

1
Per le scorciatoie da tastiera, cerca le rimappature dei tasti: c'è un elenco di app a sinistra e un elenco di scorciatoie a destra. Assicurarsi che Terminal non sia nell'elenco delle app. Gli altri due dovrebbero essere vuoti; se esiste KeyBindings.dict o il comando default restituisce qualcosa, pubblicalo qui per ulteriori analisi.
zencraft,

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 Terminale per "Shell", è possibile avere il comando Esegui come /usr/bin/emacs. Se non riesci a entrare enel riquadro delle preferenze, qualcosa di ancora più strano di quanto è stato proposto finora sta succedendo ...

Quando una nuova finestra Terminale viene aperta, Emacs si dovrebbe iniziare, e si può provare a premere eecc non ho idea di cosa accadrà, ma, come @Pierce sopra, io sono curioso di sapere cosa sta succedendo possibilmente.


0

Controlla l'impostazione stty e assicurati che 'e' non sia stato accidentalmente impostato come backspace o simile. Ci sono stato, l'ho fatto. Stty qualcosa \ e Lo farebbe La raccomandazione di disabilitare / commentare .bash * probabilmente lo scoprirebbe.


0

Ho avuto lo stesso problema causato dall'errore di battitura /etc/inputrc:

et output-meta on

invece di

set output-meta on

0

Stranamente ho appena avuto questo con macOS 10.13.6 su MacBook Air. Un utente stava bene, il terminale utente admin che eseguiva bash non avrebbe accettato la lettera minuscola 'a'- non digitando, non incollando, ecc. Eseguendo zsh andrebbe bene. Altri utenti, bene. Penso che questo fosse successo prima e risolto eliminando il file /Users/admin/.inputrc e .bash_profile. Li ho nuovamente aggiunti e funziona. Stranamente non c'è nulla di importante in questi file. .inputrc è semplicemente "imposta completamento-ignore-case su" e ci sono un paio di alias da riga di comando in .bash_profile. Onestamente potrebbe esserci qualcos'altro, ma per ora funziona.

Mi sembra di ricordare di dover eliminare e aggiungere nuovamente questi file su questo problema. Bene, questi file potrebbero innescare o ripristinare almeno il problema.


-1

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.