Shell

OS X 終端行不進入回滾

  • January 2, 2018

我在使用 Mac OS X 的終端 (TERM=xterm) 時遇到了一個問題:有時它會進入一種狀態,即從頂部滾動的行不會添加到回滾緩衝區。我沒有使用screen或類似的;這是終端選項卡內的普通 bash shell。

打開新標籤後,它不會立即執行此操作。我相信這是我在問題選項卡中執行的東西的副作用。我的猜測是它與 xterm 仿真有關,可能與滾動區域有關。

什麼沒有奏效:

  • 通過 Shell 菜單進行軟復位和硬復位
  • reset在選項卡中執行

是否有可靠的方法來重置終端和/或 xterm 狀態?

任何人都可以解釋發生了什麼,即使唯一的解決方法是關閉選項卡並打開一個新選項卡?

這意味著終端正在使用備用螢幕緩衝區。有一個主螢幕可以滾動到回滾日誌,而另一個螢幕則不能。“全屏”或“面向螢幕”的程序,如 top、less、emacs、vim 和 screen 預設情況下會將終端切換到備用螢幕。

每個螢幕都有自己的內容和狀態。擁有一個備用螢幕使程序能夠接管整個顯示,然後在退出時通過切換回主螢幕來恢復以前的內容。

從 Mac OS X Lion 10.7 開始,終端有一個菜單項可用於手動切換螢幕:

查看 > 顯示/隱藏備用螢幕

這主要是為了讓您可以在“全屏”程序退出後從備用螢幕查看或複製文本。Xterm 也有類似的命令。

例如,您還可以使用它來手動強製程序使用特定螢幕,以控制輸出是否進入回滾日誌。但是,如果您目前正在使用顯式切換到備用螢幕的程序,如果在程序執行時將其強制切換到主螢幕,您可能會混淆它或得到意想不到的結果,因此請謹慎使用。

根據程序的不同,它可能有一個命令行參數或其他方式來配置它以使用主螢幕。例如,less -X

某些 terminfo 條目專門設計用於禁止使用備用螢幕,例如xterm1. TERM=xterm1 emacs將在主螢幕上執行 Emacs。我不建議永久使用,因為與Lionxterm1上的預設設置相比,它禁用了許多其他有用的功能。xterm-256color

您還可以使用tput命令切換螢幕以從外殼或腳本內部發出轉義序列。tput smcup切換到備用螢幕,然後tput rmcup切換回主螢幕。

要查看目前正在執行的程序,請查看終端視窗或選項卡標題中顯示的程序名稱,或查看檢查器視窗(Shell > Show Inspector)。Inspector 列表中的最後一個程序(通常)是目前使用螢幕的程序。那是您需要配置為使用主螢幕的那個。

引用自:https://serverfault.com/questions/122650