Vimの問題です。この問題は、Ubuntuでgnu画面を開くとき、Macでシェルするとき、画面の上部ウィンドウでのみ発生します(下部ウィンドウは正常に動作します)。 Macの電源を入れてもそのようなことは起こりませんscreen
。画面内の画面ではありません。私はそれをインストールしましたlibncurses5
。
兆候: 現在のvim行の高さが22行の垂直分割画面を例にしてみましょう。したがって、ファイルを開いてカーソルを1行に移動してから22行まで下にスクロールすると、すべてがうまく機能し、引き続き下にスクロールすると最後の行だけが変更されます(行1〜21は決して変更されませんが、行22はつまり正確にライン23になります)。これは、37行目に達するまで続きます(たとえば、1行から21行目と37行目のみが表示されます)。その後、38行目にスクロールして停止すると、2〜21行目が表示されます(行が最後に上に移動したため)。 1)、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ですね。この時点で私は何を変えたいですか?このウィンドウには22行のVim行のみを含めることができます。 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 $$