หลงทาง 4m ก่อนพร้อมท์ด้วย Zsh ใน Mx และคำ


10

ฉันเพิ่งอ่านเล่นหอยใน Emacsและใช้เวลาในการปรับตัวเข้ากับที่ซับซ้อน zsh ฉันพร้อมที่จะทำงานร่วมกับความสามารถที่ จำกัด ของและ M-x shellM-x ansi-term

ต่อไปนี้ความพยายามนี้ฉันตอนนี้ในที่สุดก็สามารถที่จะใช้ zsh จากภายใน Emacs M-x ansi-termแต่มีข้อแม้ว่า-รองรำคาญด้วย ฉันมักจะเห็นข้อความหลงทาง4mก่อนแจ้ง

ข้อความหลงทางก่อนแจ้ง

อย่างที่คุณเห็นปรากฎการณ์นี้ดูเหมือนจะเป็นอิสระจากธีมพรอมต์ที่เกิดขึ้นจริง นอกจากนี้ยังปรากฏขึ้นพร้อมกับการแจ้งเตือนในตัวแม้แต่ตัวง่าย ๆ ที่ไม่ใช้ตัวควบคุมแฟนซีใด ๆ เป็นเรื่องของความเป็นจริงมันก็เกิดขึ้นกับการเริ่มต้นพร้อมรับคำเช่นถ้าฉันจะเริ่มต้นโดยไม่ต้อง zsh .zshrcของฉัน

มันเป็นเรื่องเล็กน้อยที่สร้างความรำคาญและฉันก็ไม่คิดอะไรเลยถ้าฉันไม่สามารถกำจัดมันได้ - ฉันชอบเป็นส่วนใหญ่M-x shellซึ่งปัญหานี้ไม่ได้เกิดขึ้น

แต่มันทำให้ฉันรำคาญจริงๆที่ฉันไม่สามารถหาสาเหตุของปัญหานี้ได้แม้ว่าฉันจะพยายามแก้ไขข้อบกพร่องนั้นจริงๆ ฉันต้องบอกว่าความเข้าใจของฉันเกี่ยวกับอาคารค่อนข้าง จำกัด ดังนั้นฉันอาจจะพลาดจุดที่เห็นได้ชัดเจน

ฉันใช้ OS X 10.10 Emacs ของฉันคือ 25.0.50 สร้างจากลำต้นด้วย Homebrew และไม่มีธงพิเศษ Zsh คือ 5.0.5 ซึ่งมาพร้อมกับ Yosemite แต่ปัญหายังเกิดขึ้นกับ 5.0.7 ที่ติดตั้งผ่าน Homebrew

ใครสามารถทำให้กระจ่างเกี่ยวกับปัญหานี้?


พยายามที่จะตั้งการส่งออกระยะ = xterm-256colorใน .zshrc ของคุณหรือ(setq ระบบใช้-terminfo ไม่มี)
kmicu

system-user-terminfoไม่ได้เปลี่ยนแปลงอะไรเลย การเปลี่ยน$TERMแก้ไขปัญหา แต่ไม่สามารถแก้ไขได้ใช่ไหม ansi-termท้ายที่สุดมันเป็นการโกหกโดยหลักแล้วคือไม่มี xterm และแน่นอนไม่สนับสนุน 256 สี
Lunaryorn

4mเป็นสิ่งประดิษฐ์จากรหัสหลบหนี ANSI ที่ใช้สำหรับกำหนดสีเช่น\x1b[37;4mระบุสีขาวด้วย 37 และข้อความที่ขีดเส้นใต้ด้วย 4 ฉันไม่สามารถทำซ้ำปัญหาของคุณได้ zsh ของฉันคือ5.0.7และ'echo $ TERM'ใน ANSI ระยะให้ฉันEterm สี , emacs ของฉันคือ24.4.1 ฉันได้ทดสอบเวอร์ชันเริ่มต้นที่สะอาดแล้ว'env HOME = ~ / tmp / emacstest emacs -Q'และฉันไม่เห็นปัญหาใด ๆ
kmicu

@kmicu บน OS X 10.10 ฉันสามารถทำซ้ำปัญหาได้อย่างต่อเนื่องโดยemacs -Qไม่มีการกำหนดค่า Zsh เลย
จันทร์ที่

คำตอบ:


10

เห็นได้ชัดว่าปัญหานี้เกิดจากการขาดหายไปสำหรับ terminfo eterm-colorฉันจัดการเพื่อแก้ไขปัญหาโดยทำตามคำแนะนำในคำตอบนั้นเพื่อติดตั้งรายการที่เหมาะสมลงในฐานข้อมูล terminfo โดยเฉพาะ:

$ tic -o ~/.terminfo /usr/local/share/emacs/25.0.50/etc/e/eterm-color.ti

ฉันยังไม่แน่ใจว่าทำไมถึงเป็นสิ่งจำเป็น term.elจริง ๆ แล้วส่งออก$TERMINFOตัวแปรชี้ไปยังไดเรกทอรีนั้นดังนั้นเชลล์ควรจะสามารถค้นหา terminfo Zsh ดูเหมือนจะไม่สนใจไดเรกทอรีแม้ว่า ...

มันดูที่~/.terminfoดังนั้นคำสั่งด้านบนทำให้รายการ terminfo พร้อมใช้งานสำหรับ Zsh

ฉันจะดีใจถ้าใครสามารถให้คำอธิบายที่ดีขึ้นหรือวิธีการแก้ปัญหาที่ไม่ต้องการการแทรกแซงด้วยตนเอง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.