มีวิธีการใช้ ctrl-r หลังจากพิมพ์ส่วนหนึ่งของคำสั่งในทุบตี?


13

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

มีวิธีการกดปุ่มและมันทำงานอย่างไรถ้าฉันพิมพ์Ctrl+ r whateverแทนที่จะเป็นwhatever Ctrl+ r?

ฉันมีดังต่อไปนี้ในของฉัน.inputrc:

"\C-p": history-search-backward

แต่จะใช้งานได้ก็ต่อเมื่อจุดเริ่มต้นของบรรทัดเหมือนกัน

คำตอบ:


12

คุณสามารถค้นหาประวัติทุบตีโดยใช้สิ่งที่คุณพิมพ์ไปแล้วได้อย่างง่ายดาย

สมมติว่าคุณเพิ่งพิมพ์curl -I http://superuser.comและคุณลืมพิมพ์Ctrl+ rก่อน:

$ curl -I http://superuser.com

หากคุณต้องการที่จะทำ I-ค้นหาในประวัติของคุณไปที่จุดเริ่มต้นของบรรทัดแรก ( Ctrl+ a) ใส่ฉันค้นหา ( Ctrl+ r) และประเภท+Ctrl yสิ่งนี้ควรค้นหาโดยใช้เนื้อหาของข้อความทั้งหมดที่คุณพิมพ์แล้ว:

(reverse-i-search)`curl -I http://superuser.com': curl -I http://superuser.com/faq

หรือคุณสามารถใช้Ctrl+ wแทนCtrl+ yเพื่อค้นหาโดยใช้เพียงแค่คำแรกของข้อความที่คุณเพิ่งพิมพ์:

(reverse-i-search)`curl': curl -I http://superuser.com/faq

รวมทั้งหมดไว้ในคีย์เดียว

หากคุณต้องการทำสิ่งนี้ทั้งหมดในการกดแป้นเดียวคุณสามารถผูกปุ่มเดียวกับมาโครแป้นพิมพ์ได้ หากคุณต้องการใช้พูดให้F12รัน:

$ bind '"\e[24~":"\C-a\C-r\C-y"'

ที่จะมีอายุการใช้งาน

ทำให้ถาวร

เพียงกำหนดแมโครใน~/.inputrc:

"\e[24~":"\C-a\C-r\C-y"

โปรดทราบว่าที่นี่เราไม่ใช้เครื่องหมายคำพูดเดี่ยว

คุณอาจพบว่าคำตอบนี้มีประโยชน์


1
ผมไม่แน่ใจว่าถ้ามันเป็นปัญหาที่เกิดขึ้นกับการกำหนดค่าของฉัน แต่หลังจากที่ผมพิมพ์c-rพิมพ์c-yไม่ได้วางอะไรมี ถ้าฉันพิมพ์c-yด้วยตัวเองเพียงแค่วางข้อความดังนั้นฉันจึงไม่สามารถรวมสองคำสั่ง ...
skeept

คุณไปที่จุดเริ่มต้นของบรรทัดก่อนหรือไม่? (Ca)
hso

1
คุณพูดถูกฉันจะไม่เริ่มต้นบรรทัด ตอนนี้ฉันมีใน. inputc ของฉัน"\C-xr": "\C-a\C-r\C-y"และมันใช้งานได้ดีมาก! ขอบคุณสำหรับคำตอบนี้
skeept

ฉันคิดว่ามันเป็นครั้งที่สามที่ฉันทำcontrol+a control+r control+yสิ่งนี้! ขอบคุณคำตอบนี้อยู่ที่นี่เสมอ! :)
ดร. Beco

2

บันทึกสี่นัด:

หลีกเลี่ยงวินาทีCtrl-Rด้วยการเพิ่มลงใน.bashrc(หรือ.inputrcถ้าคุณต้องการ):

bind '"\er":"\C-a\C-r\C-y\C-r"' # alt-r = ctr-a ctr-r ctr-y ctr-r

สิ่งนี้จะทำแผนที่ALT-RถึงCTR-A CTR-R CTR-Y CTR-R

รายละเอียด:

  • ALT-R : คีย์การรวม อีกตัวเลือกที่ดีคือ\C-xr( CTR-X CTR-R )
  • CTR-A : ไปที่จุดเริ่มต้นของบรรทัด (จดจำสิ่งที่เขียน)
  • CTR-R : เริ่มการค้นหาแบบย้อนกลับ
  • CTR-Y : วางสิ่งที่CTR-A ที่จำไว้เป็นส่วนหนึ่งของการค้นหา
  • CTR-R : ทริกเกอร์การค้นหาย้อนกลับด้วยตัวละครจนถึง

ยังไม่ชัดเจนสำหรับฉันทำไม Cy วางคำสั่งลงในช่องค้นหา (Ca ไม่ควรจะเป็นคำสั่ง "คัดลอก" ใช่หรือไม่) และทำไม Cw จึงวางคำแรกเท่านั้น
marcus

ใช่C-aไม่เพียง แต่เคลื่อนไหว แต่จดจำ (คัดลอก) เนื้อหาที่ย้ายไป
ดร.

ฉันไม่สามารถยืนยันพฤติกรรมดังกล่าวได้ (ลองใช้ Ca Cy) ฉันคิดว่าเป็นไปได้มากว่า Cr ที่มีกรณีพิเศษบางอย่างในตัว แต่ฉันไม่ทราบว่าเอกสารเหล่านั้นอยู่ที่ไหน
marcus
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.