ZSH - tüm geçmiş çıktı?


37

Geçenlerde bash'tan zsh'ye geçtim. Ben önceden yayınlanan komutlar oldu bulmak için kullanılır ki (özyinelemeli arama dışındaki) bash, bir şekilde history | grep whatever, nerede whateverhatırlıyorum komutunun biraz.

Zsh, bu çalışmıyor. historydosyam .zsh_historyyapması için yapılandırdığım birçok girdi içermesine rağmen yalnızca birkaç öğe döndürüyor .

Tüm geçmişimi araştırmaya uygun bir şekilde grepnasıl çıktırabilirim ?

Yanıtlar:


48

Tarihçe, zsh girişlerindeki bir [first] [last]argümanı argüman olarak kabul eder , böylece hepsini çalıştırmak için history 0.

Zsh yardımını almak için (en azından akılda) Alt-htarih komutunu yazın ve bu, yerleşiklerin yardımını getirecektir.


3
Harika! Bu benim için can sıkıcı bir varsayılandır, bu yüzden bunu takma adıma ekliyorum:alias history="history 0"
Nathan Long

7
Önemli değil ama geçmiş listesi 1 ile başlar ve 0 ile başlar.
ggustafsson

2
Bu takma adı kendim kullanıyorum:alias h='history 1 | grep'
Harald Nordgren

3
Bu benim için işe yaramaz gibi görünmüyor: ~/.zsh_history10066 çizgim var, fakat history 0(veya eşdeğeri fc -l 0) sadece 4999 çizgiyi basıyor.
jayhendren

2
To history 1 | grepinsanlar, ben bilmen umut ctrl+rgelmiş geçmiş en iyi hile / kısayol -!
Emil Vatai

9

Kabul edilen yanıt doğru, ama onun değerinde sen olmadığını belirterek ihtiyaç harici aramaya grepo yeteneği pişmiş olduğundan, arama yapmak ikili bu fonksiyon skinTenimde tanımladınız. .zshrc:

histsearch() { fc -lim "*$@*" 1 }

Notlar:

  • fcİnteraktif tarihi kontrol eden zsh yerleşimidir. historyeşittir fc -l.

  • -mBayrak alıntı gereken bir model gerektirir.

  • -iBayrak bir zaman damgası ekler.

  • fcgömleğinde daha birçok numara var (örneğin, geçerli oturum için aramayı iç tarihe sınırlama). Bkz zshbuiltins(1)adam sayfasını veya resmi belgeler .


Daha da iyisi, "$ @" yerine "* @ @ *" (ek yıldızlara dikkat edin) desenini kullanmaktır, çünkü ikincisi yalnızca tam eşleşmeler sağlar.
Piotr Dobrogost

1
Tamamen haklısın, @PiotrDobrogost! Yaptığım durumda bu cevabı nasıl gönderebildiğimden emin değilim - Sanırım bu işlevi bellekten yazmış olmalıyım. Olduğu gibi çok kullanışlı değil, bu yüzden yıldızları dahil etmek için cevabı düzenleyeceğim.
wjv

3

Fzf'ye bir göz atın . Yalnızca kabuk geçmişinizde "parçacıkları" bulmakla kalmaz, aynı zamanda tarayıcı geçmişi, dizin geçmişi vb. Gibi diğer ilginç yerlerde de yardımcı olur.

fzf bir komut satırı bulanık bulucusudur. Bu, aradığınız şeyin parçacıklarını veya kesirlerini arayabileceğiniz ve sürekli olarak daraltabileceğiniz bir eşleşme koleksiyonu göstereceği anlamına gelir. Bu gerçekten bir oyun değiştirici.

Anasayfa yazarın açıklayıcı örnekler bir dizi içerir.


Ne söylediğinizi destekleyen bu cevaba biraz referans eklemeyi düşünün.
Pezevenk Suyu,

Süper Kullanıcıya Hoşgeldiniz! Lütfen okuyun yazılımını önerme için gerekli minimum bilgi Super User yazılımı tavsiye için nasıl ve öneriler. Cevabınızı faydalı tutmak için, verilen bağlantıların kopmasına rağmen bu ayrıntıların cevabınıza göre düzenlenmesi gerekir.
Reinstate Monica
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.