退出後如何用先前的 bash 活動取代 vim 螢幕緩衝區?

退出後如何用先前的 bash 活動取代 vim 螢幕緩衝區?

我試圖找出 bash(或 vim)功能是什麼。這是場景。我在 bash 終端機中,然後使用 vim 編輯一些內容,然後退出回到 bash。在某些終端機中,vim 會話畫面消失以顯示先前的 bash shell 活動(這就是我想要的?)。

在其他情況下,vim 會話螢幕緩衝區保留(隱藏舊的 bash shell 活動)。我必須清除螢幕,或等到我的 bash 活動將 vim 會話緩衝區推出螢幕。

我該如何控制此行為以用先前的 bash 活動替換 vim 會話緩衝區?

謝謝蒂姆

答案1

當會話開始和結束時,Vim 會向終端發送t_ti和。和序列導致終端切換到其備用螢幕。t_kst_tet_ket_tit_te

在您的~/.vimrc文件中,您可以vim透過包含以下行來使文件退出時保留在螢幕上:

set t_ti=""

如果您有類似的行,刪除它應該會使您退出時出現先前的終端內容vim

答案2

只需在文件中新增一行即可~/.bash_profile在每次登入時將 TERM 匯出為 xterm。執行如下操作;

echo "TERM=xterm; export TERM" >> ~/.bash_profile

現在,下次您登入時,您的問題將得到解決,如果您不想重新登錄,您可以執行以下操作之一...

// either ...
export TERM=xterm
// ... or ...
TERM=xterm; export TERM
// ... or ...
source ~/.bash_profile

答案3

導致此問題的原因可能是使用該程式screen。我發現當我處於screen會話中時 vim 無法返回終端狀態。

不確定它是否特定於 Ubuntu 15.10 中的螢幕或螢幕/vim 組合。與上面描述的原因相同,我猜screen有不同的 termcap。

答案4

提姆.上述兩個答案都是正確的。如果 $TERM 的 termcap 條目中定義了執行此操作的功能,則 Vim 將終端切換到「備用螢幕」。

您說“在某些終端機中(...它工作正常...)”和“在其他終端中(...它工作錯誤...)”

您是否為所有這些終端運行完全相同的終端模擬器?

例如,在我的家用 Linux 機器上,我有 gnome-terminal、xterm、Konsole、yakuake,可能還有一些我已經忘記的,以及與 ctrl-alt-F1 相關的「虛擬終端」... ctrl-alt -F6 左右。其中大多數可以與“xterm”的“標準”termcap 條目一起使用 - 除了具有名為“linux”的終端定義的虛擬終端。

檢查終端模擬器本身以及工作終端和不工作終端上的 $TERM 值,看看有什麼不同。另外,如果您有時以不同的用戶身份登錄,這可能是問題的核心 - 因為每個用戶都有自己的 .bashrc ,因此不同的用戶設定可能有所不同。

希望有幫助!
-pbr

相關內容