โดยปกติCtrl+ Wลบกลับไปที่ช่องว่างสุดท้าย
เป็นไปได้หรือไม่ที่จะกำหนดค่าให้ใช้อักขระเพิ่มเติมเช่น/
?
แก้ไข: เพื่อให้ชัดเจนยิ่งขึ้น: ฉันไม่ต้องการกำหนดค่าคีย์ให้ฉันต้องการหยุดการลบด้วย/
เช่นกัน
ตัวอย่าง:
vim /foo/bar^W
vim /foo/
โดยปกติCtrl+ Wลบกลับไปที่ช่องว่างสุดท้าย
เป็นไปได้หรือไม่ที่จะกำหนดค่าให้ใช้อักขระเพิ่มเติมเช่น/
?
แก้ไข: เพื่อให้ชัดเจนยิ่งขึ้น: ฉันไม่ต้องการกำหนดค่าคีย์ให้ฉันต้องการหยุดการลบด้วย/
เช่นกัน
ตัวอย่าง:
vim /foo/bar^W
vim /foo/
คำตอบ:
สิ่งที่ใช้ได้ผลสำหรับฉันคือการเพิ่มบรรทัดต่อไปนี้ลงใน. bashrc ของฉัน
stty werase undef
bind '\C-w:unix-filename-rubout'
คุณต้องการบรรทัด undef มิฉะนั้น bash จะข้ามการโยงใหม่ของคุณ C-w
คุณควรจะสามารถใช้ Esc จากนั้นย้อนกลับเพื่อลบคำที่คั่นด้วยเครื่องหมายทับ
คุณสามารถเปลี่ยนแปลงสิ่งนี้ได้โดยใส่สิ่งนี้ลงในตัวคุณ. bashrc:
bind '\C-f:unix-filename-rubout'
ตอนนี้ใช้Ctrl+f
ทำสิ่งที่คุณต้องการ
C-w:...
เป็นพฤติกรรมเริ่มต้นของการลบช่องว่างถัดไปยังคงอยู่ในคีย์อื่น (เช่น F) ถ้าใช้งานได้ดี
stty -a
อะไร? คุณมีการควบคุม -w เป็นถ่านเริ่มต้นสำหรับ werase? หากคุณลบการตั้งค่านั้นออกจาก tty ด้วย Comman stty werase undef
แล้วทุบตีทำงานตามที่คาดไว้หรือไม่
สำหรับปัญหาเฉพาะนี้คุณยังสามารถใช้:
Alt + Backspace
$ cd /home/me/test/a_dir/ # Alt + Backspace
$ cd /home/me/test/ # Alt + Backspace
$ cd /home/me/ # ...
การอ้างอิงที่ดี: การผจญภัยด้วยการลบคำของ bash
Ctrl+w
หรือ Ctrl + B หรือบางสิ่งบางอย่างunix-filename-rubout
แต่ก็มากดีที่มีในตัวที่มีผลผูกพัน: M-Backspace (Alt + Backspace หรือกด Esc Backspace)
ด้วย bash คุณสามารถรับเอฟเฟกต์ที่ต้องการได้โดยใส่ต่อไปนี้ในไฟล์ ~ / .bashrc ของคุณ:
bind '"\C-w":backward-kill-word'
กดCTRL+V
ปุ่มและคีย์ผสมของคุณเพื่อดูว่าเครื่องจำลองเทอร์มินัลของคุณมีลักษณะอย่างไร ยกตัวอย่างเช่นCTRL+bksp
สามารถตีความแตกต่างกันในขั้วที่แตกต่างกันเช่นหรือ^H
ตัวละครที่เป็นเช่นเดียวกับ^?
^
CTRL
/
เป็นตัวหยุดเพิ่มเติมไม่ใช่วิธีที่จะผูกคำสั่งลบในคีย์อื่น ๆ ฉันแก้ไขคำถามของฉัน
^F
- แต่การใช้"\^F"
ในสคริปต์ด้านบนไม่ทำงาน
stty werase undef
จะหยุดคุณจากการใช้ Cw ในโปรแกรมใด ๆ (ผูกจะช่วยให้คุณสามารถใช้ใน readline)