Readline ยังให้ความสามารถในการแมปการโยงคีย์ที่คุณกำหนดเองได้ด้วยการแก้ไขไฟล์การกำหนดค่า .inputrc ในโฮมไดเร็กทอรีของคุณ
ต่อไปนี้คือการเชื่อมโยงคีย์ที่กำหนดเองสองประเภทที่คุณสามารถกำหนดได้:
- มาโคร
- ฟังก์ชัน
มาโคร
คุณสามารถกำหนดปุ่มลัดที่จะกรอกสตริงอักขระที่ตำแหน่งปัจจุบันของเคอร์เซอร์เมื่อดำเนินการ ในการดำเนินการนี้ ให้เพิ่มบรรทัดที่มีรูปแบบต่อไปนี้ลงในไฟล์ .inputrc config ของคุณ (หรือสร้างไฟล์หากยังไม่มี):
<key combination>: "<string of characters>"
ตัวอย่างเช่น สมมติว่าฉันพบว่าตัวเองเปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์ “~/debug_output.txt” ซ้ำๆ ฉันสามารถกำหนดมาโครใน .inputrc ของฉันโดยเพิ่มบรรทัดต่อไปนี้:
Control-g: " > ~/debug_output.txt"
ตอนนี้ เมื่อใดก็ตามที่ฉันพิมพ์คีย์ผสม Control-g คำสั่งเปลี่ยนเส้นทางจะถูกเพิ่มหลังเคอร์เซอร์ของฉัน ทำให้ฉันผนวกเข้ากับส่วนท้ายของคำสั่งอื่นๆ ได้อย่างง่ายดาย
โปรดคำนึงถึงสิ่งต่อไปนี้เมื่อคุณสร้างมาโคร:
- ฉันสามารถสะกดคีย์ผสมเป็นภาษาอังกฤษได้ (สำหรับข้อมูลเพิ่มเติม โปรดดูที่ man page สำหรับ bash ค้นหาส่วน "Readline Key Bindings")
- ลำดับของอักขระที่จะแทรกโดยมาโครต้องอยู่ในเครื่องหมายคำพูดคู่ (“)
- ตัวเลือกของ Control-g นั้นใช้ไม่ได้ผล คุณสามารถเลือกชุดค่าผสมที่มีความหมายกับคุณมากขึ้นได้
- คุณสามารถแทนที่การโยงคีย์เริ่มต้นได้ (โปรดระลึกไว้เสมอว่าเมื่อคุณกำหนดคีย์เอง)
- เพื่อให้การโยงคีย์มีผล คุณต้องเริ่มอินสแตนซ์เชลล์ใหม่ (ไฟล์ config .inputrc ถูกอ่านเมื่อเริ่มต้นเชลล์)
ฟังก์ชัน
คุณยังสามารถสร้างการโยงคีย์ที่จะเรียกใช้ฟังก์ชันเมื่อดำเนินการ Readline มีฟังก์ชันที่กำหนดไว้ล่วงหน้าจำนวนมากให้เลือก ในการแมปคีย์ผสมกับฟังก์ชันที่กำหนดไว้ล่วงหน้า:
<key combination>: <function-name>
สำหรับรายการฟังก์ชันที่กำหนดไว้ล่วงหน้าที่มีอยู่ โปรดดูคู่มือ GNU Readline
คุณยังสามารถกำหนดฟังก์ชันแบบกำหนดเองของคุณได้ แต่สิ่งนี้จำเป็นต้องเขียนด้วยภาษา C และอยู่นอกเหนือขอบเขตของบทช่วยสอนนี้ เราอาจกล่าวถึงเรื่องนี้เป็นบทแนะนำแยกต่างหากในภายหลัง
ฟังก์ชันที่กำหนดไว้ล่วงหน้าที่มีประโยชน์อย่างหนึ่งคือเมนูสมบูรณ์ ซึ่งจะให้ลักษณะการทำงานอื่นในการเติมข้อมูลอัตโนมัติ
ลักษณะการทำงานเริ่มต้นสำหรับการเติมข้อความอัตโนมัติ (แมปกับคีย์ TAB) คือ:
- กรอกคำสั่ง/ไดเรกทอรี/ชื่อไฟล์บางส่วนหากมีรายการที่ตรงกัน
- แสดงรายการการแข่งขันที่เป็นไปได้เมื่อมีมากกว่า 1 รายการ
เมนูที่สมบูรณ์จะวนรอบรายการของการจับคู่ที่เป็นไปได้แทนการเติมการจับคู่ที่เป็นไปได้ถัดไปในแต่ละครั้งที่เรียกใช้ฟังก์ชัน ลักษณะการทำงานนี้เป็นสิ่งที่ดี โดยเฉพาะอย่างยิ่งเมื่อเติมชื่อไฟล์ที่ยาวขึ้นโดยอัตโนมัติ หากต้องการทำการแมปคีย์ TAB ใหม่เพื่อใช้พฤติกรรมนี้ ให้เพิ่มบรรทัดต่อไปนี้ในไฟล์ .inputrc ของคุณ
TAB: menu-complete
โปรดทราบว่าการโยงคีย์ใหม่นี้จะไม่มีผลในเชลล์ปัจจุบัน คุณต้องเริ่มอินสแตนซ์ใหม่เพื่อโหลดไฟล์การกำหนดค่า .inputrc อีกครั้ง
ในบทช่วยสอนนี้ เราได้เรียนรู้ว่าการโยงคีย์บรรทัดคำสั่งของ Linux นั้นขับเคลื่อนโดยเครื่องมือที่เรียกว่า Readline การโยงคีย์อาจเป็น 1 ใน 2 ประเภท:
- มาโคร:ขยายลำดับอักขระ
- ฟังก์ชัน:ดำเนินการ
Readline ให้ชุดการโยงคีย์เริ่มต้นแก่เรา แต่ยังให้ความยืดหยุ่นแก่เราในการสร้างของเราเองในไฟล์การกำหนดค่า .inputrc สุดท้าย หากต้องการดูการโยงคีย์ปัจจุบันทั้งหมด เราสามารถใช้คำสั่ง 'bind'
bind -p