Saya menggunakan bash prompt Cygwin, dan untuk perintah panjang teks akan membungkus di baris yang sama sebagai lawan pergi ke baris berikutnya meskipun menetapkan PS1 saya hanya '$'.
Ini tangkapan layar,
Saya menggunakan bash prompt Cygwin, dan untuk perintah panjang teks akan membungkus di baris yang sama sebagai lawan pergi ke baris berikutnya meskipun menetapkan PS1 saya hanya '$'.
Ini tangkapan layar,
Jawaban:
Saya sudah menggunakan MinTTY, dan menghapus baris baru di PS1 juga tidak membantu. Satu saran di halaman ini membantu. Saya menjalankan perintah bash ini:
kill -WINCH $$
Dalam kasus saya, menjalankan ini sekali memperbaiki masalah, bahkan setelah logout dan kembali. Saya tidak yakin apakah ini selalu terjadi.
-WINCH
, ini menandakan proses bash bahwa jendela terminal diubah ukurannya. Jadi ini harus dilakukan setelah setiap jendela terminal mengubah ukuran, saya kira.
Bagi saya, solusinya adalah menambahkan baris berikut ke .bashrc:
PS1='\[\e[32m\]\u@\h:\W> \[\e[0m\]'
TERM=cygwin
export PS1
export TERM
Perhatikan bahwa karakter non-printable di prompt harus diapit
\[
... \]
.
Saya memiliki masalah yang sama dengan MinTTY juga. Masalahnya mungkin ada hubungannya dengan prompt utama (PS1).
Solusi bagi saya adalah menghapus karakter 'baris baru' terakhir dari PS1 (tepat sebelum tanda '$'):
user@host ~
$ echo $PS1
\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$
user@host ~
$ export PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\$ '
user@host ~ $
lihat http://cygwin.com/ml/cygwin/2001-07/msg00140.html untuk referensi.
Untuk membuat perubahan ini terus-menerus, tambahkan ekspor PS1 = '[\ e] 0; \ w \ a] \ n [\ e [32m] \ u @ \ h [\ e [33m] \ w [\ e [0m] \ $ 'ke file ~ / .bashrc Anda.
@ jtpereyda ini jawabannya tentu pada sasaran. Tetapi untuk beberapa alasan saya tidak bisa membiarkan ini pergi, dan menggali sedikit lebih dalam.
Memperluas komentar ini , jika Anda mengubah ukuran terminal saat dalam vim (atau aplikasi layar penuh lainnya yang mengendalikan tty menjauh dari shell), hasilnya SIGWINCH
sering tidak dikirim ke shell, jadi ketika kembali kontrol shell tidak tidak tahu bahwa terminal telah diubah ukurannya.
Ketika Anda mengubah ukuran terminal, terminal harus memanggil ioctl(..., TIOCSWINSZ, ...)
master pty yang menjalankan vim. Hal ini pada gilirannya menghasilkan killpg(SIGWINCH)
grup proses on vim.
Masalahnya adalah bahwa vim berjalan dalam grup prosesnya sendiri yang berbeda dari shell yang dijalankannya, sehingga shell bash tidak menerima SIGWINCH
dan tidak menyesuaikan garis / kolomnya dengan tepat.
Jika Anda ingin solusi permanen, tambahkan shopt -s checkwinsize
ke .bashrc
. Itu membuat bash memeriksa ukuran jendela ( ioctl(..., TIOCGWINSZ, ..)
) setelah kembali dari setiap perintah, dan memperbarui baris / kolomnya.
Ada yang rusak di pengaturan terminal Anda (mungkin).
Saya kira Anda sudah mencoba keluar dari sesi itu dan memulai kembali yang baru.
Meskipun Anda tidak mendapatkan solusi untuk terminal Cygwin, cobalah MinTTY (yang sebenarnya lebih baik).
Seperti yang dikomentari oleh akatakritos , Anda mungkin mengubah ukuran terminal saat vim terbuka.
Ketika ini terjadi, ubah ukuran terminal sekali lagi dan masalah hilang.
TERM
variabel lingkungan disetel? Untuk konsol Cygwin, seharusnyacygwin
.