Mengapa CTRL-r bertindak aneh (hanya menampilkan sebagian dari perintah) pada OS X

10

Ctrl+ radalah alat kecil yang hebat untuk mencari .bash_historyperintah 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.

  1. Ctrl+r
  2. ketik sesuatu seperti find
  3. oh keren, lihat ... itu perintah yang saya inginkan find . -exec grep -q "hello world" '{}' \; -print
  4. Saya ingin menjalankan perintah itu tetapi mengubah hello world menjadi sesuatu yang lain.
  5. Jadi saya tekan atau
  6. Sekarang perintahnya adalah SORTA pada baris perintah tetapi selalu terlihat seperti beberapa versi perintah yang terpotong, seperti ini:, di -q "blog_posts_by" '{}' \; -printmana 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.

bryan kennedy
sumber
Apakah ini hanya terjadi pada garis yang lebih panjang daripada lebar jendela istilah Anda?
Essobi
Versi Terminal.App/OSX apa yang Anda jalankan BTW? Versi bash? Bisakah Anda menunjukkan kepada kami .bashrc Anda juga?
Essobi

Jawaban:

14

Anda mungkin memiliki urutan pelarian untuk warna dalam prompt Anda yang tidak dibatasi dengan benar. Mereka harus disertakan dalam \[dan \].

PS1='\[\033[1;36m\]\u\[\033[0m\]@\[\033[1;34m\]\h\[\033[0m\]\$ `

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.

Dijeda sampai pemberitahuan lebih lanjut.
sumber
OK, saya punya beberapa masalah lagi, yang diselesaikan oleh penjawab di atas thread StackOverflow ini - stackoverflow.com/questions/35563/…
bryan kennedy
Ini berlaku untuk baris baru di prompt juga. Saya memiliki urutan kontrol hicolor turun karena itu pada awal PS1, tetapi tidak lagi setelah char baris baru di dalam.
Walf
0

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 ?

lynxman
sumber
0

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 saya TERMdiatur untuk xterm. Saya mengubahnya menjadi xterm-256colordan kemudian CTRL-r mulai bekerja dengan benar lagi.

Tony
sumber