Perilaku aneh di Terminal dengan custom .bash_profile

8

Sulit untuk menggambarkan perilakunya, tetapi inilah klip singkatnya:

http://www.youtube.com/watch?v=9KqHBA94FPI

Pada dasarnya, ketika memasukkan perintah multi-baris, pada akhir baris pertama, blok penyisipan kembali ke awal baris pertama, menulis di atas baris pertama, kemudian melanjutkan seperti biasa ke baris kedua, ketiga, dll. . Ketika menghapus, ini memungkinkan saya untuk menghapus seluruh perintah, ditambah ruang kosong pada baris di atas perintah (saya memilikinya setup sehingga perintah dimasukkan setelah baris yang berisi informasi pengguna @ host / Direktori. Bahkan kemudian memungkinkan saya untuk menghapus bagian terakhir dari Direktori dan host yang saya jelaskan di atas. Maaf saya tidak bisa menjelaskan ini, videonya akan melakukan pekerjaan yang lebih baik.

Berikut adalah isi .bash_profile saya:

export PS1="\e[31m\u\e[0m@\e[34m\h\e[33m\w\n \$ \e[0m "
Blair Beckwith
sumber

Jawaban:

12

Anda harus mengelilingi karakter non-cetak Anda (dalam hal ini, urutan melarikan diri ANSI Anda) dengan urutan melarikan diri bash: \[dan \]. Dengan cara itu bash akan tahu karakter terlampir tidak terlihat, yaitu. mereka tidak mengambil ruang, yaitu. mereka tidak harus dimasukkan dalam perhitungan panjang kata yang digunakan oleh pembungkus baris.

dengan kata lain ubah PS1definisi Anda :

export PS1="\e[31m\u\e[0m@\e[34m\h\e[33m\w\n \$ \e[0m "

… Untuk:

export PS1="\[\e[31m\]\u\[\e[0m\]@\[\e[34m\]\h\[\e[33m\]\w\n \$ \[\e[0m\] "

Dan di sini PS1nilainya sama , hanya untuk membaca manusia, dengan kemungkinan keterbacaan yang lebih baik (ANSI-lolos di baris bawah, bash lolos di tengah dan mencetak karakter di baris atas.)

          \u          @          \h          \w\n \$
\[      \]  \[     \] \[      \]  \[      \]        \[     \] 
  \e[31m      \e[0m     \e[34m      \e[33m            \e[0m    

Bacaan lebih lanjut:

Jari Keinänen
sumber
Ini sempurna, memecahkan masalah saya. Terima kasih banyak atas bantuannya!
Blair Beckwith
Blair, selamat datang di Ask Different! Jika Anda menyukai jawaban untuk pertanyaan Anda, harap angkat dan terima.
nohillside
0

Saya semuanya,

Saya memiliki masalah yang sama dan saya menemukan solusi hanya dengan mengubah variabel PS1 saya dari yang asli ke yang sangat sederhana, hanya namaku sebenarnya: export PS1 = Alex

Sekarang terminal saya tidak memiliki perilaku aneh lagi.

Semoga ini bisa membantu.

Alex (di Mac Lion 10.8)

pengguna43414
sumber