screen使用筆記

2021-06-02 07:35:29 字數 3709 閱讀 8883

強大的軟體通常都有很靈活的可定製性, screen 的定製檔案通常是~/.screenrc。各種引數設定可以放到定製檔案裡面,也可以通過引數傳遞或者是在執行期間通過命令動態指定。

screen 的各個快捷鍵有乙個通用的字首,預設是c-a,這對於要在終端裡面使用 emacs 的使用者來說是不可忍受的,可以通過escape命令來重新設定這個值。我使用的是c-l這個命令,這個快捷鍵在 emacs 裡面並不常用,而且也比較好按:

escape ^l^l
注意 screen 並不認識 `c-a'這種語法的快捷鍵,而是要使用`^l'這種形式,或者是乙個`\'後面跟著八進位制數值的形式用於表示對應的 ascii 字元。而這兒的後面那個^l表示如果我按了c-l c-l那麼,就將c-l直接傳送到正在執行的程式那裡,而不是作為 screen 的快捷鍵處理,這樣,我在 screen 裡面執行 emacs 的時候就可以通過連按兩次c-l來執行recenter命令了1

。設定了快捷鍵字首,接下來就該設定各個快捷鍵了。由於字首都是統一的,所以提到快捷鍵的時候通常不提前綴。例如,對於 region 的操縱函式,我把他們梆定得和 emacs 很類似,以方便記憶4

bind 2 split

bind o focus

bind 1 only

bind 0 remove

caption命令可以用於定製顯示的 caption ,通過指定always引數,可以讓她始終顯示,而不僅僅是在分割的時候才顯示出來。顯示的內容裡面可以使用的特殊命令詳細請參見 screen 的 info 文件裡面 string escapes 一節。我在網上看到乙個好像是 freewizard@newsmth 的配置,非常不錯:

caption always "%?%f%%:%%? %h | %l | %m-%d %c |%?%f%%?%l=%-lw%45>%%n%f* %t%%+lw%-0<"

startup_message off可以關閉煩人的啟動畫面。

在終端裡面執行 screen 即可啟動,之後可以用c-l d2

來 `detach' 它。之後(可以是在重新登入之後,或者是再到乙個完全不同的終端裡面)你可以再連線到剛才的那個 screen 會話。命令screen -list可以列出你目前的所有screen 會話。

事實上,我使用 sawfish 的jump-or-exec功能,把w-t繫結到啟動 urxvt並在其中啟動或者連線到以前存在的乙個 screen 會話。由於我同時為emacs--multi-tty 使用乙個 screen 會話,為了避免不小心連線到那個會話上,我為這個 urxvt 也進行命名,使用這個命令來啟動 urxvt

urxvt -e screen -xrrs urxvt &
在乙個 screen 會話裡面也可以啟動多個視窗進行工作。c-l c可以建立乙個新的視窗,之後可以通過c-l nc-l p在視窗之間來回切換,也可以直接使用c-l n跳到第n個視窗。另外c-a "可以列出所有的視窗,就像 emacs 裡面的c-x c-b一樣。

c-l s可以把當前螢幕進行水平劃分,就類似於 emacs 的c-x 2。然後可以通過c-l在各個分割的區域3

之間切換焦點。其他的命令詳細可以參見screen 的 info 文件,為了和更便於記憶,我把他們設定成了和 emacs 很類似的快捷鍵。見快捷鍵定製。

screen 的另外乙個強大功能就是在各個視窗和區域之間進行複製、貼上。c-l[即可進入選取狀態,這裡可以使用 vi 的那種 hjkl 等命令進行游標的移動,並使用空格鍵分別標記要拷貝的區段的首部和尾部位置,還可以通過cc設定左右邊界以實現矩形拷貝。另外,在這個狀態還可以進行文字搜尋。

複製之後,用c-l ]即可進行貼上。

快捷鍵打 screen 就進入乙個 screen session □,在 screen session 下,

所有命令都以 c-a(^a) 開頭:

c-a c   ->      create,開出新的 window

c-a n   ->      next,切換到下個 window

c-a p   ->      previous,前乙個 window

c-a c-a ->      other,在兩個 window 間切換

c-a w   ->      windows,列出已開啟的 windows 有那些

c-a 0   ->      切換到第 0 個 window

c-a 1..9 ->     切換到第 1..9 個 window

c-a a   ->      送出 c-a,在 emacs, ve, bash, tcsh 下可移到行首

c-a t   ->      time,顯示目前的時間,與系統的 load

c-a k(大寫) ->  kill window,強制關掉目前的 window

c-a [   ->      進入 copy mode,在 copy mode 下可以回卷、搜尋、拷貝

就像用 vi 一樣

c-b     backward,pageup

c-f     forward,pagedown

h(大寫) high,將游標移至左上角

l       low,將游標移至左下角

0       移到行首

$       行末

w       forward one word,以字為單位往前移

b       backward one word,以字為單位往後移

space   第一次按為標記區起點,第二次按為終點

esc     結束 copy mode

c-a ]   ->      paste,把剛在 copy mode 選定的內容貼上

c-a ?   ->      help,顯示簡單說明

當按了 c-a d 把 screen session detach 掉後,會回到還沒進 screen 時

的狀態,此時在 screen session □每個 window 內跑的 process (無論是

前景/背景)都在繼續執行,即使 logout 也不影響。

下次 login 進來時:

screen -ls              ->      顯示所有的 screen sessions

screen -r [keyword]     ->      挑個 screen session 回來 (撿回來)

若 screen -ls □有 attached sessions:

screen -d [keyword]     ->      強制 detach,以便「接手」過來

c-a d   ->      detach,將目前的 screen session (可能含有多個 windows)

丟到背景執行,這招就是 screen 的「特異功能」

Vim 使用筆記

set hlsearch set nohlsearch 搜尋後清除上次的加亮 nohl nohlsearch 拷貝 很有用的一句話,規定了格式選項,讓它換行不自動空格 set formatoptions tcrqn set fo r set noautoindent 再 shift insert 正...

xemacs使用筆記

xemacs使用筆記 xemacs emacs的下一代,由lucid原創 from debian參考手冊.由於不知道什麼時候刪掉了emacs的乙個重要檔案.每次都沒法安裝好.突然發現了xemacs,於是決定使用看看.本人還是菜鳥,僅供交流 我使用的ubuntu系統,所以就直接apt get inst...

TreeView使用筆記

treeview由節點構成,建樹通過對treeview.items屬性進行操作。items是乙個ttreenodes物件,這是乙個ttreenode集。一 針對ttreenodes,也就是 treeview.items,有這些屬性 1 count,節點個數。2 item index 通過index得...