Apakah ada cara menggunakan ctrl-r setelah mengetik bagian dari perintah di bash?
13
Dalam bash perintah Ctrl+ rsangat berguna, saya mengetik Ctrl+ rwhateverdan mencari riwayat saya untuk perintah yang mengandung kata whatever. Tetapi jika saya mengetik whateverdan menyadari bahwa saya ingin mencari kata itu dan tekan Ctrl+ rtidak ada yang terjadi.
Apakah ada cara menekan kunci dan membuatnya berperilaku seolah-olah saya telah mengetik Ctrl+ rwhateverbukan whateverCtrl+ r?
Saya memiliki yang berikut ini di .inputrc:
"\C-p": history-search-backward
tetapi ini hanya berfungsi jika awal baris adalah sama.
Anda dapat mencari riwayat bash menggunakan apa yang sudah Anda ketikkan dengan mudah.
Misalkan Anda baru saja mengetik curl -I http://superuser.comdan Anda lupa mengetik Ctrl+r pertama:
$ curl -I http://superuser.com
Jika Anda ingin melakukan pencarian-i pada riwayat Anda, pergi ke awal baris terlebih dahulu ( Ctrl+ a), masukkan pencarian-i ( Ctrl+ r) dan ketik Ctrl+y . Ini harus mencari menggunakan isi dari seluruh teks yang sudah Anda ketik:
Jika Anda ingin melakukan semua ini dalam satu penekanan tombol, Anda dapat mengikat satu tombol ke makro keyboard. Jika Anda ingin menggunakan, katakan, F12jalankan:
$ bind '"\e[24~":"\C-a\C-r\C-y"'
Itu akan berlangsung selama sesi.
Menjadikannya permanen
Cukup tentukan makro di Anda ~/.inputrc:
"\e[24~":"\C-a\C-r\C-y"
Perhatikan bahwa di sini kita menghilangkan tanda kutip tunggal.
Saya tidak yakin apakah ini merupakan masalah dengan konfigurasi saya, tetapi setelah saya c-rmengetik mengetik c-ytidak menempel apa pun di sana. Jika saya mengetik c-ysendiri hanya menempelkan teks, jadi saya tidak bisa menggabungkan dua perintah ...
skeept
Apakah Anda pergi ke awal baris terlebih dahulu? (Ca)
hso
1
Anda benar, saya tidak akan memulai garis. Sekarang saya miliki di .inputrc saya "\C-xr": "\C-a\C-r\C-y"dan berfungsi sangat bagus! Terima kasih atas jawaban ini.
skeept
Saya pikir ini adalah ketiga kalinya saya mencari informasi di Google control+a control+r control+y! Terima kasih, jawaban ini selalu ada di sini! :)
Dr Beco
2
Simpan empat teguran:
Hindari sedetik Ctrl-Rdengan menambahkan ke .bashrc(atau ke Anda .inputrcjika Anda mau):
Masih belum jelas bagi saya mengapa Cy menempelkan perintah ke bidang pencarian (Ca tidak seharusnya menjadi perintah "copy", kan?) Dan mengapa Cw hanya menempelkan kata pertama.
marcus
ya, C-atidak hanya bergerak, tetapi menghafal (menyalin) konten yang dipindahkan.
Dr Beco
Saya tidak dapat mengkonfirmasi perilaku itu (coba saja Ca Cy), saya pikir itu lebih mungkin bahwa Cr yang memiliki beberapa kasus khusus dibangun, tetapi saya tidak tahu di mana mereka didokumentasikan.
c-r
mengetik mengetikc-y
tidak menempel apa pun di sana. Jika saya mengetikc-y
sendiri hanya menempelkan teks, jadi saya tidak bisa menggabungkan dua perintah ..."\C-xr": "\C-a\C-r\C-y"
dan berfungsi sangat bagus! Terima kasih atas jawaban ini.control+a control+r control+y
! Terima kasih, jawaban ini selalu ada di sini! :)Simpan empat teguran:
Hindari sedetik
Ctrl-R
dengan menambahkan ke.bashrc
(atau ke Anda.inputrc
jika Anda mau):Ini akan memetakan ALT-R ke CTR-A CTR-R CTR-Y CTR-R
Deskripsi:
\C-xr
( CTR-X CTR-R )sumber
C-a
tidak hanya bergerak, tetapi menghafal (menyalin) konten yang dipindahkan.