Mx ansi-term에서 Zsh 프롬프트가 표시되기 4m 전의 후미


10

나는 최근 에 Emacs에서 Running Shells를 읽고 , 정교한 Zsh 프롬프트를 조정하여 M-x shelland 의 제한된 기능을 사용하도록 시간을 보냈다 M-x ansi-term.

이 노력에 힘 입어 이제 Emacs에서 Zsh를 사용할 수있게되었지만 약간의 노력이 필요합니다 M-x ansi-term. 나는 항상 4m프롬프트 전에 길 잃은 텍스트 를 봅니다 .

프롬프트 전에 텍스트 비틀기

보다시피,이 현상은 실제 프롬프트 테마와 무관 한 것 같습니다. 또한 내장 된 프롬프트, 심지어 멋진 제어 문자를 사용하지 않는 간단한 프롬프트와 함께 나타납니다. 사실, 기본 프롬프트에서도 발생합니다 (예 : my없이 Zsh를 시작하는 경우) .zshrc.

글쎄, 그것은 단지 약간의 성가신 일이며, 그것을 제거 할 수 없다면 정말로 신경 쓰지 않을 것 M-x shell입니다. 어쨌든이 문제가 발생하지 않는 곳을 선호 합니다.

그러나 실제로 디버깅하려고 시도했지만이 문제의 원인을 찾을 수 없었습니다. 그러나 터미널에 대한 나의 이해는 다소 제한적이므로 매우 명백한 부분을 놓쳤을 수도 있습니다.

OS X 10.10에 있습니다. 내 이맥스는 25.0.50이며 Homebrew를 사용하여 트렁크에서 직접 빌드하며 특별한 플래그는 없습니다. Zsh는 Yosemite에 포함 된 5.0.5이지만 Homebrew를 통해 설치된 5.0.7에서도 문제가 발생합니다.

누구나이 문제에 대해 밝힐 수 있습니까?


설정하려고 수출 TERM = xterm을-256color 당신의 .zshrc 나에 (SETQ 시스템-사용-의 terminfo 무기 호) .
kmicu

system-user-terminfo아무것도 바꾸지 않았습니다. 변경 $TERM으로 문제가 해결되었지만 해결책이 될 수 없습니까? 결국, 그것은 본질적으로 거짓말입니다 : ansi-termxterm이 아니며 256 색상을 지원하지 않습니다.
lunaryorn

4m 은 색상을 정의하는 데 사용되는 ANSI 이스케이프 코드의 인공물입니다. 예를 들어 \x1b[37;4m37은 흰색이고 밑줄 친 텍스트는 4입니다. 문제를 재현 할 수 없습니다. 내 zsh을은 5.0.7'는 $ TERM 에코' ANSI 기간에 날 수 있습니다 eterm 색을 내 이맥스는, 24.4.1 . 깨끗한 기본 버전 'env HOME = ~ / tmp / emacstest emacs -Q' 도 테스트 했지만 문제가 없습니다.
kmicu

@kmicu OS X 10.10에서는 emacs -QZsh 구성이 있거나 전혀없는 문제를 일관되게 재현 할 수 있습니다 .
lunaryorn

답변:


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위의 명령은 Zsh에서 terminfo 항목을 사용할 수 있도록합니다.

누군가가 더 나은 설명이나 수동 개입이 필요없는 솔루션을 제공 할 수 있다면 기쁠 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.