在機器中運行 tail -f 和 ssh-ed 時在終端機 (OS X) 中滾動會產生一些奇怪的字符

在機器中運行 tail -f 和 ssh-ed 時在終端機 (OS X) 中滾動會產生一些奇怪的字符

我透過 ssh 連接到遠端電腦並運行tail -f.每次我使用觸控板向上/向下滾動時,都會產生一些奇怪的字符,例如

OB^[OB^[OB^[OB^[OB^[OOB^[OB^[OB^[OB^[OB^[O

以前沒有發生過這種情況,而且它不會讓我向上滾動查看以前的日誌。為什麼會發生這種情況,我該如何停用它?

答案1

TL;DR:檢查選單設定「視圖」->「顯示/隱藏備用畫面」。您可能處於「備用螢幕模式」。或嘗試在滾動時使用 SHIFT 鍵以獲得其他滾動行為。

^[是 Control-leftbracket 的可列印表示形式,也稱為轉義字元。資訊管理平台顯示這^[OB是向下箭頭鍵的 xterm 轉義序列(^[OA是向上箭頭序列)。終端模擬 xterm 並將滑鼠滾動轉換為箭頭鍵序列。

我發現了一些過去在終端機中使用滑鼠的討論:

但它們都是關於 OSX 的早期版本,隨著時間的推移,終端在這方面似乎已經發生了變化。本文討論了它在 Yosemite 中的工作原理,但在技術細節上有點缺乏。其餘的內容是我在優勝美地使用終端時發現的。

終端機有兩種處理滑鼠滾動的模式:

  1. 在一種模式下,滾動會導致終端滾動視口,因此您可以看到終端的回滾緩衝區(已滾動到螢幕頂部的行)。當您捲動終端時,您會看到一個 OSX 捲軸。
  2. 在另一種模式下,滾動導致終端發送向上箭頭和向下箭頭序列。終端機中運行的程式有望能夠處理它們。

您可以透過在滾動時按住 SHIFT 來臨時在模式之間切換。例如,當終端顯示命令提示字元時,捲動將滾動終端窗口,而 Shift-scroll 將滾動瀏覽 bash 命令歷史記錄。

終端還提供了一項稱為備用螢幕。像是vim或 之類的全螢幕程式less可以將終端切換到備用螢幕以顯示自己的內容。當您退出此類程式時,終端會切換回主畫面。我提到這一點是因為終端的滾動行為可以在備用螢幕上改變。

通常,第一個滾動行為是主要行為,您必須按 SHIFT 才能獲得第二個行為。但是轉到終端->首選項->設定檔->鍵盤。底部是一個標記為“滾動備用螢幕”的複選框。如果選取該框,則滾動行為將在備用螢幕上反轉。選取後,第二個滾動行為將成為備用螢幕的預設行為,並且您必須按 SHIFT 才能獲得第一個行為。

例如,在命令列中,滾動滑鼠可讓您看到終端的回滾緩衝區。但開始vim編輯檔案時,它會切換到備用螢幕,然後突然滾動滑鼠移動遊標。這就是你在 vim 中想要的。

解決您的問題,聽起來您的終端機正在顯示備用螢幕。有一個選單選項可以切換(檢視->顯示/隱藏備用畫面)。或者您正在運行的某些操作正在將終端置於備用螢幕模式。也許你正在使用screentmux類似的東西?作為解決方法,您可以嘗試使用 SHIFT 鍵來獲得所需的滾動行為。或者您可以取消選取該複選框。

答案2

我將終端仿真從 xterm-256color 更改為 vt100。我在首選項 => 設定檔 => 高級「將終端聲明為:」下拉清單中執行此操作。

相關內容