Ctrl+ radalah alat kecil yang hebat untuk mencari .bash_history
perintah yang sebelumnya Anda jalankan.
Namun, ketika saya menggunakannya di OS X Terminal.app saya melihat perilaku aneh, dan saya bertanya-tanya apakah ada orang lain yang melihat hal yang sama atau tahu cara memperbaikinya.
- Ctrl+r
- ketik sesuatu seperti
find
- oh keren, lihat ... itu perintah yang saya inginkan
find . -exec grep -q "hello world" '{}' \; -print
- Saya ingin menjalankan perintah itu tetapi mengubah hello world menjadi sesuatu yang lain.
- Jadi saya tekan ←atau→
- Sekarang perintahnya adalah SORTA pada baris perintah tetapi selalu terlihat seperti beberapa versi perintah yang terpotong, seperti ini:, di
-q "blog_posts_by" '{}' \; -print
mana seluruh perintah ada di sana, dan saya dapat menggunakan tombol kursor untuk bergerak di sekitar baris, tetapi tidak semua itu dicetak. Ada keterputusan antara apa yang ditampilkan pada saluran dan apa yang menurut terminal saya sunting.
Adakah yang tahu mengapa ini bisa terjadi? Bukan fenomena yang mudah untuk mencari di web.
Jawaban:
Anda mungkin memiliki urutan pelarian untuk warna dalam prompt Anda yang tidak dibatasi dengan benar. Mereka harus disertakan dalam
\[
dan\]
.Panjang urutan karakter non-cetak tidak termasuk dalam panjang prompt ketika mereka tertutup dan posisi perintah sebelumnya perlu dihitung untuk tampilan yang tepat ketika mereka membungkus.
sumber
PS1
, tetapi tidak lagi setelah char baris baru di dalam.Ini bisa jadi karena cara kunci melarikan diri dikonfigurasi pada Terminal Anda, apa yang biasanya saya lakukan adalah menggunakan panah kiri atau kanan pada iTerm atau Terminal.app karena saya bukan penggemar memukul kembali segera, apakah itu bekerja untuk Anda ?
sumber
Kemungkinan penyebab lain untuk masalah ini adalah memiliki nilai yang salah
TERM
. Sebagai contoh, ini terjadi pada saya ketika saya menggunakan warna di PS1 saya, tetapi sayaTERM
diatur untukxterm
. Saya mengubahnya menjadixterm-256color
dan kemudian CTRL-r mulai bekerja dengan benar lagi.sumber