Bash'ın Ters Arama'sında Nasıl Gezilir?


40

Bash, aramayı Ctrl+ ile tersine çevirme işlevi sunar R. Daha sonra bir komutun bir kısmını yazabilir, bu tarihteki uygun bir girişi gösterir.

Bunun benim tarihim olduğunu varsayalım:

vim foo1
vim foo2 # I want to go here
vim foo3 # this is where I land, how to go back?

Ben ararım foo. Ctrl+ Tuşuna basıldığında bir Rsonraki uygun arama girişi gösterilir. Genellikle bana olur, çok hızlıyım ve hedeflediğim sonucun ötesine geçiyorum ve vim foo3gösteriliyor ve şimdi geri dönmek istiyorum vim foo2.

Dolayısıyla sorum şu: Tersine arama içinde nasıl gezinebilirim?


Hangi terminali kullanıyorsunuz? Örneğin. Gnome-terminali, konsole, vb ...
varesa

1
Eh, buna pek aşina değilim ... Anahtar ctrl + S olmalı, ancak bazı terminaller anahtarı geriye doğru aramaya ulaşmadan önce yiyor gibi görünüyor
varesa

Ctrl + shift + R - ileri arama yaparken ctrl + R
devansvd


Yanıtlar:


36

Buna forward-search-history, varsayılan başına bağlanan fonksiyonla erişebilirsiniz ctrl+s. Maalesef varsayılan başına ctrl+ssinyal vermek için kullanılır; xoffbu, aramanın yönünü değiştirmek için kullanamayacağınız anlamına gelir. Sorunu çözmek için iki çözüm vardır, biri xoff/xonsinyal göndermeyi devre dışı bırakıyor, diğeri de tuş takımını değiştiriyorforward-search-history

Xon / xoff'u devre dışı bırak

stty -ixonTerminalinde koş ya da kendine ekle ~/.bashrc. Bu ctrl+s, forward-search-historytarih işlevini kullanmak için kullanmanızı sağlar.

Kontrol akışı hakkında daha fazla bilgi için, bir terminalde yanlışlıkla Ctrl-S tuşlarına bastıktan sonra nasıl çözülür? Bölümüne bakın. ve bazı cevaplar

Klavyeyi değiştirin

Varsayılan davranışını değiştirmek istemiyorsanız ctrl+s, tuş takımını forward-search-historyile için değiştirebilirsiniz bind. Çoğu anahtar zaten bash içerisinde tanımlandığı için, yaratıcı olmanız gerekebilir:

bind "\C-t":forward-search-history

Bu ctrl+tileriye dönük arama geçmişine bağlanır , ancak lütfen varsayılan ctrl+tçalıştırmalarıntranspose-chars


Ben senin ilk çözüm çalıştı stty -ixoniçinde zshve çok iyi çalışıyor. Ancak, xoff/xonsinyallemeyi devre dışı bırakmada olası istenmeyen yan etkiler var mı?
Öğrenci

@student ctrl+sTerminal çıkışını artık duraklatmak için kullanamazsınız . Daha önce hiç kullanmadıysanız, bu hiç sorun değil
Ulrich Dangel

1
Buna değer, ikinci çözüm ile gittim. Harika şeyler ! Konsolu dondurabileceğinizi bilmiyordum C-s.. tuşuna basarak , sunucu günlüklerinde kuyruk kullanıyorsanız çok kullanışlıdır. Temiz! (Keşke başka bir oyum olsaydı :))
Ashutosh Jindal

OSX üzerinde çalışmak için seçenek 2'yi alamadım. Bunun yerine yapmak zorunda kaldım:bind '"\C-t": history-search-forward'
stiemannkj1 26.05.15

0

Bash'ınız tarafından sağlanan temel geriye doğru arama ve ileriye doğru aramaya bir alternatif olarak, şunlara bakmak isteyebilirsiniz:

fzf , kendi kendini tarif eden "komut satırı bulanık bulucu".

Bash'ınızın (ve diğer terminallerin) varsayılan geriye doğru aramasının yerini alabilir.

Avantajları şudur:

  • Komutlarınızın geçmişinden bir listesini yazdırır
    • tekrar Ctrl + R tuşlarına basarak kronolojik veya alaka düzeyi sıralamasını değiştirir
  • ok tuşları ile gezilebilir (veya Ctrl + J / Ctrl + K)
  • çoklu iğnelerin aranmasına izin verir

İş akışım artık kontrolüm altında olan makinelerde geriye doğru yapılan temel arama üzerinde fzf'ye dayanıyor.

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.