Jeśli otworzę okno terminala i wpisuję literę „e” (oczywiście bez cudzysłowu), usłyszysz sygnał dźwiękowy i nie wpisze litery. Każda inna litera działa dobrze w terminalu. Wielkie litery E również działają. Tylko małe litery e nie.
W każdej innej aplikacji na moim komputerze małe litery e działają bez problemu, więc nie jest to problem z klawiaturą.
Zaczęło się to w ostatnim tygodniu. Często używam terminalu w pracy i nigdy nie było to problemem. Uruchomiłem ponownie (nie naprawiłem). Mam zresetowany terminal (nie naprawiłem).
Ponieważ nie znam dokładnej daty rozpoczęcia, nie jestem pewien, czy wprowadziłem jakieś zmiany lub zainstalowałem oprogramowanie. Próbuję usunąć wszystko, co ostatnio zainstalowałem.
Do Twojej wiadomości Próbowałem użyć iTerm2 innej firmy i robi to samo.
RÓWNIEŻ - jeśli wkleję coś o niższym e, robi to samo - nie weźmie tego. To chyba jakiś problem z konfiguracją terminala bash.
W rzeczywistości skopiowałem następujący sens, a następnie wkleiłem go w terminalu. Co się pojawia sns i słychać dwa sygnały dźwiękowe.
Ponadto - w przypadku niejasności - dzieje się tak zarówno z wbudowaną klawiaturą MBP, jak i zewnętrzną klawiaturą. Biorąc pod uwagę to i problem z wklejaniem, nie sądzę, że jest to w jakikolwiek sposób problem z klawiaturą fizyczną.
Specyfikacja: MacBook Pro 2015, w pełni aktualny OS X
applescript
, wyszukując go w świetle reflektorów, adelay 10
następnie wpisz, a następnie naciśnij klawisz Return i napisztell application "System Events" to keystroke "e"
dokładnie tak, jak napisano. Po naciśnięciu odtwarzanie zaczeka 10 sekund, a następnie samo e. Idź do terminalu przed upływem tego czasu i przetestuj go. Jeśli to nie zadziała, oznacza to, że masz poważny problem wewnętrzny z komputerem.cat filnam.txt
plik, do którego wywoływanyfilnam.txt
jest plik, zawiera tekst ASCIIe
?Odpowiedzi:
Debugujmy to.
$(which zsh)
.bash_profile
,.bashrc
itp i otworzyć nową kartę / okno terminala. Jeśli to rozwiąże problem, coś ładowanego do środowiska powłoki zużywa literęe
z powodów, których nauka może nigdy nie być w stanie wyjaśnić.cat
wprowadzić plik zawierający literę,e
aby zobaczyć, czy wyświetli się: (Kredyt @techraf)e
si zapisz plik (foo.txt
?)cat
plik:cd /path/to/folder; cat foo.txt
e
jest renderowany, terminal może to obsłużyć, jeśli nie, to jest to bardzo dziwne.Wypróbuj AppleScript. (Kredyt na @ALX)
Utwórz plik Applescript z następującą zawartością:
Uruchom plik skryptu, a następnie szybko przejdź do okna terminala. Za kilka sekund wirtualnie wciśnie
e
klawisz i, mam nadzieję, pojawi się w twoim terminalu. Oznaczałoby to, że mógł wystąpić problem ze sterownikiem wejścia / urządzenia (chociaż nie mam pojęcia, co to może być)Nie zamierzam kłamać, jestem absolutnie zafascynowany tym problemem i nie mogę się doczekać, aby dowiedzieć się, co jest przyczyną. To nie jest sprzęt, ponieważ działa w innych aplikacjach, co oznacza, że jest oprogramowaniem i nie wyobrażam sobie, kto mógłby połknąć literę
e
z kodem.źródło
Właśnie znalazłem ten wątek po napotkaniu tego samego problemu.
.inputrc
Miałem 2 wiersze
.inputrc
, dodane w chwili nieostrożnej ignorancji, zaczynając ode
is
(które są poprawną konfiguracją bash, ale nie poprawną konfiguracją readline). Wydaje się, że zostały one zinterpretowane jako aliasy skrótów dla dostosowania readline..inputrc
Potwierdziłem, że usunięcie wierszy rozwiązało mój problem.Dzięki @ user208052 za odpowiednie przypomnienie do sprawdzenia
.inputrc
.Konfiguracja Readline powłoki
Polecenie powłoki
bind
umożliwia przeglądanie i modyfikację konfiguracji Readline. (Patrzhelp bind
,help
jestman
poleceń powłoki wewnętrzne).Zobacz
bind -p
(może potokować do mniej|less
lub przekierować do pliku> binds.txt
). To „listy [S] Funkcje i wiązania w formie, która może być ponownie wykorzystana jako wejście” .Ma wpisy jak
"c": self-insert
dla każdego znaku w zakresie ASCII, więc zepsuta konfiguracja może zastąpićself-insert
inną funkcją Readline.Ma kilka klejnotów; przeglądanie go tylko nauczyło mnie, że
C-=
(\e=
) drukuje możliwe uzupełnienia, w mojej domyślnej konfiguracji. Wygląda na to, że pokazuje pełną aktualną konfigurację Readline dla twojej powłoki ... całkiem przydatna i potężna. Dobry do odkrywania.Test od końca do końca
e
Pracujewstaw błędną linię
.inputrc
, otwórz nową powłokęe
najwyraźniej nie ma możliwościbind -p
(| grep -i '"E"'
) pokazuje"E": self-insert
,"e": self-insert
"A": self-insert
i"a": self-insert
są obecne.źródło
Jestem trochę zardzewiały, ale wklejanie w Terminalu działa inaczej niż wklejanie w programie GUI: każda postać jest wysyłana jako osobne naciśnięcie klawisza, a nie jako memcopy ze schowka do bufora aplikacji. Więc jeśli „e” zostało ponownie mapowane, zostanie również mapowane w wklejeniu.
Sprawdź następujące lokalizacje:
System Preferences > Keyboard > Shortcuts
~/Library/KeyBindings/KeyBindings.dict
$ defaults read com.apple.Automator NSUserKeyEquivalents
źródło
e
klucz został ponownie przypisany.Możesz spróbować ustawić Terminal tak, aby otwierał edytor tekstu (emacs, vi itp.) Po otwarciu nowego okna. Na przykład w preferencjach terminalu dla „Powłoki” możesz ustawić polecenie Uruchom, takie jak
/usr/bin/emacs
. Jeśli nie możesz wejść ew okienko preferencji, dzieje się coś jeszcze dziwniejszego niż dotychczas proponowane ...Kiedy nowe okno Terminal jest otwarty, emacs
będziepowinno się rozpocząć i można spróbować nacisnąć eitd. Nie mam pojęcia, co się stanie, ale jak @Pierce powyżej, jestem ciekaw, co jest być może dzieje.źródło
Sprawdź ustawienie stty i upewnij się, że „e” nie zostało przypadkowo ustawione jako backspace lub podobne. Byłem tam, zrobiłem to. Stty coś \ e Zrobiłoby to Zalecenie, aby wyłączyć / skomentować .bash * prawdopodobnie również to odkryłoby.
źródło
Miałem ten sam problem, który spowodowany był literówką
/etc/inputrc
:zamiast
źródło
Dziwne, że właśnie to wymyśliłem z systemem macOS 10.13.6 na MacBooku Air. Jeden użytkownik był w porządku, terminal administratora działający w trybie bash nie zaakceptowałby małej litery „a” - nie pisał, nie wklejał itp. Uruchamianie zsh byłoby w porządku. Inni użytkownicy, w porządku. Myślę, że stało się to wcześniej i naprawiłem to, usuwając plik /Users/admin/.inputrc i .bash_profile. Dodałem je ponownie i działa. Co dziwne, w tych plikach nie ma nic ważnego. .inputrc jest po prostu „ustaw na Włącz-ignoruj-wielkość liter”, a w pliku .bash_profile znajduje się kilka aliasów wiersza poleceń. Szczerze mówiąc, coś jeszcze może się wydarzyć, ale na razie działa.
Wydaje mi się, że pamiętam konieczność usunięcia i ponownego dodania tych plików w związku z tym problemem. Cóż, te pliki mogą przynajmniej wywołać lub zresetować problem.
źródło
Wystarczy usunąć plik .inputrc, znajduje się on w katalogu głównym. (To ukryty plik).
źródło