ทำไม cmd-r ทำให้ Vim เลอะบน mac? มันพยายามทำอะไรจริงๆ?


19

หลีกเลี่ยงปัญหานี้อย่างต่อเนื่องตั้งแต่ฉันเป็นนักพัฒนาเว็บ 'cmd-r' มีผลข้างเคียงในการป้องกันไม่ให้ปุ่มลูกศรทำงานในโหมดใดก็ได้ แต่ฉันไม่สามารถจินตนาการได้ว่าเป็นจุดประสงค์และฉันไม่สามารถหาได้ เอกสารใด ๆ เกี่ยวกับสิ่งที่ควรทำ

แก้ไข: เห็นได้ชัดว่านี่เป็นจริงคำสั่ง mac terminal, 'Send Reset' ดังนั้นตอนนี้ฉันจึงเดาคำถามนี้ว่า "คำสั่ง send reset มีไว้เพื่ออะไร อธิบายว่าทำไมฉันไม่สามารถค้นพบมันได้ในเอกสารที่เป็นกลุ่ม

คำตอบ:


16

เพื่อหลีกเลี่ยงความรำคาญนี้ฉันทำการแมป Command-R ใหม่เพื่อ "ละเว้น" ในการจับคู่คีย์ iTerm

ป้อนคำอธิบายรูปภาพที่นี่


ขอขอบคุณ. นี่เป็นที่น่ารำคาญอย่างมาก
ThinkingInBits

10

สิ่งนี้เกิดขึ้นกับฉันแม้ว่าจะไม่ได้ใช้หน้าจอและฉันก็พบว่าฉันสามารถกลับสู่ภาวะปกติได้ด้วยการล้างเทอร์มินัลที่เรียกใช้กลุ่ม (ฉันได้ทดสอบด้วย tmux ด้วยเช่นกัน แต่ไม่ใช่หน้าจอ:

:!clear

6

คำถามนี้ได้รับการตอบที่นี่: เมื่อใช้งานหน้าจอบน OSX คำสั่ง + r ทำให้ปุ่มลูกศรขึ้นเป็นกลุ่มในทุกหน้าจอ

คัดลอกคำตอบ:

ในฐานะผู้สนับสนุน Vim ที่ดีฉันรู้สึกผูกพันที่จะบอกให้คุณเรียนรู้การใช้ hjkl เป็นปุ่มเคอร์เซอร์ของคุณ ผ่านครึ่งทางของการสำรวจปัญหาฉันคิดว่ามันได้แก้ไขตัวเองอย่างลึกลับจนกระทั่งฉันรู้ว่าฉันกำลังทดสอบโดยใช้ hjkl แทนที่จะเป็นปุ่มลูกศรจริง

อย่างไรก็ตามตอนนี้สำหรับคำตอบที่แท้จริง

แทนที่จะปิดหน้าจอทั้งหมดและเริ่มใหม่คุณสามารถใช้ประโยชน์จากความสามารถของหน้าจอในการเลื่อนไปมาระหว่างเทอร์มินัล กด CTRL + A CTRL + D เพื่อแยกหน้าจอจากเทอร์มินัลของคุณจากนั้นเรียกใช้หน้าจอ -D -R เพื่อติดตั้งใหม่ สิ่งนี้จะทำให้ปุ่มลูกศรทำงานอีกครั้ง

หากคุณไม่ได้อยู่ในหน้าจอ แต่เป็น Vim คุณสามารถ CTRL + Z แล้วพิมพ์ fg เพื่อเอฟเฟกต์เดียวกัน

คุณสามารถแก้ไขปัญหาเคอร์เซอร์คีย์ใน Vim ได้ แต่การรีเซ็ตอาจมีการเปลี่ยนแปลงตัวเลือกเทอร์มินัลอื่น ๆ ดังนั้นจึงปลอดภัยกว่าที่จะทำตามที่อธิบายไว้ข้างต้นเพื่อไม่ให้คุณเห็นปัญหาการแสดงผล / คีย์บอร์ดแบบสุ่มอื่น ๆ หากคุณต้องการการแมปใหม่นี่คือ:

map <Esc>[A <Up>
map <Esc>[B <Down>
map <Esc>[C <Right>
map <Esc>[D <Left>

รายละเอียดสกปรก:

ทั้งกลุ่มและหน้าจอใช้ไลบรารี ncurses เพื่อจัดการเทอร์มินัล หนึ่งในสิ่งที่ ncurses กำลังทำเมื่อใช้การควบคุมของเทอร์มินัลที่ใช้งานร่วมกับ VT100 ได้คือการเปลี่ยนปุ่มลูกศรเป็น "โหมดแอปพลิเคชัน" ซึ่งจะเปลี่ยนรหัสที่ปล่อยออกมา เช่นปุ่มลูกศรขึ้นเช่นเปลี่ยนจาก Esc [A เป็น Esc O A รหัสควบคุม VT100 ที่ปล่อยออกมาคือ Esc [? 1 ชม. คำสั่งรีเซ็ตเทอร์มินัลที่ส่งโดย Command + R รีเซ็ตเคอร์เซอร์คีย์เป็นค่าเริ่มต้น

หน้าจอการถอดและติดตั้งใหม่ทำให้ ncurses ทำการควบคุมสถานีอีกครั้งซึ่งจะนำการตั้งค่าทั้งหมดที่ชอบมาใช้ใหม่ซึ่งอาจเป็นวิธีที่พกพาได้และน่าเชื่อถือที่สุดในการคืนค่าสิ่งต่าง ๆ ให้เป็นปกติ

รหัสควบคุม VT100: http://www.handshake.de/infobase/dfue/prgrmmer/t322.htm


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