รูปแบบทั่วไปของชื่อคีย์สำหรับการผูกคีย์ในไฟล์“ inputrc” คืออะไร?


17

ฉันเข้าใจว่ารูปแบบสำหรับการเชื่อมโยงคีย์ในinputrcไฟล์คือ:

keyname: function-name or macro

สำหรับชื่อคีย์ฉันเห็นสิ่งต่าง ๆ เช่น:

"\e[B"
"\e[1~"
"\e[5D"
"\M-l"
"\C-[OD"
"\e\e[D"

ความหมายของชื่อคีย์เหล่านี้คืออะไรและรูปแบบทั่วไปของชื่อคีย์คืออะไร โปรดแบ่งปันลิงก์ไปยังเอกสาร


2
สำหรับเอกสารของคุณผมขอแนะนำให้ดูที่readline(3)manpage หรือคู่มือการใช้ ReadLine
jw013

1
ตรวจสอบการกำหนดค่าคีย์ (readline - inputrc) ผ่าน: $ bind -p
vigo

คำตอบ:


12

การทำพวงกุญแจสามารถทำได้โดยใช้หนึ่งในรูปแบบต่อไปนี้:

  1. keyname: command_name
  2. "keystroke_sequence": command_name

ในรูปแบบแรกคุณสามารถสะกดชื่อสำหรับคีย์เดียว ตัวอย่างเช่น CONTROL-U จะถูกเขียนเป็น control-u สิ่งนี้มีประโยชน์สำหรับการผูกคำสั่งกับปุ่มเดียว

ในรูปแบบที่สองคุณระบุสตริงที่อธิบายถึงลำดับของคีย์ที่จะถูกผูกไว้กับคำสั่ง ตัวอย่างที่คุณให้ไว้คือลำดับการหลบหลีกแบ็กสแลช emacs-tyle เพื่อแสดงถึงคีย์พิเศษ

\C- การควบคุม
\M- Meta
\e- Escape

คุณสามารถระบุแบ็กสแลชโดยใช้แบ็กสแลชอื่น - \\- ในทำนองเดียวกัน'และ"สามารถหลบหนีได้เช่นกัน - \'และ\"

ปรับปรุง

ตัวละครเหล่านี้เป็นสิ่งที่เทอร์มินัลของคุณตีความเมื่อคุณกดปุ่มพิเศษ คุณไม่ต้องการผูกตัวอักษรและตัวเลขปกติในการเชื่อมโยงคีย์ของคุณเนื่องจากคุณอาจใช้มันเป็นประจำและอาจทำให้เกิดปัญหาเมื่อคุณกดชุดค่าผสมที่มีการแมปในของคุณโดยไม่ตั้งใจ~/.inputrc/etc/inputrcไฟล์หรือ

[1~ is what is interpreted by your terminal when you press your HOME button. 

หากต้องการเรียนรู้เพิ่มเติมเพียงพิมพ์readพรอมต์เทอร์มินัลของคุณแล้วกดปุ่มพิเศษทุกชนิดเช่นปุ่มฟังก์ชั่นหน้าแรก END ปุ่มลูกศร ฯลฯ และดูว่ามีอะไรปรากฏขึ้นบ้าง

นี่คือการอ้างอิงเล็ก ๆ ที่ฉันพบว่าสามารถให้ความเข้าใจพื้นฐาน โชคดี! :)


2
อะไร\e[1~, \M-lและ\C-[ODหมายความว่าอย่างไร The \e, \Mและ\Cชิ้นส่วนมีความชัดเจน แล้วที่เหลือล่ะ ตัวอย่างเช่น: [1~- ฉันควรกดShift+ {+ 1+ Shift+ `หรือไม่
Misha Moroshko

ฉันได้อัพเดตคำตอบสำหรับคุณแล้ว หวังว่าจะช่วย!
jaypal singh

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