
vim を使用して Unix 画面の外部でファイルを編集すると、vim はファイルを正しく表示します。しかし、Unix画面で同じファイルを開くと、インデントが「めちゃくちゃ」になっているようです。
インデントが実際に正しいので、「〜のようです」と言います(2番目の画像で強調表示されたカーソルが表示されている場合は、実際には正しい行の先頭にあります)。
ここで何が間違っている可能性がありますか?
編集:私のファイルだけでなく、vimメッセージも混乱しているようです。
可能なことをすべて試して、画面コードのCRLFコードも変更しましたが、この問題を取り除くことはできません。ついにtmuxに切り替えましたが、効果はかなり良かったです。
答え1
写真はこのような特徴を示していると思います。布材:
- 色(おそらく)
- カーソルのアドレス指定(何カーソルを正しい位置に移動します)
- タブ(不明:端末がハードウェアタブをサポートしていると主張してもまったくサポートしていない場合、2行目は左マージンから始まります)
しかし、2行目に問題があります。 Vimは中括弧から直下にカーソルを移動し(改行文字を使用)、キャリッジリターン/ラインフィードを取得できます。これでこの空間を説明できます。 vimはこのタイプの最適化を実行します。screen.c
:
else if (plan == PLAN_NL)
{
if (noinvcurs)
screen_stop_highlight();
while (screen_cur_row < row)
{
out_char('\n');
++screen_cur_row;
}
screen_cur_col = 0;
}
あなたのstty
設定は次のとおりですonlcr
。
onlcr (-onlcr)
Map (do not map) NL to CR-NL on output.
これは正常なシャットダウンのようです。設定の1つがstty
vim(またはscreen)を台無しにする可能性があるため、結果は次のようになります。
たとえば、クイックチェックで私はこれをしました(リテラルタブを使用)。
$ stty ocrnl
$ cat >foo
$ cat >foo <<EOF
if(a) {
/*then b */
}
EOF
$ vim foo
そしてこれを見ました(vimが設定によって混同される可能性があるという証拠ocrnl
):
if(a) {
/*then b */
}
しかし(vimを終了して)そして
$ stty -ocrnl
$ vim foo
プログラム
if(a) {
/*then b */
}
価値あるものなら、vi-like-emacsがこの場合に正しいことをします。