Anda dapat menggunakan fungsionalitas zlehistory-search
:
bindkey "^[[A" history-beginning-search-backward
bindkey "^[[B" history-beginning-search-forward
Ini mengikat Updan Down(menyesuaikan untuk urutan pelarian Anda sendiri) ke pencarian riwayat, mundur dan maju, berdasarkan apa yang telah dimasukkan pada prompt.
Jadi, jika Anda memasukkan "vim" dan menekan Up, zsh akan menelusuri mundur sejarah Anda untuk hanya perintah yang dimulai dengan "vim".
Anda juga dapat menempatkan kursor di akhir baris setelah Anda memilih perintah yang diinginkan dari sejarah zsh dengan menggunakan fungsi histori-pencarian-akhir (biasanya terletak di /usr/share/zsh/functions/Zle/
) dan menambahkan -end
ke akhir setiap baris, seperti:
autoload -U history-search-end
zle -N history-beginning-search-backward-end history-search-end
zle -N history-beginning-search-forward-end history-search-end
bindkey "^[[A" history-beginning-search-backward-end
bindkey "^[[B" history-beginning-search-forward-end
Opsi lain yang bermanfaat adalah
history | grep
Tetapkan alias, mis
maka Anda dapat mengetik
hg whatever
untuk mencari perintah yang telah Anda gunakan, misalnyaSaya memasukkan alias ini ke file dot saya.
sumber
hg
mengingatkan saya pada ... Oh yeah, Mercurial!Jika Anda menggunakan oh-my-zsh , tambahkan
history-substring-search
keplugins=(...)
baris.Lalu tambahkan
suatu tempat di bawah garis yang bertuliskan
source $ZSH/oh-my-zsh.sh
. Simpan dan jalankan terminal baru atau jalankansource ~/.zshrc
di terminal saat ini.Catatan:
^[[A
adalah urutan keluar untuk panah atas di terminal yang saya gunakan (kitty) dan banyak lainnya. Untuk memeriksa terminal pilihan Anda, ketikshowkey -a
dan kemudian tekan tombol yang Anda ingin temukan urutan pelariannya.sumber
brew install zsh-history-substring-search
, memeriksa repo readme untuk instruksi, saya hanya akan melanjutkan dan membuat jawaban saya sangat senang dengan hasilnya.Anda mungkin ingin menggunakan skrip di https://github.com/zsh-users/zsh-history-substring-search
Di mana Anda dapat mengetik di bagian mana pun dari perintah yang dimasukkan sebelumnya dan tekan tombol Updan Downuntuk menelusuri perintah yang cocok.
sumber
Saya sangat merekomendasikan menggunakan
"$terminfo[kcuu1]"
atau"$key[Up]"
daripada hal-hal yang dikode keras seperti"^[[A"
yang mungkin atau mungkin tidak bekerja pada sistem tertentu.Lihat
/etc/zsh/zshrc
lebih banyak kunci. Begini tampilannya di sistem saya. Saya pikirterminfo
kuncinya lebih cenderung didefinisikan.sumber
Bagaimana dengan menggunakan
zsh-autosuggestions
?Masalahnya, untuk setiap perintah yang Anda ketik, plugin ini akan menunjukkan kepada Anda beberapa saran yang bisa diterima atau tidak. Cobalah dan beri kami umpan balik.
Tanpa plugin, kami dapat menekan Ctrlruntuk melakukan pencarian terbalik pada histori, segera setelah Anda mulai mengetik perintah yang cocok akan muncul sebagai saran.
sumber
Saya menggunakan plugin mode-vi . Dan kemudian di ~ / .zshrc saya memiliki binding berikut:
Yang memungkinkan saya untuk menggunakan
^P
dan^N
sebagai mundur normal dan maju pencarian jika saya tidak memasukkan teks apapun, dan disaring pencarian jika saya lakukan.sumber
Saya setuju dengan cheflo bahwa pencarian "substring" lebih bermanfaat. Saya tidak dapat berkomentar di sana, jadi saya memulai jawaban baru. Saya menggunakan oh-my-zsh, dan menambahkan "search-history-substring" ke plugins = (...) dari ~ / .zshrc. Kemudian sumber ~ / .zshrc. Tidak perlu menambahkan apa-apa lagi. Gunakan "bindkey" untuk memverifikasi:
Kemudian, Anda mengetik "ke" dan panah ke atas, "histori" akan muncul dan "ke" disorot (jika Anda menggunakan perintah "histori" sebelumnya).
sumber
Sebagai gantinya, Anda dapat menggunakan zaw , yang sepenuhnya menggantikan pencarian Anda dengan pencarian super multi kata kunci yang jauh lebih baik, dan memperbaiki masalah Anda juga - riwayat pencarian hanya salah satu hal yang dapat dicari zaw.
Intro kecil / diskusi di sini
sumber
Karena saya menggunakan oh-my-zsh, dan saya menggunakan solusi substring dari joelostblom, James, saya memodifikasi .zshrc seperti ini: (yang pada baris 13, temukan baris "source $ ZSH / oh-my-zsh.sh" , lalu modifikasi kode di sekitarnya.)
sumber
bindkey -v
akan merusak ctrl-a, ctrl-e. Kemungkinan besar semua perintah ctrl.Non-Oh-My-Zsh menjawab
Ini berhasil bagi saya (pada macOS) untuk mendapatkan riwayat substring yang mudah diakses melalui panah atas / bawah. Ikatan kunci terserah Anda.
Substring histori pencarian lebih baik daripada hanya mengakses perintah yang dimulai dengan string. Ini lebih seperti ctrl-r dalam banyak kasus, yang tanpa glob atau pencocokan regex.
Mulai dari instruksi di zsh-users / zsh-history-substring-search
Sekarang nikmati ini sepenuhnya.
sumber