Bash menawarkan fungsi untuk membalikkan pencarian melalui Ctrl+ R. Kemudian seseorang dapat mengetik bagian dari perintah itu akan menampilkan entri yang pas dari sejarah.
Anggap ini sejarah saya:
vim foo1
vim foo2 # I want to go here
vim foo3 # this is where I land, how to go back?
Saya mencari foo
. Menekan Ctrl+ Rlagi menunjukkan entri pencarian pas berikutnya. Seringkali itu terjadi pada saya, bahwa saya terlalu cepat dan menavigasi melewati hasil yang saya maksudkan dan vim foo3
ditunjukkan dan sekarang saya ingin kembali ke vim foo2
.
Karena itu pertanyaan saya adalah: Bagaimana cara saya menavigasi dalam pencarian terbalik?
bash
command-history
search
k0pernikus
sumber
sumber
Jawaban:
Anda dapat mengakses ini melalui
forward-search-history
fungsi yang diikat per default ctrl+s. Sayangnya ctrl+sdigunakan untuk memberi sinyalxoff
per default yang berarti Anda tidak dapat menggunakannya untuk mengubah arah pencarian. Ada dua solusi untuk menyelesaikan masalah, satu menonaktifkan pengirimanxoff/xon
pensinyalan dan lainnya mengubah kunci pengikat untukforward-search-history
Nonaktifkan xon / xoff
Jalankan
stty -ixon
di terminal Anda atau tambahkan ke terminal Anda~/.bashrc
. Hal ini memungkinkan Anda untuk menggunakan ctrl+suntuk menggunakanforward-search-history
fungsi sejarah.Untuk informasi lebih lanjut tentang aliran kontrol, lihat Bagaimana mencairkan setelah tidak sengaja menekan Ctrl-S di terminal? dan beberapa jawaban
Ubah pengikat tombol
Jika Anda tidak ingin mengubah perilaku default, ctrl+sAnda dapat mengubah ikatan kunci
forward-search-history
denganbind
. Karena sebagian besar kunci sudah ditentukan dalam bash, Anda mungkin harus kreatif:Ini akan mengikat ctrl+tke riwayat pencarian-maju, tetapi perlu diketahui bahwa per default ctrl+tberjalan
transpose-chars
sumber
stty -ixon
dizsh
dan bekerja sangat baik. Namun apakah ada efek samping yang mungkin tidak diinginkan dalam menonaktifkanxoff/xon
pensinyalan?ctrl+s
untuk menjeda output terminal lebih lama. Jika Anda tidak pernah menggunakannya sebelum ini tidak ada masalahC-s
.. sangat berguna saat menggunakan ekor pada log server. Rapi! (Seandainya saya punya upvote lain :))bind '"\C-t": history-search-forward'
Sebagai alternatif dari pencarian terbalik dasar dan pencarian maju yang disediakan oleh bash Anda, Anda mungkin ingin melihat ke dalam:
fzf , "pencari fuzzy baris perintah" yang dijelaskan sendiri.
Itu dapat menggantikan pencarian terbalik default dari bash Anda (dan terminal lainnya).
Manfaatnya adalah:
Alur kerja saya sekarang sepenuhnya bergantung pada fzf atas pencarian terbalik dasar pada mesin yang saya kendalikan.
sumber