如何讓shell像Vim一樣退出全螢幕進程後回到上一行

如何讓shell像Vim一樣退出全螢幕進程後回到上一行

我連接到Z-殼在 Red Hat Enterprise Linux 6.2 機器上透過油灰。當我在 Unix shell 中退出全螢幕進程(例如 Vim 和 less)後,shell 提示字元將從螢幕的最後一行開始。上面的畫面仍然顯示該進程的上下文,因此我丟失了在打開該進程之前 shell 顯示的所有內容。

這種情況不會發生在我自己的 Ubuntu 盒子中,在退出進程後,我回到了我輸入的最後一個命令下方的行。

我可以更改哪些選項(也許在zshrc?)以使其表現得像我的 Ubuntu 盒子?

答案1

我也見過這個問題。檢查「終端機」->「功能」下的 PuTTY 設定。如果選取“停用切換到備用終端螢幕”,請取消選取它。 (我在該頁面上的所有設定都未選中。)該選項的幫助看起來很有希望。

如果失敗的話,這一頁我透過谷歌搜尋發現可能會給你一些想法。您也許可以設定一些 terminfo 內容以使其正常運作。

答案2

很久以前解決這個問題後,我遇到了類似的問題,Vim 沒有這個問題,但less有。這也影響了所有使用的程序less,例如man.我發現原因是環境變量,它列出了每當調用它時LESS自動傳遞的參數。導致此問題less的選項LESS-X

-X或者--no-init

禁止將 termcap 初始化和取消初始化字串傳送到終端。如果去初始化字串執行一些不必要的操作(例如清除螢幕),有時這是可取的。

我也從中學到了Unix 和 Linux – “less --quit-if-one-screen沒有--no-init如果禁用-X/ --no-init,則也必須停用-F/ --quit-if-one-screen(如果已設定)。

若要進行修復less,使其始終在退出時恢復螢幕,請變更LESS對應 shell 初始化檔案中的值。這將.bashrc適用於 Bash、.zshenvZsh 和.config/fish/config.fishFish。向此文件添加命令export LESS='<all the flags you want, without -X or -F>', 或set -gx LESS <flags>對於fish。您可以預先執行以查看要複製到/語句echo $LESS中的現有標誌。exportset

答案3

我想到了!我所要做的就是設定$TERMxterm.它曾經是linux

export TERM=xterm 

感謝您的連結和提示,大衛!

相關內容