
我試圖找出 bash(或 vim)功能是什麼。這是場景。我在 bash 終端機中,然後使用 vim 編輯一些內容,然後退出回到 bash。在某些終端機中,vim 會話畫面消失以顯示先前的 bash shell 活動(這就是我想要的?)。
在其他情況下,vim 會話螢幕緩衝區保留(隱藏舊的 bash shell 活動)。我必須清除螢幕,或等到我的 bash 活動將 vim 會話緩衝區推出螢幕。
我該如何控制此行為以用先前的 bash 活動替換 vim 會話緩衝區?
謝謝蒂姆
答案1
當會話開始和結束時,Vim 會向終端發送t_ti
和。和序列導致終端切換到其備用螢幕。t_ks
t_te
t_ke
t_ti
t_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