Saya baru-baru ini membaca Running Shells di Emacs , dan meluangkan waktu untuk menyesuaikan Zsh prompt saya untuk bekerja dengan kemampuan terbatas M-x shell
dan M-x ansi-term
.
Setelah upaya ini, saya sekarang akhirnya dapat menggunakan Zsh dari dalam Emacs, namun ada — meskipun minor — gangguan M-x ansi-term
. Saya selalu melihat teks yang menyimpang 4m
sebelum prompt.
Seperti yang Anda lihat, fenomena ini tampaknya tidak tergantung dari tema prompt yang sebenarnya. Itu juga muncul dengan salah satu petunjuk bawaan, bahkan yang sederhana yang tidak menggunakan karakter kontrol mewah. Sebagai soal fakta, itu bahkan terjadi dengan prompt default, yaitu jika saya memulai Zsh tanpa saya .zshrc
.
Yah, itu benar-benar hanya gangguan kecil, dan saya tidak akan keberatan jika saya tidak bisa menghilangkannya — saya lebih suka M-x shell
, di mana masalah ini tidak terjadi.
Tapi itu benar-benar mengganggu saya bahwa saya belum dapat menemukan penyebab masalah ini, meskipun saya benar-benar mencoba untuk men-debug itu. Saya harus mengatakan, bahwa pemahaman saya tentang terminal agak terbatas, jadi saya mungkin telah melewatkan yang sangat jelas.
Saya menggunakan OS X 10.10. Emacs saya adalah 25.0.50, dibuat langsung dari bagasi dengan Homebrew, dan tidak ada bendera khusus. Zsh adalah 5.0.5, seperti yang disertakan dengan Yosemite, tetapi masalah ini juga terjadi dengan 5.0.7 diinstal melalui Homebrew.
Adakah yang bisa menjelaskan masalah ini?
system-user-terminfo
tidak mengubah apa pun. Mengubah$TERM
memperbaiki masalah, tetapi itu tidak bisa menjadi solusi, bukan? Bagaimanapun, itu bohong, pada dasarnya:ansi-term
ada xterm, dan pasti tidak mendukung 256 warna.\x1b[37;4m
menentukan warna putih dengan 37 dan teks bergaris bawah dengan 4. Saya tidak dapat mereproduksi masalah Anda. Zsh saya adalah 5.0.7 dan 'echo $ TERM' dalam istilah ansi memberi saya warna eterm , emacs saya adalah 24.4.1 . Saya menguji juga membersihkan versi standar 'env HOME = ~ / tmp / emacstest emacs -Q' dan saya tidak dapat melihat masalah.emacs -Q
dan tanpa konfigurasi Zsh sama sekali.Jawaban:
Rupanya masalah ini disebabkan oleh terminfo yang hilang untuk
eterm-color
. Saya berhasil memperbaiki masalah dengan mengikuti instruksi dalam jawaban itu untuk menginstal entri yang sesuai ke dalam basis data terminfo. Secara khusus:Saya masih tidak yakin mengapa itu diperlukan sama sekali.
term.el
sebenarnya mengekspor$TERMINFO
variabel yang menunjuk ke direktori itu, jadi shell harus dapat menemukan terminfo. Zsh tampaknya mengabaikan direktori, meskipun ...Itu memang terlihat
~/.terminfo
, jadi, perintah di atas membuat entri terminfo tersedia untuk Zsh.Saya akan senang jika ada yang bisa memberikan penjelasan yang lebih baik atau solusi yang tidak memerlukan intervensi manual.
sumber