Cygwin bash 프롬프트는 같은 줄에 줄을 바꿉니다. 있으며 긴

Cygwin bash 프롬프트를 사용하고 있으며 긴 명령의 경우 PS1을 단순히 ‘$’로 설정하더라도 다음 줄로가는 것과는 달리 동일한 줄에서 텍스트가 줄 바꿈됩니다.

스크린 샷이 있습니다.
스크린 샷



답변

이미 MinTTY를 사용하고 있었고 PS1에서 줄 바꿈을 제거해도 도움이되지 않았습니다. 이 페이지 에 대한 조언 도움이되었습니다. 이 bash 명령을 실행했습니다.

kill -WINCH $$

제 경우에는 이것을 한 번 실행하면 로그 아웃했다가 다시 로그인 한 후에도 문제가 해결되었습니다. 이것이 항상 해당되는지 확실하지 않습니다.


답변

나에게 해결책은 .bashrc에 다음 줄을 추가하는 것이 었습니다.

PS1='\[\e[32m\]\u@\h:\W> \[\e[0m\]'
TERM=cygwin
export PS1
export TERM

프롬프트에서 인쇄 할 수없는 문자는 \[… 로 묶어야합니다
\].


답변

MinTTY에서도 같은 문제가있었습니다. 문제는 아마도 기본 프롬프트 (PS1)와 관련이있을 수 있습니다.

나를위한 해결책은 PS1에서 마지막 ‘새 줄’문자를 제거하는 것입니다 ( ‘$’기호 바로 앞) :

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 ~ $

참조 http://cygwin.com/ml/cygwin/2001-07/msg00140.html을 참조.

이 변경 사항을 영구적으로 유지하려면 내보내기 PS1 = ‘[\ e] 0; \ w \ a] \ n [\ e [32m] \ u @ \ h [\ e [33m] \ w [\ e [0m] \ ~ /.bashrc 파일에 $ ‘.


답변

dregadak2가 언급 했듯이export TERM=cygwin~/.bashrc파일 설정 은 이 문제를 해결하기에 충분합니다.


답변

@jtpereyda의 대답 은 확실히 표시에 있습니다. 그러나 어떤 이유로 나는 이것을 놓을 수 없었고 조금 더 깊이 파고 들었습니다.

이 주석을 확장 하면 vim (또는 쉘에서 tty를 제어하는 ​​다른 전체 화면 응용 프로그램)에서 터미널의 크기를 조정하면 결과 SIGWINCH가 종종 쉘로 전송 되지 않으므로 다시 제어 할 때 제어하지 않습니다. 터미널의 크기가 조정되었음을 알 수 없습니다.

터미널 크기를 조정할 때 ioctl(..., TIOCSWINSZ, ...)vim이 실행중인 마스터 pty 에서 on을 호출해야합니다 . 결과적으로 killpg(SIGWINCH)on vim의 프로세스 그룹이 생성됩니다.

문제는 vim이 실행 된 쉘과는 다른 자체 프로세스 그룹에서 실행되므로 bash 쉘은 SIGWINCH라인 / 컬럼을 수신 하지 않고 적절히 조정하지 않습니다.

영구적 인 해결 방법을 원하면에 추가 shopt -s checkwinsize하십시오 .bashrc. 그러면 bash ioctl(..., TIOCGWINSZ, ..)는 각 명령에서 돌아온 후 창 크기 ( )를 확인하고 해당 행 / 열을 업데이트합니다.


답변

터미널 설정에 문제가있을 수 있습니다 (아마도).
이미 세션을 종료하고 새 세션을 다시 시작하려고 시도했을 것입니다.

Cygwin 터미널에 대한 솔루션을 얻지 못했지만 MinTTY 를 사용해보십시오 (실제로는 더 좋습니다).


답변

akatakritos가 언급 했듯이 vim이 열려있는 동안 터미널 크기를 조정했을 것입니다.

이 경우 터미널 크기를 한 번 더 조정하면 문제가 해결됩니다.