การทำแผนที่ ctrl-backspace ใน terminator


8

ฉันเพิ่งเริ่มใช้เป็นกลุ่ม จากบรรณาธิการก่อนหน้านี้ผมใช้ในการลบทั้งคำโดยการกด-Ctrl Backspaceหลังจากดูเอกสารฉันพบว่าสิ่งนี้ทำได้โดยการกดCtrl- เป็นwกลุ่ม ปัญหาคือหลังจากที่คุ้นเคยกับการกดCtrl- wฉันเริ่มปิดแท็บและแชททุกครั้งที่ฉันสะกดคำ (ในขณะที่เขียนคำถามนี้ฉันปิดแท็บนี้ 5 ครั้ง) ดังนั้นฉันจะตรวจสอบวิธีแมปคีย์ใน Vim และลองทำสิ่งนี้:

:imap <C-BS> <C-w>

น่าเสียดายที่มันไม่ทำงาน หลังจากที่บิตของการวิจัยพบว่าขั้วไม่แยกแยะระหว่างCtrl- และBackspace Backspaceฉันเห็นแฮ็กและแพตช์เพื่อแก้ไขปัญหานี้ แต่ฉันไม่สามารถให้พวกมันทำงานบน terminator ได้ (ซึ่งเป็นอีมูเลเตอร์ที่ฉันต้องการใช้)

จะมีวิธีการใด ๆ map Ctrl- Backspaceในกลุ่มเมื่อใช้เทอร์มิ?


2
ยินดีต้อนรับในนรกเป็นกลุ่ม
romainl

2
ฉันชอบความจริงที่ว่านรกนี้มีประสิทธิภาพมากและสามารถปรับปรุงได้ด้วยแพทช์
Ingo Karkat

BTW ฉันกำลังรวบรวมคำถามประเภทนี้เพื่อหวังว่าจะสามารถทำให้เป็นกรณีที่ปัญหาเฉพาะนี้ได้รับการแก้ไขใน Vim 8.0 ฉันต้องการผู้สมัครแผนที่มากขึ้นและมากขึ้นเช่นกัน
Ingo Karkat

ปัญหานี้ไม่สามารถแก้ไขได้ในกลุ่ม (AFAIK) มันขึ้นอยู่กับ terminal vim ที่กำลังใช้งานอยู่สำหรับผู้ใช้หลายคนที่ใช้ vte (Gnone Terminal, Mate Terminal, Guake, ฯลฯ ) ปัญหานี้ได้รับความสนใจและอาจได้รับการแก้ไขเร็ว ๆ นี้ ดูข้อผิดพลาดของ gnome นี้: bugzilla.gnome.org/show_bug.cgi?id=420039
trusktr

@IngoKarkat ดูความคิดเห็นด้านบน ^
trusktr

คำตอบ:


8

เนื่องจากวิธีการจัดการการป้อนข้อมูลด้วยแป้นพิมพ์ภายในจึงไม่น่าเป็นไปได้ในปัจจุบัน คีย์ผสมบางอย่างเช่นCtrl+ ที่ไม่ใช่ตัวอักษรไม่สามารถแมปได้และCtrl+ ตัวอักษรกับCtrl+ Shift+ ตัวอักษรไม่สามารถแยกความแตกต่างได้ (เว้นแต่เทอร์มินัลของคุณจะส่งรหัสtermcap ที่แตกต่างกันซึ่งส่วนใหญ่ไม่ได้) ในโหมดแทรกหรือบรรทัดคำสั่งให้ลองพิมพ์คีย์ผสม หากไม่มีสิ่งใดเกิดขึ้น / ถูกใส่เข้าไปคุณจะไม่สามารถใช้คีย์ผสมได้ นอกจากนี้ยังนำไปใช้กับ<Tab>/ <C-I>, <CR>/ <C-M>/ <Esc>/ <C-[>ฯลฯ (ข้อยกเว้นเท่านั้นคือ<BS>/ <C-H>.) นี่เป็นอาการปวดจุดที่รู้จักและเรื่องของการอภิปรายต่างๆใน vim_dev และช่อง #vim IRC

บางคน (สำคัญที่สุด Paul LeoNerd Evans) ต้องการแก้ไข (แม้สำหรับคอนโซล Vim ในเทอร์มินัลที่สนับสนุนสิ่งนี้) และได้ลอยข้อเสนอต่าง ๆ cp http://groups.google.com/group/vim_dev/browse_thread/thread/626e83fa4588b32a/bfbcb22f37a8a1f8

แต่ ณ วันนี้ยังไม่มีแพตช์หรืออาสาสมัครมาข้างหน้าแม้ว่าหลายคนแสดงความต้องการที่จะมีสิ่งนี้ในการปล่อย Vim 8 ครั้งใหญ่ในอนาคต


ขอบคุณสำหรับคำตอบที่รวดเร็ว ฉันเดาว่าฉันจะต้องคุ้นเคยกับการใช้ ctrl-w สำหรับ vim และ ctrl-backspace สำหรับเบราว์เซอร์
user1026044

สิ่งที่ดีเกี่ยวกับ Ctrl-W ก็คือมันยังใช้งานได้ใน Bash ฯลฯ
Ingo Karkat

ใช่ฉันรู้. แต่คุณยังคงต้องใช้ ctrl-backspace สำหรับทุกอย่างและความจริงที่ว่า ctrl-w ดูเหมือนจะเป็นมาตรฐานสำหรับการปิดแท็บและหน้าต่างในที่อื่น ๆ ทำให้มันน่ารำคาญ ฉันอาจจะคุ้นเคยกับมันในภายหลัง
user1026044

แต่สิ่งนี้สามารถแก้ไขได้อย่างหมดจดในฐานรหัสกลุ่มหรือไม่? โค้ดใดใน vim code base แยกความแตกต่างระหว่าง backspace และ ctrl + backspace ถ้าเทอร์มินัลที่รันอยู่ส่ง vim อินพุตที่แน่นอนเหมือนกันสำหรับคีย์ผสม ดูเหมือนว่านี่เป็นสิ่งที่ต้องแก้ไขในเทอร์มินัลที่เป็นกลุ่มเรียกใช้ไม่ใช่เป็นกลุ่ม ตัวอย่างเช่น Guake ส่ง^?ทั้ง backspace และ ctrl + backspace ซึ่งทำให้พวกเขา (AFAIK) แยกไม่ออก xterm ตรงกันข้ามส่ง^Hสำหรับ backspace และ^?ctrl + backspace ทำให้สามารถแยกแยะได้
trusktr

แต่น่าเสียดายที่ใน xterm backspace ( ^H) แยกไม่ออกจาก ctrl + h ( ^H) บางทีเราสามารถสร้าง escape sequence ใหม่เพื่อแยกความแตกต่างทั้งสามได้ ฉันไม่รู้ว่ามันง่ายแค่ไหน แต่ดูเหมือนว่ามันปลอดภัยที่จะทำเพราะสถานะปัจจุบันของสิ่งต่าง ๆ (เทอร์มินัลบางตัวใช้^?สำหรับแบ็คสเปซผู้อื่น^Hและในทางกลับกัน) ฉันไม่สามารถจินตนาการได้ว่า (ถ้ามีทั้งหมด) พิจารณาสถานการณ์ ctrl + backspace (มันจะไม่ถูกกำหนดอย่างสมบูรณ์เนื่องจากความหลากหลายของอาคาร) ...
trusktr
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.