Vi
vi編輯器的奇怪關閉
關閉
vi
編輯器後,(不讓它載入整個文件),-bash-3.2$ vi /var/spool/mail/user1 -bash-3.2$ 0;136;0c
留下
0;136;0c
提示,是什麼導致了這種情況,不讓vi
載入內容或它是什麼?
有幾件事讓我無法明確說出原因是什麼:首先,我不知道您使用的是 ,
vim
還是heirloom 。我不知道的第二件事是你是如何關閉的,但我會猜測一下。vile``nvi``vi``vi
據我所知,所有
vi
程序都使用轉義序列來控制螢幕上顯示的內容。也就是說,不是使用視窗系統呼叫來定位游標和寫入文本,而是使用vi
TERM 環境變數的值來找出它必須輸出到哪種終端。根據 TERM 的值,它發送特殊的字節序列,通常或總是以 0x1b、ASCII“ESC”或轉義字元開頭。特殊字節被稱為“轉義序列”。在過去,串列終端的硬體會做一些特殊的事情,比如移動游標,或者改變文本顏色或字型,或者畫線,或者根據這些轉義序列更改為不同的字元集。
vi
據我所知,仍然使用它們。整個轉義序列已被抽象為一個名為“curses”或“ncurses”的庫,C 程序可以使用該庫。我的猜測是,當您關閉時
vi
(可能是通過控制-C 或控制-反斜杠),您vi
正好在輸出一些轉義序列的中間。您看到的是該轉義序列的最後幾個字節。它顯示出來是因為實際的 ASCII“ESC”字節從未得到輸出,或者在 control-C 之前得到輸出,並且終端將 control-C 解釋為轉義序列的一部分。終端認為它解釋的任何轉義序列都比字節序列vi
輸出的短,您會看到預期轉義序列的剩餘部分。