ทำความเข้าใจกับอักขระควบคุมใน. inputput


21

บัญชี Linux ของฉันในเครื่องระยะไกลมาพร้อมกับการกำหนดไว้ล่วงหน้าดังต่อไปนี้ .inputrc

"\e[1~": beginning-of-line
"\e[4~": end-of-line
\e[5~”: history-search-backward
\e[6~”: history-search-forward
"\e[3~": delete-char
"\e[2~": quoted-insert
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word

set completion-ignore-case on
set bell-style visible
set expand-tilde on
set convert-meta off
set input-meta on
set output-meta on
set show-all-if-ambiguous on
set visible-stats on

ฉันกำลังอ่านเอกสารทุบตี GNU ในหัวข้อแต่ผมยังไม่ได้รับสามารถที่จะหาส่วนที่อธิบายสิ่งที่ลำดับตัวอักษร\e[1~, \e[5C, \e\e[Dฯลฯ ค่าเฉลี่ย

ผมคิดว่าผมอ่านบางที่\eหมายถึงmeta character(ซึ่งผมคิดว่าเป็นAltในแป้นพิมพ์ของฉัน) แต่ไม่เข้าใจสิ่งที่ตัวละครควบคุมอื่น ๆ[, ~, 5Dฯลฯ ค่าเฉลี่ย

ใครรู้การอ้างอิงที่ดีในหัวข้อ?

คำตอบ:


21

เหล่านี้คือลำดับการหลีกเลี่ยงรหัสควบคุม ANSIที่ถูกส่งเมื่อมีการกดคีย์ที่ไม่ใช่ตัวอักษรและตัวเลขต่าง ๆ บนแป้นพิมพ์ "เทอร์มินัล"

\ e หมายถึงอักขระ ASCII "ESCAPE" (ฐานแปด 033 hex 1B ทศนิยม 27) ซึ่งเป็นส่วนหนึ่งของการแนะนำลำดับคำสั่ง (CSI)

Escape [ 2 ~เป็นลำดับตัวอักษรส่งเมื่อคุณกดปุ่มที่มีข้อความ "แทรก" บนVT220 (หรือหลังจากนั้น) ขั้ว

อนุสัญญาเหล่านี้จำนวนมากได้ถูกนำมาใช้ในซอฟต์แวร์เช่น xterm และ Linux consoles / shells - มักจะขยายออกไปในรูปแบบที่หลากหลายและบางครั้งก็เข้ากันไม่ได้

การใช้ลำดับเหล่านี้ในฟังก์ชั่น READLINE ของทุบตีอธิบายไว้ในman pagesสำหรับreadline

       ในรูปแบบที่สอง "keyseq": function-name หรือ macro, keyseq แตกต่างกัน
       จาก keyname ข้างต้นในสตริงที่แสดงถึงลำดับคีย์ทั้งหมดอาจ
       ถูกระบุโดยการวางลำดับภายในเครื่องหมายคำพูดคู่ บาง GNU
       สามารถใช้ Escape สไตล์ของ Emacs ได้ดังตัวอย่างต่อไปนี้ แต่
       ชื่ออักขระสัญลักษณ์ไม่เป็นที่รู้จัก

          "\ Cu": อาร์กิวเมนต์สากล
          "\ Cx \ Cr": อ่านไฟล์เริ่มต้นใหม่
          "\ e [11 ~": "ปุ่มฟังก์ชัน 1"

ในการรับรายการของ escape sequences ที่สอดคล้องกับแป้นคีย์บอร์ดคุณสามารถใช้คำสั่งเช่นinfocmp -L -1หรือinfocmp -L -1 xterm


ยอดเยี่ยม !! นั่นคือว่าสิ่งที่ผมกำลังมองหา ขอบคุณ @ RedGrittyBrick!
Amelio Vazquez-Reina

+1 ผมกำลังมองหาCtrlรหัสในinputrc-> ENTER= +Ctrl n
เรนใน

@ user1133275: ลิงก์ที่อัปเดตแล้ว แต่คำสั่งman 3 readline ในระบบของคุณเองควรให้ข้อมูลเดียวกันกับคุณ คำสั่งman 3 readlineนี้ยังทำงานในWSL บน Windows 10 หากจำเป็นคุณสามารถถามคำถามใหม่เกี่ยวกับส่วนเฉพาะของbind -Pผลลัพธ์ที่ทำให้คุณลำบาก
RedGrittyBrick
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.