화면 내부의 vi 새로 고침 문제

화면 내부의 vi 새로 고침 문제

결국 RedHat EL 6 시스템에 액세스하려면 일부 Citrix/Windows 가상화를 통해 로그인이 필요한 시스템을 사용해야 하는데, 여기서 관리자가 수정할 수 없는 정말 이상한 동작이 발생합니다.

기본적으로 둘 vivim하나를 화면 내부에서 사용하지 않는 한 둘 다 잘 작동하는 것 같습니다. 화면 내부에 표시된 초기 콘텐츠 외부로 이동하면 삽입 중에 발생하는 심각한 다시 그리기 문제가 있습니다(예: 화면에 표시할 수 있는 것보다 긴 파일의 끝이나 중간으로 이동하거나 줄 아래로 스크롤하거나 둘). 이런 일이 발생하면 터미널 화면 하단에 그려진 -- INSERT --가 모든 항목을 한 줄 위로 밀어냅니다. 편집 내용이 사소한 경우(즉, 이동하지 않고 다른 줄에서 많은 변경을 하는 경우) 일반적으로 문제가 없지만 상황이 잘못 다시 그려집니다(때때로 vi 자체의 추가 피드백으로 인해 이전 줄이 한 줄 위로 스크롤되어 두 줄이 됩니다 -- INSERT -- 행 또는 기타 텍스트) 그러나 삽입 후 이동하면, 특히 창의 내용을 강제로 스크롤하거나 완전히 그리면 완전히 엉망이 됩니다. 커서를 줄 끝으로 이동하거나 화면에 표시된 내용을 따르지 않는 항목으로 이동합니다.

상황을 좀 더 실망스럽게 만들기 위해 이 이상한 시스템은 두 가지 방법으로 액세스할 수 있습니다. 하나는 터미널 세션을 통해(가상화된 IE 브라우저를 통해) 다른 하나는 VNC 데스크톱을 통해(동일한 가상화를 통해) 액세스할 수 있다는 것입니다. 불행하게도 새로 고침 문제와 문자 멈춤(무작위 문자가 수백 번 반복됨)으로 인해 VNC 데스크탑을 명령줄에서 완전히 사용할 수 없습니다. 그러나 이러한 문제에도 불구하고 vi는 화면 내부에서 작동합니다.

두 유형의 vi 세션의 변수를 파일에 덤프했는데 서로 다르지만 어떤 변수가 범인이 될 수 있는지 알 만큼 vi를 잘 알지 못합니다.

FWIW, 둘 다 동일한 VIM 7.2.411 바이너리(/bin/vi에서 문제가 지속됨) 및 화면 4.00.03을 사용하고 있습니다. 둘 다 동일한 시스템에 있습니다.

헬프데스크 티켓을 제출했을 때 관리자는 최신 버전의 VIM을 설치했는데, 이로 인해 실제로는 훨씬 덜 심각해졌지만 아주 사소한 변경을 넘어서는 파일 편집에는 여전히 사용할 수 없습니다.

답변1

문제는 화면이 터미널 창의 마지막 줄을 hardstatus 줄로 사용하도록 구성되어 있고 screenrc에서 창을 여는 것일 수 있습니다.~ 전에hardstatus 라인을 구성합니다. 화면 구성에 이와 같은 내용이 포함되어 있습니까?

screen 1
# ...
hardstatus alwayslastline "..."

이 경우, screenrc의 screen 명령으로 열린 창에는 올바른 행 수가 구성되어 있지 않습니다. 즉, hardstatus 행에서 사용하는 행을 고려하지 않습니다. 그러나 다른 창은 괜찮을 것입니다( stty sizescreenrc에 의해 열린 초기 창과 다른 창의 출력을 비교하십시오 ).


이 문제에 대한 버그를 열었습니다.여기. 돌이켜보면 hardstatus 구성 이전의 screen 명령이 이러한 영향을 미칠 수 있다는 것이 어느 정도 이해가 되지만 사용자 관점에서는 예상치 못한 일입니다(많은 구성 파일에는 순서 지정 개념이 없습니다). 또한 이상하게도 다음과 같은 작업을 수행하면

screen 1
screen 2
screen 3
# ...
hardstatus alwayslastline "..."

창 3만 잘못 구성되었습니다.

관련 정보