Di Terminal saya tidak bisa mengetikkan huruf kecil e

14

Jika saya membuka jendela Terminal dan saya mengetik huruf "e" (tanpa tanda kutip tentunya) itu berbunyi bip dan tidak akan mengetikkan huruf itu. Setiap surat lainnya berfungsi dengan baik di Terminal. Huruf besar E juga berfungsi. Hanya huruf kecil e tidak.

Di setiap aplikasi lain di komputer, huruf kecil dan e berfungsi tanpa masalah, jadi ini bukan masalah keyboard.

Ini dimulai pada minggu terakhir. Saya banyak menggunakan Terminal dalam pekerjaan saya dan tidak pernah menjadi masalah. Saya telah reboot (tidak memperbaiki). Saya telah mengatur ulang terminal (tidak diperbaiki).

Karena saya tidak tahu tanggal pasti kapan ini dimulai, saya tidak yakin apakah saya membuat perubahan atau menginstal perangkat lunak. Saya mencoba menghapus apa pun yang telah saya instal baru-baru ini.

FYI Saya telah mencoba menggunakan iTerm2 pihak ke-3 dan melakukan hal yang sama.

JUGA - jika saya menempelkan sesuatu dengan e yang lebih rendah, ia melakukan hal yang sama - tidak akan menerimanya. Pasti ada beberapa masalah konfigurasi terminal bash yang saya pikir.

Sebenarnya, saya menyalin pengertian berikut dan kemudian saya menempelkannya di Terminal. Apa yang muncul? sns dan Anda dapat mendengar dua bip.

Juga - jika tidak jelas - ini terjadi dengan keyboard bawaan pada MBP serta keyboard eksternal. Berdasarkan itu dan masalah menempel, saya tidak berpikir ini adalah masalah keyboard fisik dengan cara apa pun.

Spesifikasi: 2015 MacBook Pro, sepenuhnya terkini OS X

pengguna3720729
sumber
1
Apakah perilaku tetap ada jika Anda pergi ke shell lain, seperti csh atau tcsh?
Kent
2
Aneh ... coba buka applescriptdengan mencari sorotan, dan ketik delay 10lalu tekan kembali dan tulis tell application "System Events" to keystroke "e"persis seperti yang tertulis. Ketika pemutaran ditekan, itu akan menunggu 10 detik, dan kemudian tekan e dengan sendirinya. Pergi ke terminal sebelum waktu itu berakhir dan mengujinya. Jika itu tidak berhasil, maka Anda memiliki masalah internal serius dengan komputer Anda.
ALX
1
Apa yang terjadi jika Anda di cat filnam.txtmana file yang dipanggil filnam.txtberisi beberapa teks ASCII e?
techraf
Apakah ini hanya di shell atau di program yang berjalan di Terminal?
agentroadkill

Jawaban:

7

Mari kita debug itu.

  1. Ganti kerang dan coba lagi. (Kredit ke @Kent) Di terminal:
    • $(which zsh)
  2. Komentar dari semua lini di .bash_profile, .bashrc, dll dan membuka tab terminal / jendela baru. Jika ini menyelesaikan masalah, sesuatu yang dimuat ke lingkungan shell menggunakan surat itu euntuk alasan yang mungkin tidak bisa dijelaskan oleh sains.
  3. Coba catfile yang berisi surat euntuk melihat apakah itu bahkan akan menampilkan: (Kredit ke @techraf)
    • Buka editor teks (bukan terminal)
    • Masukkan beberapa teks dengan beberapa es dan simpan file ( foo.txt?)
    • Di terminal, catfile:
      • cd /path/to/folder; cat foo.txt
    • Jika es render maka terminal dapat menanganinya, jika tidak, maka ini sangat aneh.
  4. Coba applescript. (Kredit ke @ALX)

    • Buka editor Applescript
    • Buat file Applescript dengan konten ini:

      delay 10
      tell application "System Events" to keystroke "e"
    • Jalankan file skrip dan kemudian navigasi cepat ke jendela terminal. Dalam beberapa detik ini akan benar-benar menekan etombol dan mudah-mudahan muncul di terminal Anda. Ini akan menunjukkan bahwa mungkin ada masalah input / driver perangkat (meskipun saya tidak tahu apa yang mungkin terjadi)

Saya tidak akan berbohong, saya benar-benar terpesona dengan masalah ini dan tidak sabar untuk mengetahui apa penyebabnya. Ini bukan perangkat keras karena berfungsi di aplikasi lain, yang berarti perangkat lunak dan saya tidak bisa membayangkan siapa yang akan menelan surat edengan kode.

Menembus
sumber
1
Lebih baik untuk mencoba shell C misalnya tcsh karena tidak akan (tidak dapat) membaca file startup bash atau bahkan hanya memulai juru bahasa misalnya python on perl dan ketik di sana
user151019
1
Ya, saya sebenarnya TERSENANG oleh masalah ini
Manchineel
"Saya tidak bisa membayangkan siapa yang akan menelan huruf e dengan kode" Orang ini mungkin tahu sesuatu ... unggah.wikimedia.org/wikipedia/en/5/5e/Cisforcookie.jpg
Allan
4

Saya baru saja menemukan utas ini setelah mengalami masalah yang sama.

.inputrc

Saya memiliki 2 baris .inputrc, ditambahkan saat ketidaktahuan ceroboh, dimulai dengan edans (yang merupakan konfigurasi bash yang valid, tetapi bukan konfigurasi readline yang valid). Mereka tampaknya telah ditafsirkan sebagai keybinding-alias untuk kustomisasi readline.

Menghapus garis dari .inputrc, saya telah mengkonfirmasi, menyelesaikan masalah saya.

Terima kasih @ user208052 untuk pengingat yang relevan untuk diperiksa .inputrc.

Konfigurasi Readline dari shell

Perintah shell bindmemungkinkan untuk melihat dan memodifikasi konfigurasi Readline. (Lihat help bind. helpAdalah manuntuk perintah shell-internal).

Lihat bind -p(mungkin pipa ke kurang |lessatau redirect ke file > binds.txt). Ini "daftar fungsi dan binding dalam bentuk yang dapat digunakan kembali sebagai input" .

Ini memiliki entri seperti "c": self-insertuntuk setiap karakter dalam rentang ASCII, sehingga konfigurasi yang kacau dapat diganti self-insertdengan beberapa fungsi Readline lainnya.

Ada beberapa permata; melihatnya hanya mengajarkan saya bahwa C-=( \e=) mencetak kemungkinan penyelesaian, dalam konfigurasi default saya. Tampaknya menunjukkan konfigurasi Readline saat ini lengkap untuk shell Anda ... cukup berguna dan kuat. Bagus untuk dijelajahi.

Tes ujung ke ujung

  1. e bekerja
  2. masukkan garis yang salah .inputrc, buka shell baru

    et completion-map-case on
    set completion-ignore-case on
  3. e tampaknya no-op

  4. bind -p( | grep -i '"E"') menunjukkan
    • "E": self-insert,
    • tapi tidak "e": self-insert
    • sedangkan "A": self-insertdan "a": self-inserthadir.
mcint
sumber
2

Saya agak berkarat, tetapi menempel di Terminal bekerja berbeda dari menempel di program GUI: setiap karakter dikirim sebagai keystroke terpisah, bukan sebagai memo dari clipboard ke buffer aplikasi. Jadi jika "e" telah dipetakan kembali, itu akan dipetakan kembali di tempel juga.

Periksa lokasi berikut:

System Preferences > Keyboard > Shortcuts

~/Library/KeyBindings/KeyBindings.dict

$ defaults read com.apple.Automator NSUserKeyEquivalents

zencraft
sumber
Periksa apa sebenarnya?
nohillside
Apakah ekunci telah dipetakan kembali.
zencraft
1
Dengan asumsi bahwa OP tidak terlalu berpengalaman dalam hal-hal seperti itu: apa sebenarnya yang harus mereka cari? Contoh pemetaan semacam itu mungkin bermanfaat.
nohillside
1
Untuk Pintasan Keyboard, cari remapping kunci: ada daftar aplikasi di sebelah kiri dan daftar pintasan di sebelah kanan. Pastikan Terminal tidak ada dalam daftar aplikasi. Dua lainnya harus kosong; jika KeyBindings.dict ada atau perintah default mengembalikan sesuatu, posting di sini untuk analisis lebih lanjut.
zencraft
1

Hal lain yang dapat Anda coba, adalah mengatur Terminal untuk membuka editor teks (emacs, vi, dll) ketika jendela baru dibuka. Misalnya, dalam preferensi Terminal untuk "Shell", Anda dapat memilikinya Jalankan perintah seperti /usr/bin/emacs. Jika Anda tidak bisa masuk edi panel preferensi, maka sesuatu yang lebih aneh daripada apa yang telah diusulkan sejauh ini sedang terjadi ...

Ketika jendela Terminal baru dibuka, emacs akan mulai, dan Anda dapat mencoba untuk menekan edll. Saya tidak tahu apa yang akan terjadi, tetapi seperti @Pierce di atas, saya ingin tahu apa yang mungkin terjadi.

Kent
sumber
0

Periksa pengaturan stty dan pastikan 'e' tidak sengaja diatur sebagai backspace atau serupa. Pernah ke sana, melakukan itu. Stty something \ e Would do it. Rekomendasi untuk menonaktifkan / mengomentari .bash * mungkin juga akan membukanya.

Daryl Monge
sumber
0

Saya memiliki masalah yang sama yang disebabkan oleh salah ketik /etc/inputrc:

et output-meta on

dari pada

set output-meta on
fikovnik
sumber
0

Anehnya, saya baru saja menjalankan macOS 10.13.6 di MacBook Air. Satu pengguna baik-baik saja, terminal pengguna admin yang menjalankan bash tidak akan menerima huruf kecil 'a'- tidak mengetik, tidak menempel, dll. Menjalankan zsh itu akan baik-baik saja. Pengguna lain, baik. Saya pikir ini telah terjadi sebelumnya dan memperbaikinya dengan menghapus file / Pengguna / admin / file, dan .bash_profile. Saya menambahkannya kembali dan berfungsi. Anehnya tidak ada yang penting dalam file-file ini. .inputrc hanya "setel penyelesaian-abaikan-case Aktif", dan ada beberapa alias baris perintah di .bash_profile. Jujur, ada hal lain yang mungkin terjadi tetapi bekerja untuk saat ini.

Sepertinya saya ingat harus menghapus dan menambahkan kembali file-file ini atas masalah ini. Yah, file-file ini mungkin memicu atau mengatur ulang masalah setidaknya.

Fieldlab
sumber
-1

Hapus saja file .inputrc, itu ada di direktori root. (Ini file tersembunyi).

pengguna208052
sumber