Bash: ลบคำข้างหน้าเคอร์เซอร์


76

พิจารณาบรรทัดคำสั่ง bash ต่อไปนี้โดยที่ ^ หมายถึงตำแหน่งเคอร์เซอร์:

svn commit -m very/long/path/to/some/file "[bug 123456] Fix the pixel issue"
              ^

ฉันต้องการส่งไฟล์อื่นด้วยข้อความเดียวกัน ฉันจะลบคำปัจจุบันจากตำแหน่งเคอร์เซอร์ไปที่ช่องว่างถัดไปได้อย่างไร ยังมีทางลัดสำหรับการลบย้อนหลังสร้างเคอร์เซอร์ไปที่ช่องว่างด้านหลังหรือไม่

อัปเดต: ctrl + wลบไปข้างหลัง แต่ทางลัดใดที่จะลบไปข้างหน้าหนึ่งคำ


2
Ctrl uเป็นตัวเลือกสำหรับการลบจากตำแหน่งเคอร์เซอร์ไปที่จุดเริ่มต้น ...
nutty about natty

23
ลองalt + dว่าอาจมีประโยชน์เมื่อตั้งโหมดแก้ไข emacs

@ Mik คุณเปิดใช้งานโหมด emacs อย่างไร
Adam Matan

@AdamMatan set -o emacsเปิดใช้งาน แต่โดยปกติจะเป็นค่าเริ่มต้น ถ้าไม่คุณสามารถใส่บรรทัดนั้น.bashrcหรือ.bash_aliasesจากนั้นแหล่งไฟล์หรือโหลดเทอร์มินัล อย่างไรก็ตามทางลัดที่คุณอาจใช้ในโหมด vi จะไม่สามารถใช้งานได้แม้ว่าจะมีปุ่มลัดเช่น ctrl + c เพราะไม่ใช่ปุ่มลัดของ Bash

คำตอบ:


56

ฉันตอบคำถามที่คล้ายกันใน unix.stackexchange.com :

Bash มีคำสั่ง readline ที่ไม่ถูกผูกไว้โดยค่าเริ่มต้น คุณสามารถค้นหาได้ที่อ้างอิง: http://www.gnu.org/software/bash/manual/html_node/Bindable-Readline-Commands.html#Bindable-Readline-Commands

คำสั่งที่คุณกำลังค้นหาเรียกว่า "shell-backward-kill-word" คุณต้องเลือกทางลัดก่อน ลองใช้ Crtl + p เนื่องจากมันเป็น "คำสั่งก่อนหน้า" - เหมือนกับลูกศรขึ้น

bind '"\C-p": shell-backward-kill-word'

ข้อแตกต่างคือคุณต้องใช้คำสั่ง "shell-kill-word" แทนเนื่องจากคุณต้องการลบไปข้างหน้า

นอกจากนี้ยังมีคำสั่ง "kill-word" พร้อมMeta+ dทางลัด (ลองEsc+ dหากคุณไม่มีคีย์ Meta) มันจะลบเพียงส่วนเดียวของเส้นทางในครั้งเดียว


31
Alt-d ใช้งานได้สำหรับฉัน
ริ

8
โดยทั่วไปในโลกของคีย์บอร์ดที่ไม่มี Meta อยู่ Alt = Meta
Nate CK

ฉันเป็นโลกที่คุณมีแป้นพิมพ์ที่แตกต่างกันมากมายความจริงที่สะดวกและมีประโยชน์ก็คือ Esc ในฐานะส่วนนำหน้ายังทำหน้าที่เป็น Meta
tripleee

1
ในระยะสั้นเพิ่มเช่นนี้ไปยังไฟล์ $ HOME / .inputrc ของคุณ: "\ew": shell-kill-word ที่จะทำให้ Alt-w ไปข้างหน้าลบคำเช่น CTRL-w ไปข้างหลังลบคำ (และไม่เหมือน Alt-d ซึ่งจะไปข้างหน้าลบ แต่หยุดที่เช่น a / หรือ - และตัวละครอื่น ๆ )
user964970

7

ทดสอบทั้งesc+ dและalt/ opt+ dบน OSX Mavericks และทำงานที่นั่นเช่นกัน


12
Option + dให้ฉันบน OSX
Ivan Balashov

4
-1 OSX ไม่ใช่ Ubuntu อย่าลังเลที่จะเพิ่มความคิดเห็น แต่นี่ไม่ใช่คำตอบ
wjandrea

คุณต้องเปิดใช้งานช่องทำเครื่องหมาย "ใช้ตัวเลือกเป็นเมตาคีย์" ในการตั้งค่าเทอร์มินัล (โปรไฟล์ -> แท็บแป้นพิมพ์ -> ช่องทำเครื่องหมาย)
nils petersohn

control + dบน mac Sierra
mfink

2
@IvanBalashov หากคุณใช้ iterm ให้ตั้งค่า opt opt ​​เป็น esc + ภายใต้โปรไฟล์> กุญแจ
tessie
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.