2011-05-18 56 views
4

當前,當我在屏幕內的終端窗口中啓動vi時,vi程序會佔用整個屏幕並覆蓋出現的任何輸出歷史記錄,然後在退出時保留在那裏。因此,稍後通過終端輸出回滾時,vi窗口下的輸出將被屏蔽。如何阻止VI重疊並隱藏命令行輸出的最後一頁?

我目前各地這方面的工作,在我的.bashrc以下別名...

alias vi='for i in $(seq 1 $LINES); do echo ; done ; vi'

這工作得很好,到目前爲止,但它給我的印象是一種缺憾,我擔心我我會在某個時候遇到一個無法預料的情況,這會讓我失望。我想知道是否有vi或屏幕的命令選項或其他一些更簡單,更高效的實現方法。

謝謝。

回答

6

如果使用GNU屏幕,在您的.screenrc以下行應該解決的問題:

altscreen on 

這將確保你退出後六舊的內容被恢復,並且不會弄亂你的回滾歷史了。

+0

謝謝,這個工程的清理退出時(在vi窗口類似,它是如何工作的時候不使用GNU屏幕)。 – Costa 2011-05-18 20:09:11

+0

感謝這個作品。唯一的問題是它仍然覆蓋vi打開時的輸出歷史記錄(如果您使用鼠標滾輪進行平移)。解決這個問題的方法之一是使用ctrl + z將vi發送到後臺,以便查看終端輸出,然後在想要返回時查看fg。其他解決方案? – 2015-05-29 15:15:33

2

嘗試將set t_ti= t_te=添加到.vimrc文件中。

要修復較少,也出現此行爲,請在您的.bashrc文件中設置export LESS=-X

注:有些終端如urxvt能夠與這樣的設置在全球範圍解決這一問題對所有的ncurses程序:urxvt*secondaryScreen: false

+0

爲什麼LESS環境變量會影響Vi? – 2011-05-18 19:15:21

+0

@Adam:我正在回答錯誤的問題。我看到並注意到了GNU屏幕的修復。對於某些終端(例如我使用的終端),這種修復也存在於屏幕之外,請參閱我編輯的答案。程序通常可以在自己的配置中逐個修復。 – Caleb 2011-05-18 19:21:15

+0

你是英雄。一直在尋找't_ti'和't_te'一個多小時。解決了我的問題(雖然不完全與這個問題有關)。謝謝! – elslooo 2016-07-05 23:04:24