답변:
이미 MinTTY를 사용하고 있었고 PS1에서 줄 바꿈을 제거해도 도움이되지 않았습니다. 이 페이지 에 대한 조언 이 도움이되었습니다. 이 bash 명령을 실행했습니다.
kill -WINCH $$
제 경우에는 이것을 한 번 실행하면 로그 아웃했다가 다시 로그인 한 후에도 문제가 해결되었습니다. 이것이 항상 해당되는지 확실하지 않습니다.
-WINCH
하면 터미널 창 크기가 조정되었음을 bash 프로세스에 알립니다. 따라서 이것은 각 터미널 창의 크기를 조정 한 후에 수행해야합니다.
나에게 해결책은 .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 파일에 $ '.
@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이 열려있는 동안 터미널 크기를 조정했을 것입니다.
이 경우 터미널 크기를 한 번 더 조정하면 문제가 해결됩니다.
TERM
환경 변수 는 무엇으로 설정되어 있습니까? Cygwin 콘솔의 경우이어야합니다cygwin
.