저는 RedHat EL 6 시스템에 최종적으로 액세스하기 위해 일부 Citrix/Windows 가상화를 통해 로그인이 필요한 시스템으로 작업해야 했는데, 여기서 관리자가 고칠 수 없는 매우 이상한 동작에 직면했습니다.
기본적으로 screen 내에서 사용하지 않는 한 둘 다 잘 작동하는 것 같습니다 vi
. vim
화면에 표시된 후 표시되는 초기 콘텐츠 외부로 이동하는 경우(예: 화면이 표시할 수 있는 것보다 긴 파일의 끝이나 중간으로 이동하거나 맨 아래 줄 또는 두 줄까지 아래로 스크롤) 이런 일이 발생하면 터미널 화면 하단에 그려진 "INSERT"를 누르면 모든 내용이 한 줄 위로 올라갑니다. 편집 내용이 작은 경우(즉, 다른 줄에 움직임이 없고 많은 변경 사항이 있는 경우) 일반적으로 문제가 없지만 다시 그려진 내용은 올바르지 않습니다(때때로 vi 자체의 추가 피드백으로 인해 이전 줄이 위로 스크롤되므로 다음과 같은 결과가 발생합니다). 두 줄 가져오기 - INSERT - 줄 또는 기타 텍스트) 그러나 삽입한 후 이리저리 옮기면, 특히 창의 내용을 강제로 스크롤하거나 완전히 그리면 완전히 엉망이 됩니다. 커서를 줄 끝이나 화면에 표시된 내용을 따르지 않는 곳으로 이동하세요.
더욱 실망스러운 점은 이 이상한 시스템에 두 가지 방법으로 액세스할 수 있다는 것입니다. 하나는 터미널 세션(가상화된 IE 브라우저를 통해), 다른 하나는 VNC 데스크톱(동일한 가상화를 통해)을 통해입니다. 안타깝게도 새로 고침 문제와 문자 멈춤(임의의 문자가 수백 번 반복됨)으로 인해 명령줄에서 VNC 데스크탑을 완전히 사용할 수 없습니다. 그러나 이러한 문제에도 불구하고 vi는 화면 내에서 실행됩니다.
두 유형의 vi 세션의 변수를 파일에 덤프했는데 서로 다르지만 어떤 변수가 범인인지 알 만큼 vi에 대해 잘 알지 못합니다.
FWIW, 둘 다 동일한 VIM 7.2.411 바이너리(/bin/vi 여전히 문제가 있음)와 화면 4.00.03을 동일한 시스템에서 사용하고 있습니다.
헬프 데스크 티켓을 제출했을 때 관리자가 최신 버전의 VIM을 설치했는데, 이로 인해 실제로 문제가 덜 심각해졌지만 아주 사소한 변경 사항을 제외하고는 파일 편집에는 여전히 작동하지 않습니다.
답변1
문제는 화면이 터미널 창의 마지막 줄을 하드 상태 줄로 사용하도록 구성되어 있고 screenrc에서 창을 여는 것일 수 있습니다.앞으로하드 상태 표시줄을 구성합니다. 화면 구성에 비슷한 내용이 포함되어 있습니까?
screen 1
# ...
hardstatus alwayslastline "..."
이 경우 screenrc의 screen 명령으로 열린 창은 올바른 행 수로 구성되지 않았습니다. 즉, Hardstatus 행에서 사용되는 행을 고려하지 않습니다. 그러나 다른 창은 괜찮을 것입니다( stty size
screenrc와 다른 창에 의해 열린 초기 창의 출력을 비교하십시오).
이 문제에 대한 버그를 열었습니다.여기. 돌이켜보면 hardstatus 구성 이전의 screen 명령이 이러한 영향을 미쳤을 수도 있지만 사용자 관점에서는 이는 매우 예상치 못한 일이었습니다(많은 구성 파일에는 순서 지정 개념이 없습니다). 또한 이상하게도 다음과 같은 작업을 수행하면:
screen 1
screen 2
screen 3
# ...
hardstatus alwayslastline "..."
창 3만 잘못 구성되었습니다.