vim은 커서와 함께 스크롤하며 특정 수의 줄이 스크롤될 때까지 맨 아래 줄만 이동합니다(gnu 화면에서).

vim은 커서와 함께 스크롤하며 특정 수의 줄이 스크롤될 때까지 맨 아래 줄만 이동합니다(gnu 화면에서).

Vim 문제입니다. 이 문제는 우분투에서 gnu 화면을 열 때, Mac에서 쉘링할 때, 화면 상단 창에서만 발생합니다(하단 창은 제대로 작동합니다). Mac을 켜면 그런 일이 발생하지 않습니다 screen. 화면 안의 화면이 아닙니다. 나는 그것을 설치했다 libncurses5.

징후: 현재 vim 줄 높이가 22줄인 수직 분할 화면을 예로 들어 보겠습니다. 따라서 파일을 열고 커서를 1행으로 이동한 다음 22행까지 아래로 스크롤하면 모든 것이 잘 작동하고 계속해서 아래로 스크롤하면 마지막 행만 변경됩니다(1-21행은 절대 변경되지 않지만 22행은 즉, 정확하게 라인 23이 됩니다). 이는 37행에 도달할 때까지 계속됩니다(예: 1-21행과 37행만 표시됨). 그런 다음 다시 38행으로 스크롤하여 중지하면 2-21행이 표시됩니다(행이 마지막으로 위로 이동했기 때문입니다). 하나), 이제 2~21,37행, 45행이 표시됩니다. 다시 아래로 스크롤하면 3-37,45,46이 표시되고 이 패턴은 파일 맨 아래에 도달할 때까지 반복됩니다.

기본적으로 37,45-65를 표시하려면 36번 아래로 스크롤해야 하며, 다시 아래로 스크롤하면 페이지가 올바르게 표시되어 선형 45-66이 표시됩니다.

1g를 누르면(1행으로 이동) 2-21,36,44가 다시 표시됩니다. 위로 스크롤하면 행 2가 1로 바뀌지 않지만, 1을 아래로 스크롤하면 이제 1,2,4-21,36,44가 표시됩니다.

기본적으로 거기에는 15줄 버퍼가 있습니다.

이것은 GNU 화면에서만 발생합니다.

내가 뭘 한거지:

  • TERM=xterm-256color, ansi, screen-256color 전환, 도움말 없음.
  • .vimrc의 이름을 bak.vimrc로 바꾸면 .vimrc 없이도 계속 발생합니다.

@roaima당신의 의견에 감사드립니다. 그러고보니 48이네요. 이 시점에서 나는 무엇을 바꾸고 싶은가? 이 창에는 Vim 줄 22개만 들어갈 수 있습니다. Vim 설정과 터미널 설정 중 어느 것이 올바르지 않습니까?

$ stty -a
speed 38400 baud; rows 48; columns 190; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O;
min = 1; time = 0;
-parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc ixany imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc

$ echo $LINES
48```

I suspect the whole screen is 48 high, but there is a split pane in the middle.  For the bottom pane vim shows 18 lines (And works correctly also) 

Edit: I do notice that in a correct setup, e.g. when i run my screen layout on the mac, `stty -a` correctly reports `23` rows in screen, and `49` without screen running.  So it seems the lines arent being updated by screen on the ubuntu. 

How would I go about manually setting that in .vimrc, or .screen, or somewhere that it will take affect when I open screen?

답변1

단말기(37)의 회선수 개념이 실제(22)와 다르다. 를 실행하여 원인을 파악할 stty -a수 있습니다 echo $LINES.

잘못된 행 수를 수정하려면 22로 설정하세요.

stty rows 22

echo $LINES나중에 잘못된 전화번호가 계속해서 신고 되면

export LINES=22

두 가지 모두에 대한 대안으로 터미널 드라이버가 행을 올바르게 인식하도록 할 수 있습니다. 이 방법이 작동하면 두 가지 모두 stty -a새로운 echo $LINES수정된 값을 보고합니다.

kill -WINCH $$

관련 정보