vi 画面内の更新の問題

vi 画面内の更新の問題

最終的に RedHat EL 6 システムにアクセスするには、Citrix/Windows 仮想化を介したログインを必要とするシステムを使用する必要がありますが、管理者が修正できない非常に奇妙な動作が発生しています。

基本的に、viどちらvimも画面内で使用しない限り、正常に動作するようです。画面内に入ると、最初に表示された内容の外側に移動すると (つまり、画面に表示できるよりも長いファイルの最後または途中に移動するか、一番下から 1 行か 2 行下までスクロールすると)、挿入中に重大な再描画の問題が発生します。この問題が発生すると、端末画面の下部に描画される -- INSERT -- によって、すべてが 1 行上に押し上げられます。編集が軽微な場合 (つまり、移動せずに異なる行に多くの変更を加える)、通常は問題ありませんが、再描画が間違っています (vi 自体からの追加フィードバックによって前の行が 1 行上にスクロールされるため、2 つの -- INSERT -- 行、またはその他のテキストが表示されることがあります)。ただし、挿入後に移動すると (特にウィンドウの内容を強制的にスクロールまたは完全に描画する場合)、完全に混乱します。カーソルを行末などに移動しても、画面に表示されている内容には従いません。

さらにイライラさせられるのは、この奇妙なシステムには 2 つの方法でアクセスできることです。1 つはターミナル セッション経由 (仮想化された IE ブラウザー経由)、もう 1 つは VNC デスクトップ経由 (同じ仮想化経由) です。残念ながら、VNC デスクトップは、更新の問題や文字のスタック (ランダムな文字が何百回も繰り返される) のため、コマンド ラインではまったく使用できません。しかし、これらの問題にもかかわらず、vi は画面内で動作します。

両方のタイプの vi セッションから変数をファイルにダンプしましたが、それらは異なっていますが、どの変数が原因であるかを判断できるほど vi をよく知りません。

ちなみに、両方とも同じVIM 7.2.411バイナリ(/bin/viでは問題が継続)とscreen 4.00.03を使用しています。両方とも同じマシン上にあります。

ヘルプデスクのチケットを提出すると、管理者が VIM の新しいバージョンをインストールし、実際には問題が大幅に軽減されましたが、非常に小さな変更以外のファイルの編集にはまだ使用できません。

答え1

問題は、端末ウィンドウの最後の行をハードステータス行として使用するように画面が設定されていて、screenrcでウィンドウを開いていることにある可能性があります。前にハードステータス ラインの構成。画面構成に次のような内容が含まれていますか?

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

この場合、screenrc の screen コマンドによって開かれたウィンドウには、正しい行数が構成されていません。つまり、hardstatus 行で使用される行が考慮されていません。ただし、他のウィンドウは問題ないはずです ( stty sizescreenrc によって開かれた初期ウィンドウと他のウィンドウの出力を比較してください)。


この問題に関してバグを報告しましたここ振り返ってみると、hardstatus 設定の前の screen コマンドがこの効果をもたらすことはある程度理にかなっていますが、ユーザーの観点からするとかなり予想外です (多くの設定ファイルにはシーケンスの概念がありません)。また、奇妙なことに、次のようなことをすると:

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

ウィンドウ 3 のみが正しく構成されていません。

関連情報