Tidak dapat meneruskan pencarian Bash history seperti halnya dengan CTRL-r

203

Saya mencoba mencari riwayat bash saya sama dengan CTRL- r, tetapi untuk meneruskan arah.

Sungguh menyakitkan bagi saya, ketika saya hanya menekan sekali terlalu sering CTRL- r, untuk menemukan perintah sebelumnya lagi.

Bagaimana Anda bisa meneruskan pencarian Bash history Anda seperti halnya dalam pencarian terbalik?

Léo Léopold Hertz 준영
sumber

Jawaban:

321

Anda dapat mencari ke depan juga. Dari manual bash info, " 8.2.5 Mencari Perintah dalam Sejarah ":

Untuk mencari mundur dalam sejarah untuk string tertentu, ketik C-r. Mengetik C-spencarian maju melalui sejarah.

Masalah dengan Ctrl-S adalah kadang-kadang bertabrakan dengan kontrol aliran XON / XOFF (dalam Konsole misalnya). Pencarian itu adalah fitur readline, dan Anda harus bisa mengikatnya ke beberapa tombol lain. Pembaruan: Lebih sederhana dan lebih baik untuk menonaktifkan XON / XOFF dengan menjalankan

stty -ixon
hlovdal
sumber
4
Ini brilian, tapi saya menambahkan stty -ixon ke .profile saya dan sepertinya tidak berfungsi untuk tab baru. Ada ide tentang bagaimana membuat ini bekerja? Saya ingin XON / XOFF dinonaktifkan secara default.
John Gallagher
13
Seandainya ada orang lain yang memiliki masalah yang sama dengan saya - jika Anda menambahkan ini ke. Profil tidak akan berpengaruh. Hanya ketika Anda menambahkannya ke .bash_profile, keajaiban terjadi! Terima kasih atas tipnya - ini telah membuat saya gila selama bertahun-tahun.
John Gallagher
12
@ JohnGallagher Penting untuk dicatat adalah itu .bash_profiledan .profilehanya bersumber untuk shell login. Saya akan meletakkan ini di .bashrc(dari mana saya sumber .profile).
Victor Zamanian
13
[[ $- == *i* ]] && stty -ixondapat digunakan untuk menghindari masalah yang dijelaskan di sini
mMontu
3
Jika Anda menggunakan Putty dan tidak bisa / tidak ingin mempertahankan .bash_profilepada setiap mesin yang Anda hubungkan, jawaban pada pengguna super ini sangat bermanfaat.
fazy
41

Trik IMHO terbaik diaktifkan dengan pgupdan pgdown. masukkan saja ke dalam~/.inputrc

"\e[5~": history-search-forward
"\e[6~": history-search-backward

logout / login, ketikkan huruf pertama dan kemudian pgupatau pgdownuntuk mencari sepanjang sejarah

ctrl-R cari semua baris yang berisi kata-kata, sedangkan baris pencarian-pencarian-riwayat dimulai dengan kata-kata

Eric Burghard
sumber
2
Anda juga dapat menghapus komentar 2 baris ini di /etc/inputrc(mis. Di Ubuntu).
falconepl
2
Saya lebih suka mengikat ini ke atas dan ke bawah panah: "\ e [A": histori-search-backward dan "\ e [B": histori-search-forward
shmup
Bagaimana jika ini tidak berpengaruh pada bash?
Sören
26

Anda mungkin ingin mencoba https://github.com/dvorka/hstr yang memungkinkan pemfilteran "sarankan gaya kotak" dari riwayat Bash dengan pemesanan berdasarkan metrik (yakni opsional) yaitu jauh lebih efisien dan lebih cepat dalam arah maju dan mundur:

masukkan deskripsi gambar di sini

Hal ini dapat dengan mudah terikat untuk Ctrl-rdan / atauCtrl-s

Martin Dvorak
sumber
5
Saya sedang jatuh cinta. Petunjuk cepat untuk menginstal di Ubuntu:sudo add-apt-repository ppa:ultradvorka/ppa; sudo apt-get update; sudo apt-get install hh; hh --show-configuration >> ~/.bashrc;
CivFan
14

Saya biasanya menekan ESCterminal, dan kemudian >. Setel ulang setidaknya dan Anda dapat mencoba klik lebih jarang CTRL+ R.

Eyad Ebrahim
sumber
s / klik / tekan / Juga, Anda perlu menekan escape dua kali (pertama kali untuk melarikan diri dari pencarian mundur).
Croad Langshan