Komutun bir kısmını bash yazdıktan sonra ctrl-r kullanmanın bir yolu var mı?


13

Bash'da Ctrl+ rkomutu çok kullanışlıdır, Ctrl+ r whateveryazıyorum ve geçmişimi kelimeyi içeren komutları arar whatever. Ama whateveryazıp bu kelimeyi aramak istediğimi fark edersem Ctrl+ rhiçbir şey olmaz.

Bir yolu bir anahtar isabet ve ben yazmışsınız gibi davranıyor o sahip var mı Ctrl+ r whateveryerine whatever Ctrl+ r?

Bende aşağıdakiler var .inputrc:

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

ancak bu yalnızca satırın başlangıcı aynı olduğunda işe yarar.

Yanıtlar:


12

Daha önce yazdıklarınızı kullanarak bash'ın geçmişinde arama yapabilirsiniz.

Az önce yazdığınızı curl -I http://superuser.comve önce Ctrl+ yazmayı unuttuğunuzu varsayalım r:

$ curl -I http://superuser.com

Geçmişinizde bir i-arama yapmak istiyorsanız, önce satırın başına gidin ( Ctrl+ a), i-search ( Ctrl+ r) girin ve Ctrl+ yazın y. Bu, önceden yazdığınız metnin tamamını kullanarak arama yapmalıdır:

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

Alternatif olarak, az önce yazdığınız metnin ilk kelimesini kullanarak arama yapmak için Ctrl+ wyerine Ctrl+ ykullanabilirsiniz:

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

Hepsini tek bir tuşa bağlama

Tüm bunları tek bir tuşa basarak yapmak istiyorsanız, tek bir tuşu klavye makrosuna bağlayabilirsiniz. Kullanmak istiyorsanız, söyleyin, F12çalıştırın:

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

Bu oturum için sürecek.

Kalıcı hale getirme

Yalnızca makronuzu tanımlayın ~/.inputrc:

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

Burada tek tırnakları atladığımızı unutmayın .

Bu yanıtı yararlı bulabilirsiniz .


1
Benim yapılandırmayla ilgili bir sorun olup olmadığından emin değilim, ancak yazdıktan sonra c-ryazarak bir c-yşey yapıştırmaz. c-yKendi başına yazdığımda metni yapıştırırsam, iki komutu birleştiremem ...
14'te skeept

Önce satır başına mı gidiyorsunuz? (Ca)
hso

1
Haklısın, çizginin başına gitmeyecektim. Şimdi benim .inputrc var "\C-xr": "\C-a\C-r\C-y"ve çok güzel çalışıyor! Bu cevap için teşekkürler.
3'te skeept

Sanırım üçüncü kez bu control+a control+r control+yşeyi araştırdım ! Teşekkürler bu cevap her zaman burada! :)
Dr Beco

2

Dört ihtardan tasarruf edin:

Bir saniye kaçının Ctrl-Rekleyerek sizin .bashrc(ya adresinden Müşteri .inputrcisterseniz):

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

Bu eşler ALT-R için TO-A CTR-R CTR-Y, CTR-R

Açıklama:

  • ALT-R : ciltleme anahtarı. Başka bir iyi seçenek \C-xr( CTR-X CTR-R )
  • TO-A : Satırın başına git (yazılanları ezberlemek)
  • CTR-R : Ters aramayı başlat
  • TO-Y : Aramanın bir parçası olarak hangi CTR-A'nın ezberlendiğini yapıştırın
  • CTR-R : Şimdiye kadarki karakterlerle geriye doğru aramayı tetikler

Bana göre Cy'in komutu arama alanına neden yapıştırdığı (Ca'nın "kopya" komutu olması gerekmiyor, değil mi?) Ve Cw neden sadece ilk kelimeyi yapıştırıyor.
marcus

evet, C-asadece taşınmakla kalmaz, aynı zamanda taşınan içeriği ezberler (kopyalar).
Dr Beco

Bu davranışı teyit edemiyorum (sadece Ca Cy'i deneyin), bence Cr'in bazı özel vakaları yerleşik olması daha olası, ancak nerede belgelendirildiklerini bilmiyorum.
marcus
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.