Бродячий трейлінг за 4 м до підказок із Zsh в Mx ansi-term


10

Нещодавно я читав Запуск оболонок в Emacs і витрачаю деякий час, щоб адаптувати мій продуманий підказку Zsh для роботи з обмеженими можливостями M-x shellі M-x ansi-term.

Після цих зусиль я тепер нарешті зможу використовувати Zsh з Emacs, однак є - хоч і незначна - неприємність M-x ansi-term. Я завжди бачу бродячий текст 4mперед підказкою.

Текст бродячого перед підказкою

Як бачимо, це явище, здається, не залежить від актуальної теми підказок. Він також відображається з будь-якими вбудованими підказками, навіть простими, у яких не використовуються будь-які фантазійні контрольні символи. Власне, це навіть трапляється із запитом за замовчуванням, тобто якщо я запускаю Zsh без мого .zshrc.

Ну, це насправді лише незначна неприємність, і я не мав би зовсім проти, якби не зміг її позбутися - я в основному віддаю перевагу в M-x shellбудь-якому випадку, де це питання не виникає.

Але мене це справді дратує, що мені не вдалося знайти причину цієї проблеми, хоча я справді намагався її налагодити. Треба сказати, хоча, що моє розуміння терміналів досить обмежене, тому я, можливо, пропустив дуже очевидне.

Я в ОС X 10.10. Мій Emacs становить 25,0,50, створюйте прямо з магістралі з домашньою мовою, а спеціальних прапорів немає. Zsh становить 5,0,5, як і Yosemite, але ця проблема також виникає з 5.0.7, встановленим через Homebrew.

Чи може хтось пролити світло на це питання?


Спробуйте встановити експорт TERM = xterm-256color у своєму .zshrc або (setq system-use-terminfo nil) .
kmicu

system-user-terminfoнічого не змінив. Зміна $TERMвиправлена ​​проблема, але це не може бути вирішенням, чи не так? Зрештою, це брехня, по суті: ansi-termне xterm і, безумовно, не підтримує 256 кольорів.
місячник

4m - артефакт з коду втечі ANSI, який використовується для визначення кольору, наприклад, \x1b[37;4mвизначає білий колір з 37, а підкреслений текст - 4. Я не можу відтворити вашу проблему. Мій zsh - 5.0.7, а "echo $ TERM" в ansi-терміні надає мені eterm color , мій emacs - 24.4.1 . Я перевіряв також чисту версію за замовчуванням 'env HOME = ~ / tmp / emacstest emacs -Q', і я не бачу проблем.
kmicu

@kmicu На OS X 10.10 я можу послідовно відтворювати проблему з emacs -QZsh і зовсім не мати її конфігурацію.
місячник

Відповіді:


10

Мабуть, ця проблема викликана відсутністю терміна для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.

Буду радий, якщо хтось міг би дати кращі пояснення чи рішення, яке не потребує втручання вручну.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.