第8章 終端機模擬器 - 細說 xterm
xterm 是終端機模擬器 - 它是一個可以使X應用程式視窗看起來像普通終端機一樣的程式, 而無需知道有關視窗系統的功能. 我們已經使用過 xterm的一小部分, 在本章中將更深入地探討它所提供的特殊額外功能. 並且說明許多X程式共通的一些應用程式介面的面貌.
xterm 模擬一個 "啞終端機 (dumb terminal)", 但它也提供許多一般終端機沒有的功能 :
. 設定終端機模式與特性的突現式 (pop-up) 選單
. 可以上下移動螢幕影像的卷動棒 (scrollbar) - 當文字列因螢幕卷動而消失時, 可以將它拉回.
. 模擬 Tektronix 4014 終端機.
. 可選擇性地記錄螢幕列到一個使用記錄檔 (log file).
. "剪"(cut)"貼"(paste)文字區塊.
. 可選擇文字顏色, 視窗背景等...
. 可選擇 VT100 與 Tek 視窗字型.
. 可設定( 程式化(programmable))鍵盤.
我們首先描述選擇功能的選單結構, 接著描述如何使用選擇功能.
8.1 選擇 xterm 功能 - 選單與命令列選項
xterm 有它自己的內建選單結構, 可在使用期間改變設定. 有三個選單可供利用, 見圖 8 - 1 :
┌————————————————┐
│ p84. fig 8 - 1 │
│ │
│ │
│ │
│ 圖 8 - 1 xterm 的三個選單 │
└————————————————┘
xterm X11 : 這裡的大多數選擇項目為程式控制功能, 例如 : continue pro-gram (程式繼續) 或 kill program (殺掉程式). 欲突現此選單, 必需同時按住 CONTROL 鍵與滑鼠左按鈕.
modes : 設定大多數終端機的特性與選擇 Tektronix 模擬功能. 欲突現此選單, 須同時按住 CONTROL 鍵與滑鼠中間按鈕 (當處於VT102 視窗時).
Tektronix : 控制 Tektronix 視窗的外表. 當處於 Tektronix 視窗時, 須同時按住CONTROL 鍵與滑鼠中間按鈕即可突現此選單.
選單的操作類似 uwm, 藉著按滑鼠按鈕可突現選單, 不放松按鈕移動指標至想選的項目上; 放松按鈕後即選定該項. 然而, 有一點不同的地方是, 不能被選擇的選單項目 (因為此時選擇將無意義) 是以較淡的型式顯示. 例如: 因為尚未開啟一個 Tektronix 視窗, 所以Hide VT Window 項目的顏色較淡.
許多選單的功能也能以啟動 xterm 的命令列選項來設定.(事實上有某些功能僅能以命令列選項的型式去選擇). 下面幾節我們將告訴你可以設定不同功能的選單選擇與命令列選項的選擇方式.
8.2 卷動 xterm 的螢幕
突現 xterm X11 選單並選擇 Scrollbar 項目, 如圖 8 - 2. 高亮度的部分告訴你兩件事:
1. 螢幕上的列數與儲存在卷動棒緩沖區 (scrollbars buffer) 的列數之比率.
2. 緩沖區的哪個部份目前顯示在螢幕上.
例如在圖 8 - 2 中 : 約有 20 列在螢幕上; 高亮度部分約為總列數的 5 分之 1,
所以緩沖區包含有約 100 列, 且目前顯示的部分是緩沖區的最底部 (因為高亮度區在卷動區的最底部).
┌—————————————————┐
│ p85. fig 8 - 2 │
│ │
│ │
│ │
│ 圖 8 - 2 具有卷動棒的 xterm 視窗 │
└—————————————————┘
你可以利用滑鼠按鈕移動卷動區的高亮度部分, 以改變顯示在螢幕上的文字.下面的小節將會解釋; 為簡化說明我們假設卷動緩沖區包含 100 列文字.
注意 : xterm 采用異於其他視窗系統的卷動棒用法, 特別是 Apple Macintosh.
8.2.1 移動卷動棒到指定點
假如你想移動本文到某一指定位置, 例如 : 想看第 50 列之後的內容 :
1. 移動指標到卷動棒. 游標變成垂直雙箭頭. (圖 8 - 3a)
2. 按滑鼠中間按鈕 : 游標變成水平箭頭 (圖 8 - 3b), 且高亮度的頂端跳至游標處.(例如 : 假如你想看的部分從 50 列開始, 你應該將游標移到卷動區的中央)
3. 假如視窗顯示你所要的部分, 則可以放開按鈕. 否則 ...
4. ... 保持按住按鈕, 移動指標 : 高亮度部分跟隨著指標移動 (而視窗內的本文也隨著高亮度區而卷動), 直到放松按鈕.
┌————————————————┐
│ p86. fig 8 - 3 │
│ │
│ │
│ │
│ 圖 8 - 3 游標在卷動區的不同形狀│
└————————————————┘
8.2.2 向前卷動本文
卷動視窗內的本文使文字列往上移出螢幕頂端 : 高亮度區向卷動棒底部移動,視窗內並顯示最近打入的本文. 上卷的步驟如下 :
1. 移動指標到卷動棒. 和前面一樣游標變成垂直雙箭頭.
2. 按下滑鼠左按鈕 : 游標變成向上箭頭. (圖 8 - 3c)
3. 放開按鈕 : 與箭頭在同一列的文字移到螢幕頂端, 且高亮度區也隨著調整. ( 以圖形來表示,如圖 8 - 4. 注意到移動量的多少與你放開按鈕時的位置有關 : 若接近頂端, 你可以獲得的移動量小, 接近底部則當然可以獲得較大的卷動量).
┌————————————————┐
│ p87. fig 8 - 4 │
│ │
│ │
│ │
│ 圖 8 - 4 在一個視窗內卷動本文 │
└————————————————┘
8.2.3 向後卷動本文
向後卷動視窗本文, 文字列由螢幕底部移出, 使你得以看見先前打入的文字列
. 操作程序類似向前卷動, 但方向相反, 此時使用滑鼠右按鈕, 出現向下箭頭 (圖 8 - 3d).
8.2.4 其他卷動選項
只要你已經啟動卷動功能, 有兩個Modes選單的選項可供利用.
Scroll to bottom on tty output (若有 TTY 輸出將輸出自動卷到底) : 若你目前不在卷動區的底部, 稍後某些終端機的輸出到達視窗時會自動地移動到卷動區的尾端. 此功能為預設的. 若此功能被關閉, 你要看最新的輸出必須自行卷動視窗.
Scroll to bottom on key press (按鍵才卷到底) : 若你不在卷動區的底部,稍後你按一個鍵, 視窗會自動移動至卷動區的尾端. 此功能不預設, 但通常你的終端機設定成當你鍵入時回應一個字元 : 這些字元為TTY 輸出, 且將引起視窗被卷到底部.
8.2.5 以命令列選項控制卷動
-sb : 允許使用卷動棒. (預設 : 禁能(disable))
-sl num : 儲存被卷離螢幕的若干列本文. (預設為 64)
-sk : 致能(enable)當按鍵才卷到底. (預設 : 禁能)
-si : 致能當終端機輸出時卷到底. (預設 : 致能)
8.3 記錄你與終端機的交談過程 - 寫記錄 (logging)
突現 xterm X11 選單, 並選擇 logging 選項. (假如你現在是第二次叫同樣的選單,在 logging 選項旁邊, 你會看到一個沙漏標志 (tick-mark) , 表示它是啟動的) 從此以後, 所有終端機輸出除了被送到螢幕以外, 也會被送至一個檔案. 你可
以獲得一個使用過程的永久記錄. 預設的狀況是將輸出寫到 xtermlog.pid 檔案. 其中 pid 為xterm 處理識別碼. 此檔案被建於啟動 xterm 時的目錄 (你也可以利用下面介紹的命令列選項去改變登錄檔名).
你可以藉著 xterm X11選單停止或再度logging,反覆的停止和開始logging,你可以作選擇性的記錄,logging 的輸出永遠附加在登錄檔案(log-file)之後,每一次都不會覆寫(overwrite)登錄檔。
8.3.1 以命令列選項控制登錄使用過程
-l : 致能登錄使用過程
-lf file : 將登錄檔寫入指定檔, 以取代預設檔 (指定登錄檔僅設定登錄檔名而不致能登錄功能; 必需另外使用 -l 來致能登錄)
使用一個導管 (Pipeline) 作為登錄 "檔"
-lf 選擇項有一個特殊功能 : 假如 file 引數以導管記號 () 開頭, 則其余部分視為登錄輸出的一個管路. 例如 : 假設你的系統 (shell) 提示是 venus%, 使用下列命令去啟動 xterm 並記錄於 cmdlog 檔, 只需鍵入
xterm -l -lf grep "^venus% " > cmdlog
8.4 剪與貼本文
你可以從 xterm 視窗 "剪" (cutting) 部分本文, 亦即拷貝本文到一個 "剪緩沖區" (cut buffer), 稍後可被 "貼" (pasting) 回, 亦即取回 (retrieve).
你可以將本文貼回同一個視窗, 或任何提供相同結構的視窗. 你可以現在或稍後"貼" 回, 但你只有一個緩沖區, 後來所 "剪" 的資料將蓋掉先前的. 目前被選擇的部分是以高亮度反白影像顯示; 一個有兩列文字被選到的xterm視窗顯示於
圖 8 - 5。
┌—————————————————┐
│ p87. fig 8 - 5 │
│ │
│ │
│ │
│圖 8 - 5 "剪" 操作中被選擇的文字列│
└—————————————————┘
8.4.1 剪 (cutting)
"剪" 一段文字 :
1. 移動游標至你想要 "剪" 的那一段文字的一端.
2. 按下滑鼠左按鈕, 並保持按住.
3. 拖拽游標至該段文字的另一端 : 在你移動的時候介於啟始位置與游標位置
使用一個導管 (Pipeline) 作為登錄 "檔"
-lf 選擇項有一個特殊功能 : 假如 file 引數以導管記號 () 開頭, 則其余部分視為登錄輸出的一個管路. 例如 : 假設你的系統 (shell) 提示是 venus%, 使用下列命令去啟動 xterm 並記錄於 cmdlog 檔, 只需鍵入
xterm -l -lf grep "^venus% " > cmdlog
8.4 剪與貼本文
你可以從 xterm 視窗 "剪" (cutting) 部分本文, 亦即拷貝本文到一個 "剪緩沖區" (cut buffer), 稍後可被 "貼" (pasting) 回, 亦即取回 (retrieve).
你可以將本文貼回同一個視窗, 或任何提供相同結構的視窗. 你可以現在或稍後"貼" 回, 但你只有一個緩沖區, 後來所 "剪" 的資料將蓋掉先前的. 目前被選擇的部分是以高亮度反白影像顯示; 一個有兩列文字被選到的xterm視窗顯示於
圖 8 - 5。
┌—————————————————┐
│ p87. fig 8 - 5 │
│ │
│ │
│ │
│圖 8 - 5 "剪" 操作中被選擇的文字列│
└—————————————————┘
8.4.1 剪 (cutting)
"剪" 一段文字 :
1. 移動游標至你想要 "剪" 的那一段文字的一端.
2. 按下滑鼠左按鈕, 並保持按住.
3. 拖拽游標至該段文字的另一端 : 在你移動的時候介於啟始位置與游標位置