ฉันจะล้าง / ลบบรรทัดปัจจุบันในเทอร์มินัลได้อย่างไร


795

หากฉันใช้เทอร์มินัลและพิมพ์ข้อความบรรทัดเดียวสำหรับคำสั่งจะมีฮ็อตคีย์หรือวิธีใดวิธีการล้าง / ลบบรรทัดนั้นหรือไม่?

ตัวอย่างเช่นหากบรรทัด / คำสั่งปัจจุบันของฉันมีลักษณะยาว:

> git log --graph --all --blah..uh oh i want to cancel and clear this line <cursor is here now>

มีปุ่มลัดหรือคำสั่งให้ไปจากด้านบนไปยัง:

>

?

โดยปกติฉันจะกดปุ่มและถ้าบรรทัดปัจจุบันของฉันเป็นสายใหม่ในประวัติศาสตร์ที่จะล้างมัน แต่ถ้าฉันจะผ่านประวัติคำสั่งของฉันผ่านทางคีย์และเริ่มแก้ไขหรือใช้คำสั่งเหล่านั้นจะเปลี่ยนพรอมต์ให้เป็นคำสั่งใหม่ล่าสุดถัดไปในประวัติดังนั้นมันจะไม่ทำงานที่นี่เว้นแต่ฉันจะกดหลายครั้ง


6
ทางลัดไปยังเคลื่อนตัวได้เร็วในทุบตีบรรทัดคำสั่ง หน้านี้เป็นตัวอย่างเพิ่มเติมและอธิบายที่ดีกว่าผมคิดว่า
Gab是好人


คำตอบ:


1492

คุณสามารถใช้Ctrl+ Uเพื่อล้างจนถึงจุดเริ่มต้น

คุณสามารถใช้Ctrl+ Wเพื่อลบเพียงคำเดียว

คุณสามารถใช้Ctrl+ Cเพื่อยกเลิก

หากคุณต้องการเก็บประวัติคุณสามารถใช้Alt+ Shift+ #เพื่อแสดงความคิดเห็น


Bash Emacs แก้ไขสูตรโกงแผ่น


231
บรรทัดที่ลบโดย Ctrl-U สามารถเรียกคืนได้ด้วย Ctrl-Y เช่นกัน
keks

65
wut? ขอบคุณมาก ๆ ที่ keks & kev, ⌃ + U ถูกลบทั้งหมดก่อนเคอร์เซอร์, ⌃ + K จะถูกลบทั้งหมดหลังจากเคอร์เซอร์, ⌃ + A คือไปที่จุดเริ่มต้นของบรรทัด ดังนั้นทางเทคนิค ⌃ + C จึงเป็นทางออกที่ดีที่สุดสำหรับคำถาม
Binarian

3
Alt-Shift- # ไม่ทำงาน? คิดว่าคนอื่นทำ Alt-Shift- # พิมพ์อักขระ> บนเทอร์มินัล
tgkprog

49
โหวตขึ้นเพื่อสอน<kbd>...</kbd>แท็กให้ฉันแสดงคีย์ใน SO
Samveen

11
@ LưuVĩnhPhúc ESCเป็นรหัสปรับปรุงของตัวเองในทุบตี มันใช้สำหรับสิ่งต่าง ๆ เช่นการยกเลิกการนำทางประวัติ ( CTRL+ r) หรือการสลับสองคำสุดท้ายหลังเคอร์เซอร์ ( ESC+ t)
noobish

578

เพียงเพื่อสรุปคำตอบทั้งหมด:

  • ล้างข้อมูลในบรรทัด: คุณสามารถใช้Ctrl+ Uเพื่อล้างข้อมูลจนถึงจุดเริ่มต้น
  • ล้างข้อมูลบรรทัด: Ctrl+ E Ctrl+ Uเพื่อล้างบรรทัดปัจจุบันในเทอร์มินัล
  • ล้างข้อมูลบรรทัด: Ctrl+ A Ctrl+ Kเพื่อล้างบรรทัดปัจจุบันในเทอร์มินัล
  • ยกเลิกปัจจุบันคำสั่ง / บรรทัด: +CtrlC
  • เรียกคืนคำสั่งที่ถูกลบ: Ctrl+ Y(จากนั้นAlt+ Y)
  • ไปที่จุดเริ่มต้นของบรรทัด: Ctrl+A
  • ไปที่ท้ายบรรทัด: Ctrl+E
  • ลบคำที่ส่งต่อเช่นถ้าคุณอยู่ตรงกลางของคำสั่ง: Ctrl+K
  • ลบอักขระทางด้านซ้ายจนกระทั่งเริ่มต้นคำ: Ctrl+W
  • หากต้องการล้างพรอมต์คำสั่งทั้งหมด: Ctrl+L
  • สลับระหว่างจุดเริ่มต้นของบรรทัดและตำแหน่งเคอร์เซอร์ปัจจุบัน: Ctrl+XX

6
note ctrl-k ลบทุกอย่างระหว่างเคอร์เซอร์และจุดสิ้นสุดของบรรทัด
Peter Berg

6
ลบคำถัดไป:Alt + D
cnlevy

1
Alt+ D ไม่ทำงานนั่นคือสาเหตุที่ฉันไม่ได้รวม :(
J4cK

1
CTRL + Lล้างหน้าจอ แต่คงสิ่งที่พิมพ์ไว้ในบรรทัดคำสั่งปัจจุบัน
Aziraphale

1
Ctrl + Alt + >ย้ายไปยังจุดสิ้นสุดของประวัติอินพุตซึ่งสมบูรณ์แบบเมื่อคุณต้องการยกเลิกการค้นหาประวัติ
astasiak

165

ฉันมีรายการทางลัดที่สมบูรณ์:

  1. Ctrl+ a เลื่อนเคอร์เซอร์ไปที่จุดเริ่มต้นของบรรทัด
  2. Ctrl+ e เลื่อนเคอร์เซอร์ไปที่ท้ายบรรทัด
  3. Ctrl+ b เลื่อนอักขระหนึ่งตัวกลับ
  4. Alt+ b เลื่อนกลับหนึ่งคำ
  5. Ctrl+ f เลื่อนไปข้างหน้าหนึ่งอักขระ
  6. Alt+ f เลื่อนไปข้างหน้าหนึ่งคำ
  7. Ctrl+ d ลบตัวละครปัจจุบัน
  8. Ctrl+ w ตัดคำสุดท้าย
  9. Ctrl+ k ตัดทุกอย่างหลังจากเคอร์เซอร์
  10. Alt+ d ตัดคำหลังเคอร์เซอร์
  11. Alt+ w ตัดคำก่อนเคอร์เซอร์
  12. Ctrl+ y วางคำสั่งที่ถูกลบล่าสุด
  13. Ctrl+ _ เลิกทำ
  14. Ctrl+ u ตัดทุกอย่างก่อนเคอร์เซอร์
  15. Ctrl+ xxสลับระหว่างตำแหน่งแรกและตำแหน่งปัจจุบัน
  16. Ctrl+ l ล้างเครื่อง
  17. Ctrl+ c ยกเลิกคำสั่ง
  18. Ctrl+ r คำสั่งค้นหาในประวัติ - พิมพ์คำค้นหา
  19. Ctrl+ j จบการค้นหาที่รายการประวัติปัจจุบัน
  20. Ctrl+ g ยกเลิกการค้นหาและคืนบรรทัดเดิม
  21. Ctrl+ n คำสั่งถัดไปจากประวัติ
  22. Ctrl+ p คำสั่งก่อนหน้าจากประวัติ

5
ขออภัยฉันได้เตรียมปุ่มลัดที่มีประโยชน์ทั้งหมดซึ่ง 7,8,9,10,11,14,16,17 เป็นปุ่มลัดที่ชัดเจน / ลบซึ่งเราสามารถใช้ได้ตามความต้องการ
tharunkumar

2
มันควรจะกล่าวว่าCTRL+ L(16. ) รักษาเนื้อหาของบรรทัดคำสั่งปัจจุบัน
Aziraphale

ดูเหมือนว่าคุณจำเป็นต้องใช้ Ctrl + Shift + A เพื่อไปที่จุดเริ่มต้นของบรรทัด
Gandalf458

3
มันหายไปCtrl+ h: ลบอักขระก่อนเคอร์เซอร์
peflorencio

22

Ctrl+ A, Ctrl+ Kเพื่อลบบรรทัดปัจจุบันในเทอร์มินัล จากนั้นคุณสามารถเรียกคืนด้วยCtrl+ Yหากคุณต้องการ


16

หรือหากคุณใช้โหมด vi ให้กดEscตามด้วยcc

เพื่อเรียกคืนสิ่งที่คุณเพิ่งลบไปEscแล้วp:)


5
คุณสามารถเปิดใช้งานโหมด vi echo 'set editing-mode vi' >> ~/.inputrcโดย นอกจากนี้ยังทำงานในสถานที่ต่าง ๆ เช่น python interpreter prompts และไคลเอนต์ SQL บางตัว
dwurf

11

ฉันไม่แน่ใจว่าถ้าคุณรัก แต่ฉันใช้Ctrl+ A(เพื่อเริ่มต้นบรรทัด) และCtrl+ K(เพื่อลบบรรทัด) ฉันคุ้นเคยกับคำสั่งเหล่านี้จาก emacs และคิดออกโดยไม่ได้ตั้งใจ



6
  • Ctrl+ u: เลื่อนขึ้นไปที่จุดเริ่มต้นของบรรทัดของคุณไปยังบัฟเฟอร์วงแหวน
  • Ctrl+ k: เลื่อนขึ้นไปจนสุดบรรทัดของคุณไปยังบัฟเฟอร์วงแหวน
  • Ctrl+ w: ย้ายตัวอักษรและ (หลายคำ) ที่เหลือจากเคอร์เซอร์ของคุณไปยังบัฟเฟอร์วงแหวน

  • Ctrl+ y: แทรกรายการสุดท้ายจากบัฟเฟอร์วงแหวนของคุณจากนั้นคุณสามารถใช้Alt+ yเพื่อหมุนผ่านบัฟเฟอร์วงแหวนของคุณ กดหลาย ๆ ครั้งเพื่อไปยังรายการ "ก่อนหน้า" ในบัฟเฟอร์วงแหวน


4

CTRL+ Rและเริ่มพิมพ์เพื่อค้นหาคำสั่งก่อนหน้าในประวัติ จะแสดงเส้นเต็ม
CTRL+ Rอีกครั้งเพื่อวน



2

เพิ่มในรายการ:

ในโหมด Emacs กดEscแล้วตามด้วยRจะลบทั้งบรรทัด

ฉันไม่รู้ว่าทำไมเพียงเกิดขึ้นเพื่อหามัน อาจไม่ได้ใช้สำหรับการลบบรรทัด แต่มีผลเหมือนกัน หากใครรู้โปรดบอกฉันขอบคุณ :)

ทำงานใน Bash แต่จะไม่ทำงานใน Fish


1
เป็นrevert-lineคำสั่ง readline: "เลิกทำการเปลี่ยนแปลงทั้งหมดในบรรทัดนี้" มันถูกผูกไว้โดยค่าเริ่มต้นเป็นM-r(Meta-R) ซึ่งสามารถเป็นได้ทั้ง Alt-R หรือ Esc R ซึ่งหมายความว่ามันไม่ได้ลบบรรทัดจริงๆเมื่อว่างเปล่าที่จะเริ่มต้นด้วย; หากคุณเลื่อนย้อนกลับไปในประวัติคำสั่งของคุณและเปลี่ยนคำสั่งจากนั้นออกrevert-lineมันจะเปลี่ยนกลับไปเป็นคำสั่งมันเดิมและไม่ลบบรรทัด
Benjamin W.

2

หากต้องการลบทั้งบรรทัดไม่ว่าเคอร์เซอร์จะอยู่ที่ใดคุณสามารถใช้kill-whole-lineคำสั่งได้ แต่จะไม่ถูกผูกไว้ตามค่าเริ่มต้น มันสามารถถูกผูกไว้กับตัวอย่างเช่นCtrl+ Alt+ Kโดยการแทรก

"\e\C-k": kill-whole-line

ลงในไฟล์ Readline init ของคุณ (ตามอัตภาพ~/.inputrc)

ข้อสังเกตต่างๆ:

  • bind -Pเพื่อหลีกเลี่ยงไม่ได้ตั้งใจอีกครั้งกำหนดลำดับที่สำคัญที่มีอยู่แล้วในการใช้งานอย่างอื่นคุณสามารถตรวจสอบการผูกของคุณทั้งหมดด้วย ตรวจสอบการเชื่อมโยงที่แนะนำด้วย

    bind -P | grep '\\e\\C-k'
  • ชื่อ Readline ไฟล์ init INPUTRCจะถูกนำมาจากตัวแปรเปลือก ถ้ามันไม่มีการตั้งค่าเริ่มต้นคือ~/.inputrcหรือ /etc/inputrc(ถ้าไม่ได้อยู่) ขอให้สังเกตว่าถ้าคุณมี~/.inputrc, /etc/inputrcจะถูกละเว้น
  • เพื่อโหลดไฟล์ init Readline ของคุณคุณสามารถใช้Ctrl+ +X CtrlR
  • ลิงก์ไปยังส่วนของคู่มือที่เกี่ยวข้อง:


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.