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.