[轉貼]screen

常言道:『飲水思源』,在 Open Source 的世界裡,我們常常需要別人的幫助,但是在您有所心得的時候請記得分享給大家,『幫助人是快樂的喔』。歡迎您在使用 debian 的過程中的任何心得分享給大家。

[轉貼]screen

文章moto » 週四 2月 13, 2003 2:11 pm

【 以下文字轉載自 386bsd 討論區 】
【 原文由 Chou 所發表 】
我通常只有在一種情況下才會使用到這項功能。

平常用 putty 開 80x35 ,會遇到有些程式不吃 terminal setting 的情況,
比如說使用 virtual terminal 的 bbs 通常直接假設營幕大小為 80x24。
此時可以利用這個功能, C-a S , C-a :resize 24 切出一塊 80x24 的
區域,來使畫面輸出正常。要恢復原來的狀態,只要按 C-a Q 即可。
(spliting and resizing region may noise the window, use C-L to redraw)

若是使用 screen 3.9.11 以後的版本,可以在 ~/.screenrc 中設熱鍵:
bind R eval split "resize 24" redisplay

如此,便可以用 C-a R 直接切一塊 80x24 的區域。

=========================================================================

(假設 Escape key 為 C-a,即 Ctrl + a)

Table of content
1. Abstract
2. Terminology
3. Introduction
4. Example
5. Key binding
6. Screen command
7. Tips
8. Q & A
9. Conclusion

1. Abstract
剛剛看 screen manpage , 發現許多有趣的功能 . 其中之一就是分割區域。
這篇文章就是在介紹這個有趣的功能。

2. Terminology
術語:以下會提及到「視窗(window)」與「區域(region)」,代表不同的意義。
視窗:指 C-a C-c 所產生出來的,稱為視窗。
區域:一個視窗所顯示的範圍,稱為區域。

3. Introduction
一個 screen 通常只有一個區域,可以顯示用功能鍵切換的不同視窗。但是
screen 也提供了分割區域的功能,可以同時在一個 terminal 內顯示兩個
以上的區域,各區域中顯示其視窗內容。(有點饒舌,不過按照以下示範跑
一遍就應該知道是怎麼一回事。)

4. Example
不知道什麼是分割區域的話,可以先試試以下功能鍵. (請勿在 bbs 視窗測試,
會因為 terminal resize 而導致顯示不正常. 這是因為一般的 bbs 最多支援
所謂的「大螢幕」,即進入 bbs 時自動偵測 terminal size。但沒有一個支援
terminal resize,即接受 telnet protocol 傳來的 resize 訊息,自動調節
視窗大小)

1. C-a S (先按下 Ctrl + a ,放開後按下大寫 S,即 Shift + s。)
分割區域。可看到畫面分成上下兩半。下半部區域應該一片空白。

2. C-a S (再執行一次)
再一次分割區域。可看到畫面均勻分成三部分,最下方的新區域也是一片空白。

3. C-a tab (tab 為 [Caps Lock] 上方的按鍵,而非 T a b 三字所組成)
將游標移至下一個區域。此時可以看到游標跳到第二個區域。若在最後一個
區域執行此功能,會跳回到第一個區域。

4. 在第二個區域內,按下 C-a #num 切換至您想顯示的視窗號碼。
可以看到第二個區域出現了對應的視窗內容。

5. C-a tab 跳至第三個區域,同樣用 C-a #num 來切換視窗。

6. 利用 C-a tab 在三個區域內切換。

7. 切換至第二個區域,按下 C-a X (大寫 X)
刪除目前區域。此時會回復成上下兩半的分割畫面。分別為原來的第一個區域
及第三個區域。

8. 切換至第一個區域,按下 C-a Q (大寫 Q)
只留下目前區域,其餘刪除。此時畫面恢復成原來的單一區域,佔滿整個視窗
9. 到這裡若還不清楚「分割區域」是什麼樣的功能,可能是在下文筆太差,沒關
係,manpage 裡寫得非常詳盡,多加參詳必有所得。

5. Key binding
screen 本身提供了預設的 key binding,讓我們對「區域(region)」進行處理,
以下便分述之。

key-binding | (command) | description

a. C-a S (split) 分割區域。新產生的區域預設為空白。而所
有區域的高度重新分配,均分畫面。

b. C-a tab (focus) 切換區域。此功能鍵由上而下依序切換各區
域。在最下方區域使用時,會切換至最上方
區域。

c. C-a X (remove) 刪除目前區域。其他區域的高度亦重新分配,
均分畫面。

d. C-a Q (only) 除了目前的區域外,刪除所有區域。而目前
區域將佔滿整個畫面。


6. Screen command
有些人可能會覺得,以上所提供的 key binding 不是很好用。比如說 C-a S 、
C-a X 、以及 C-a Q 都需要 Shift 幫忙,使用起來不方便,而想與 C-a s 、
C-a x 、以及 C-a q 交換;或者是 C-a tab 只能由上往下切換區域,而希望
能有個對應的「由下往上」切換方式;抑或是像我一樣,常常忘了到底是哪個
key binding 做哪些事,就直接用 C-a : 下 screen command 。這時候就需要
瞭解這些與區域處理有關的 commands ,才能利用 binding , 或是 C-a : 來
達到目的。


a. split
分割一個新的區域,所有的區域將重新分配高度,均分整個畫面。而新的
區域會顯示空白視窗。

b. focus [up|down|top|bottom]
跳至另一個區域。如果沒有指定參數,預設是 down,即往下跳一個區域。
相反的則是 up,即往上跳一個區域。top 與 bottom 則是跳到最上方與
最下方的區域。這個指令是循環的,也就是說,在最上方區域下達 focus up
會跳至最下方區域、在最下方區域下達 focus down 會跳至最上方區域。

c. remove
刪除目前區域。如果只有一個區域,這個 command 不會有任何動作。

d. resize [+N|-N|N|max|min]
調整區域的高度。+N/-N 代表增加或減少 N 行,N 代表設成 N 行高。
max 與 min 代表將區域最大化(其他區域縮成一行)或最小化(自己縮成一行)

e. only
除了目前的區域外,刪除所有區域。

7. Tips

如果螢幕夠大的話,可以試試看將 putty (or other terminal emulator)
的字型調小一點,畫面大小設為 50x80。開啟 screen 後用一次 C-a S 切割
成兩個 24x80 的區域(每一個區域會佔掉一行 caption bar),剛好可以顯示
兩個正常大小的視窗。

(不過這樣的話,倒不如開兩個 putty 算了,也不會有字型太小看不清楚
的問題... 嗚嗚嗚! notebook的螢幕只有 12 吋...)

8. Q & A

1. 這個分割區域的功能,好像只能上下分割,有辦法左右分割嗎?
ans. 很抱歉,我沒有發現左右分割的功能。如果您找到的話,請務必與在下
分享。謝謝!

2. 分割區域,接著 detach 。之後再 attach 時會恢復區域分割的狀態嗎?
ans. 不會。

3. 這個功能有什麼用呢? 可以用在哪些場合呢?
ans. 我也不知道。高興怎麼用就怎麼用,即使不會用也沒關係。

4. ............
ans. ............

9. Conclusion

screen 還有很多有趣的功能,會不會有續篇繼續介紹呢?! 敬請不用期待,謝謝!


--
周 業 及 (Chou Yeh-Jyi)
======================= Don't feel as if you're Bible salesmen.
yjchou@cis.nctu.edu.tw The world has too many of those already.
頭像
moto
摩托學園站長
摩托學園站長
 
文章: 2808
註冊時間: 週二 9月 03, 2002 3:37 am
來自: 台北

回到 share

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客