強大的軟體通常都有很靈活的可定製性, 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 splitbind 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 d
2
來 `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 n
和c-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 等命令進行游標的移動,並使用空格鍵分別標記要拷貝的區段的首部和尾部位置,還可以通過c
和c
設定左右邊界以實現矩形拷貝。另外,在這個狀態還可以進行文字搜尋。
複製之後,用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得...