Terminal
vim inside screen:縮進顯示不正確
當我在 unix 螢幕外使用 vim 編輯文件時,vim 會正確顯示文件。但是,當我在 unix 螢幕中打開同一個文件時,縮進“似乎”變得凌亂。
我說“似乎”是因為縮進實際上是正確的(如果您在第二張圖像中看到突出顯示的游標,它實際上位於正確的行首)
這裡可能是什麼問題?
編輯:不僅是我的文件,甚至 vim 消息似乎也很混亂 我已經嘗試了所有可能的方法,還在螢幕程式碼中更改了 CRLF 的程式碼,但無法擺脫這個問題。最後切換到tmux,效果很好。
圖片似乎顯示這些功能正常工作:
- 顏色(也許)
- 游標定址(將游標移動到正確的位置)
- 選項卡(未知:如果聲稱終端支持硬體選項卡但根本不支持,則第二行將從左邊距開始)
但是第二行是問題所在。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.
這似乎是正常關閉。您的其中一項
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 在這種情況下做了正確的事情。