ในเทอร์มินัลฉันไม่สามารถพิมพ์ตัวพิมพ์เล็กได้


14

ถ้าฉันเปิดหน้าต่างเทอร์มินัลและฉันพิมพ์ตัวอักษร "e" (โดยไม่ต้องใส่เครื่องหมายอัญประกาศ) จะมีเสียงบี๊บและจะไม่พิมพ์ตัวอักษร ตัวอักษรอื่น ๆ ทุกตัวทำงานได้ดีใน Terminal ตัวพิมพ์ใหญ่ E ทำงานเช่นกัน แค่ตัวพิมพ์เล็ก e เท่านั้น

ในทุก ๆ แอพอื่น ๆ ในคอมพิวเตอร์ของฉันตัวพิมพ์เล็กทำงานได้อย่างไม่มีปัญหาดังนั้นจึงไม่ใช่ปัญหาเกี่ยวกับคีย์บอร์ด

เรื่องนี้เริ่มบางครั้งในสัปดาห์ที่แล้ว ฉันใช้ Terminal มากในงานของฉันและไม่เคยเป็นปัญหามาก่อน ฉันรีบูทแล้ว (ไม่แก้ไข) ฉันรีเซ็ตเทอร์มินัล (ไม่แก้ไข)

เนื่องจากฉันไม่ทราบวันที่แน่นอนเมื่อเริ่มต้นฉันไม่แน่ใจว่าฉันทำการเปลี่ยนแปลงหรือติดตั้งซอฟต์แวร์ใด ๆ ฉันกำลังพยายามลบสิ่งที่ฉันติดตั้งเมื่อเร็ว ๆ นี้

FYI ฉันได้ลองใช้ iTerm2 ของบุคคลที่สามแล้วและทำสิ่งเดียวกัน

นอกจากนี้ - ถ้าฉันแปะสิ่งที่มีค่า e ต่ำกว่าก็ทำสิ่งเดียวกัน - จะไม่รับ จะต้องมีปัญหาบางอย่าง terminal bash config ฉันคิดว่า

ในความเป็นจริงฉันคัดลอกความรู้สึกต่อไปนี้แล้วฉันก็วางมันลงในเทอร์มินัล มีอะไรปรากฏขึ้นบ้าง SNSและคุณสามารถได้ยินเสียงเตือนสองครั้ง

นอกจากนี้ - ในกรณีที่ไม่ชัดเจน - เกิดขึ้นกับแป้นพิมพ์ในตัวของ MBP เช่นเดียวกับแป้นพิมพ์ภายนอก จากเรื่องนั้นและปัญหาการวางฉันไม่คิดว่านี่เป็นปัญหาแป้นพิมพ์ทางกายภาพ แต่อย่างใด

ข้อมูลจำเพาะ: 2015 MacBook Pro, อัปเดต OS X อย่างเต็มที่


1
พฤติกรรมนี้ยังคงอยู่หรือไม่ถ้าคุณไปที่เปลือกอื่นเช่น csh หรือ tcsh
Kent

2
มันแปลกมาก ... ลองเปิดapplescriptโดยค้นหามันด้วยสปอตไลท์แล้วพิมพ์delay 10จากนั้นกด Return และเขียนให้tell application "System Events" to keystroke "e"ตรง เมื่อกดเล่นมันจะรอ 10 วินาทีจากนั้นกด e ด้วยตัวเอง ไปที่เทอร์มินัลก่อนเวลานั้นจะหมดอายุและทดสอบ หากวิธีนี้ใช้ไม่ได้ผลแสดงว่าคุณมีปัญหาภายในที่ร้ายแรงกับคอมพิวเตอร์ของคุณ
ALX

1
จะเกิดอะไรขึ้นถ้าคุณcat filnam.txtที่ไฟล์ที่เรียกว่าfilnam.txtมีข้อความ ASCII อยู่ด้วยe?
techraf


มีเฉพาะในเชลล์หรือในโปรแกรมใด ๆ ที่ทำงานในเทอร์มินัลเท่านั้น
agentroadkill

คำตอบ:


7

มาแก้ปัญหากันดีกว่า

  1. เปลี่ยนเปลือกหอยแล้วลองอีกครั้ง (เครดิตถึง @Kent) ในเทอร์มินัล:
    • $(which zsh)
  2. แสดงความคิดเห็นออกทุกสายใน.bash_profile, .bashrcฯลฯ และเปิดสถานีใหม่แท็บ / หน้าต่าง หากสิ่งนี้สามารถแก้ไขปัญหาได้บางสิ่งที่ถูกโหลดเข้าสู่สภาพแวดล้อมของเชลล์กำลังใช้ตัวอักษรeด้วยเหตุผลที่วิทยาศาสตร์ไม่สามารถอธิบายได้
  3. ลองcatไอเอ็นจีไฟล์ที่มีตัวอักษรeเพื่อดูว่ามันจะแสดงหรือไม่: (Credit to @techraf)
    • เปิดตัวแก้ไขข้อความ (ไม่ใช่เทอร์มินัล)
    • ป้อนข้อความด้วยeไฟล์และบันทึกไฟล์ ( foo.txt?)
    • ในเทอร์มินัลcatไฟล์:
      • cd /path/to/folder; cat foo.txt
    • หากeแสดงผลเทอร์มินัลสามารถจัดการได้หากไม่แสดงว่านี่เป็นสิ่งที่แปลกมาก
  4. ลองใช้ applescript (เครดิตถึง @ALX)

    • เปิดเครื่องมือแก้ไข Applescript
    • สร้างไฟล์ Applescript ด้วยเนื้อหาเหล่านี้:

      delay 10
      tell application "System Events" to keystroke "e"
    • เรียกใช้งานไฟล์สคริปต์จากนั้นนำทางไปยังหน้าต่างเทอร์มินัลอย่างรวดเร็ว ในไม่กี่วินาทีมันก็จะกดeปุ่มและหวังว่าจะปรากฏขึ้นใน terminal ของคุณ นี่จะบ่งบอกว่าอาจมีปัญหาเกี่ยวกับไดรเวอร์ / อุปกรณ์อินพุต (แม้ว่าฉันจะไม่รู้ว่ามันอาจเป็นอะไร)

ฉันจะไม่โกหกฉันรู้สึกทึ่งกับปัญหานี้อย่างมากและไม่สามารถรอที่จะเรียนรู้ว่าสาเหตุคืออะไร ไม่ใช่ฮาร์ดแวร์เพราะทำงานในแอปพลิเคชันอื่นซึ่งหมายความว่าเป็นซอฟต์แวร์และฉันไม่สามารถจินตนาการได้ว่าใครจะกลืนeรหัสด้วยตัวอักษร


1
ดีกว่าที่จะลอง C เปลือกเช่น tcsh มันจะไม่ (ไม่สามารถ) อ่านไฟล์เริ่มต้นทุบตีหรือแม้กระทั่งเพียงแค่เริ่มต้นล่ามเช่นงูหลามใน Perl และประเภทในการมี
user151019

1
ใช่ฉันจริง FASCINATED จากปัญหานี้
Manchineel

"ฉันไม่สามารถจินตนาการได้ว่าใครจะกลืนจดหมายด้วยรหัส" ผู้ชายคนนี้อาจจะรู้อะไรบางอย่าง ... upload.wikimedia.org/wikipedia/en/5/5e/Cisforcookie.jpg
อัลลัน

4

ฉันเพิ่งพบกระทู้นี้หลังจากใช้เป็นปัญหาเดียวกัน

.inputrc

ผมมี 2 สายใน.inputrc,เพิ่มเข้ามาในช่วงเวลาของความไม่รู้ความประมาทที่ เริ่มต้นด้วยeและs (ซึ่งมีการกำหนดค่าทุบตีถูกต้อง แต่ไม่ได้กำหนดค่า ReadLine ที่ถูกต้อง) ดูเหมือนว่าพวกเขาถูกตีความว่าเป็น keybinding-aliases สำหรับการปรับแต่ง readline

ลบบรรทัดจาก.inputrcฉันได้รับการยืนยันแก้ไขปัญหาของฉัน

ขอบคุณ @ user208052 .inputrcสำหรับการแจ้งเตือนที่เกี่ยวข้องกับการตรวจสอบ

คอนฟิกูเรชัน Readline ของเชลล์

bindคำสั่งของเชลล์อนุญาตให้ดูและปรับเปลี่ยน Readline config (ดูhelp bind. helpเป็นmanคำสั่งเชลล์ภายใน)

ดูbind -p(อาจไพพ์ไปที่น้อยกว่า|lessหรือเปลี่ยนเส้นทางไปยังไฟล์> binds.txt) มันรายการ "[s] ฟังก์ชั่นและการผูกในรูปแบบที่สามารถนำกลับมาเป็น input"

มันมีรายการที่ชอบ"c": self-insertสำหรับตัวละครทุกตัวในช่วง ASCII ดังนั้นการกำหนดค่าแบบเมาแล้วอาจแทนที่self-insertด้วยฟังก์ชัน Readline อื่น ๆ

มันมีอัญมณีอยู่บ้าง ดูมันเพิ่งสอนฉันว่าC-=( \e=) พิมพ์ความสำเร็จที่เป็นไปได้ในการกำหนดค่าเริ่มต้นของฉัน ดูเหมือนว่าจะแสดงการกำหนดค่าปัจจุบันของ Readline สำหรับเชลล์ของคุณ ... มีประโยชน์และทรงพลังมาก ดีสำหรับการสำรวจ

จบการทดสอบ

  1. e โรงงาน
  2. ใส่บรรทัดที่ผิดพลาดใน.inputrcเปิดเปลือกใหม่

    et completion-map-case on
    set completion-ignore-case on
  3. e เห็นได้ชัดว่าไม่มี op

  4. bind -p( | grep -i '"E"') แสดง
    • "E": self-insert,
    • แต่ไม่มี "e": self-insert
    • ในขณะที่"A": self-insertและ"a": self-insertปัจจุบัน

2

ฉันค่อนข้างเป็นสนิม แต่การวางใน Terminal นั้นแตกต่างจากการวางในโปรแกรม GUI: ตัวละครแต่ละตัวจะถูกส่งเป็นการกดแป้นแยกต่างหากไม่ใช่ memcopy จากคลิปบอร์ดไปยังบัฟเฟอร์ของแอพ ดังนั้นถ้า "e" ถูกแมปใหม่มันจะถูกแมปใหม่ในการวางเช่นกัน

ตรวจสอบสถานที่ต่อไปนี้:

System Preferences > Keyboard > Shortcuts

~/Library/KeyBindings/KeyBindings.dict

$ defaults read com.apple.Automator NSUserKeyEquivalents


ตรวจสอบสิ่งที่แน่นอน?
nohillside

ไม่ว่าจะเป็นeรหัสที่ถูกแมปใหม่
zencraft

1
สมมติว่า OP ไม่มีประสบการณ์มากเกินไปในสิ่งต่าง ๆ พวกเขาควรมองหาอะไร? ตัวอย่างของการทำแผนที่อาจมีประโยชน์
nohillside

1
สำหรับแป้นพิมพ์ลัดค้นหาการปรับแต่งปุ่มลัด: มีรายการแอปด้านซ้ายและรายการช็อตคัตด้านขวา ตรวจสอบให้แน่ใจว่าเทอร์มินัลไม่ได้อยู่ในรายการแอพ อีกสองควรว่างเปล่า หาก KeyBindings.dict มีอยู่หรือคำสั่ง defaults ส่งคืนบางสิ่งให้โพสต์ไว้ที่นี่เพื่อการวิเคราะห์เพิ่มเติม
zencraft

1

อย่างอื่นที่คุณลองได้คือตั้งค่า Terminal ให้เปิดโปรแกรมแก้ไขข้อความ (emacs, vi ฯลฯ ) เมื่อเปิดหน้าต่างใหม่ ยกตัวอย่างเช่นในการตั้งค่าของ Terminal สำหรับ "เชลล์" คุณสามารถมีได้เรียกใช้คำสั่ง/usr/bin/emacsเช่น หากคุณไม่สามารถป้อนeในบานหน้าต่างการตั้งค่าแล้วมีบางสิ่งที่ดีกว่าสิ่งที่เสนอมาจนถึงตอนนี้ ...

เมื่อเปิดหน้าต่างเทอร์มินัลใหม่ emacs จะเริ่มขึ้นและคุณสามารถลองกดeฯลฯ ฉันไม่รู้ว่าจะเกิดอะไรขึ้น แต่เช่น @Pierce ด้านบนฉันอยากรู้ว่าเกิดอะไรขึ้น


0

ตรวจสอบการตั้งค่า stty และตรวจสอบให้แน่ใจว่า 'e' ไม่ได้ถูกตั้งค่าเป็น backspace หรือคล้ายกันโดยไม่ตั้งใจ เคยทำมาแล้ว มีอะไรบางอย่าง \ e จะทำมันคำแนะนำในการปิดการใช้งาน / แสดงความคิดเห็น. bash * ก็อาจเปิดเผยได้


0

ฉันมีปัญหาเดียวกันซึ่งเกิดจากการพิมพ์ผิดใน/etc/inputrc:

et output-meta on

แทน

set output-meta on

0

ฉันเพิ่งพบว่ามี macOS รุ่น 10.13.6 อยู่ใน MacBook Air ผู้ใช้หนึ่งรายใช้ได้ดีเทอร์มินัลผู้ใช้ที่รันทุบตีจะไม่ยอมรับอักษรตัวพิมพ์เล็ก 'a'- ไม่พิมพ์ไม่วาง ฯลฯ ใช้ zsh ได้ดี ผู้ใช้รายอื่นดี ฉันคิดว่าสิ่งนี้เกิดขึ้นก่อนหน้านี้และแก้ไขได้โดยการลบไฟล์ /Users/admin/.inputrc และ. bash_profile ฉันเพิ่มพวกเขาอีกครั้งและใช้งานได้ ไฟล์เหล่านี้ไม่มีความสำคัญอย่างผิดปกติ .inputrc เป็นเพียง "set เสร็จสิ้นการเพิกเฉยกรณีและ" มีสองชื่อแทนบรรทัดคำสั่งใน. bash_profile อาจมีบางอย่างที่สุจริต แต่ใช้ได้สำหรับตอนนี้

ฉันดูเหมือนจะจำได้ว่าต้องลบและเพิ่มไฟล์เหล่านี้ใหม่ในปัญหานี้ ไฟล์เหล่านี้อาจก่อให้เกิดหรือรีเซ็ตปัญหาอย่างน้อยที่สุด


-1

เพียงแค่ลบ. inputrc ไฟล์มันอยู่ในไดเรกทอรีราก (มันเป็นไฟล์ที่ซ่อนอยู่)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.