มีตัวแก้ไขสองบรรทัดที่เล่นที่นี่: ตัวแก้ไขบรรทัดพื้นฐานที่จัดเตรียมโดยเคอร์เนล (ตัวแก้ไขบรรทัดโหมด canonical) และตัวแก้ไขบรรทัดของ bash (นำมาใช้ผ่านไลบรารี readline) ทั้งสองนี้มีคำสั่งลบคำก่อนหน้าซึ่งถูกผูกไว้กับCtrl+ Wโดยค่าเริ่มต้น คีย์สามารถกำหนดค่าสำหรับตัวแก้ไขบรรทัด tty line ของโหมด canonical ผ่านstty werase
; bash เลียนแบบการเชื่อมโยงคีย์ที่พบในการตั้งค่า tty เว้นแต่จะถูกแทนที่ในการกำหนดค่าของตัวเอง
การwerase
ดำเนินการใน tty line editor ไม่สามารถกำหนดค่าได้ มันจะลบ (ASCII) คำที่คั่นด้วยช่องว่างเสมอ เป็นเรื่องยากที่จะโต้ตอบกับ tty line editor - เป็นสิ่งที่คุณได้รับเช่นเมื่อคุณพิมพ์cat
โดยไม่มีอาร์กิวเมนต์ หากคุณต้องการการผูกคีย์แฟนซีคุณสามารถเรียกใช้คำสั่งภายใต้เครื่องมือเช่นrlwrapซึ่งใช้ readline
ทุบตีมีสองคำสั่งที่จะลบคำก่อนหน้า : unix-word-rubout
( Ctrl+ wหรือเป็นชุดผ่านstty werase
) และbackward-kill-word
( M-DEL
คือEsc Backspace) ซึ่งถือว่าคำเป็นลำดับของตัวอักษรและตัวเลขในสถานที่ปัจจุบันและ _
หากคุณต้องการCtrl+ Backspaceเพื่อลบลำดับของอักขระตัวอักษรและตัวเลขก่อนหน้าอย่าตั้งค่าstty werase
และใส่บรรทัดต่อไปนี้แทน.inputrc
:
"\C-h": backward-kill-word
หมายเหตุว่านี้อนุมานว่าขั้วของคุณจะส่งตัวละคร Ctrl + H สำหรับ+Ctrl Backspaceน่าเสียดายที่มันเป็นหนึ่งในกุญแจเหล่านั้นที่ไม่มีการเชื่อมโยงมาตรฐาน (และBackspaceโดยเฉพาะอย่างยิ่งเป็นระเบียบสำหรับเหตุผลทางประวัติศาสตร์)
นอกจากนี้ยังมีคำสั่งแบบสมมาตรkill-word
ซึ่งถูกผูกไว้กับM-d
( Alt+ D) โดยค่าเริ่มต้น การผูกมันCtrl+ Deleteคุณต้องคิดให้ออกว่าลำดับหนี terminal .inputrc
ของคุณส่งแล้วเพิ่มบรรทัดที่สอดคล้องกันในของคุณ พิมพ์Ctrl+ Vจากนั้นCtrl+ Delete; สิ่งนี้จะแทรกบางสิ่งบางอย่างเช่น^[[3;5~
ที่เริ่มต้น^[
คือการแสดงภาพของตัวละครที่หลบหนี แล้วการผูกมัดก็คือ
"\e[3;5~": kill-word
หากคุณไม่พอใจกับคำจำกัดความของคำใดคำหนึ่งคุณสามารถระบุของคุณเองใน bash: ดูพฤติกรรมที่ทำให้เกิดความสับสนของปุ่มลัดแบบ emacs ใน bash