screenを使い始めた当時、今は亡きOpen Source Magazine 2006/5月号に特集が組まれていたのを必死で覚えました。気づくとその記事はIBM dW Japanに載っていました。
私のカスタマイズの基本はこんな感じです。
- デフォルトキーバインドはなるべく尊重
- ただし危険そうなのは無効にする
- ウィンドウの選択・リサイズなどは連続して実行する
- caption/hardstatusでタブ風な外観を
#
# .screenrc - GNU screen user configuration file
#
# @version 20080210
# @see http://www.informatik.uni-hamburg.de/RZ/software/screen/screen_toc.html
# @see http://www.limy.org/program/screen_command.html
#
# Escape key is C-t, literal is t.
escape ^Tt
# I like a large scrollback
defscrollback 5000
# move cursor to begining of scroll buffer(and move to the leftmost column of the window top)
bindkey -m -t ;b stuff "g/:^M^F^B"
# sets the encoding of the default window.
defencoding eucJP
# don't update utmp database
###deflogin off
# don't show startup message
startup_message off
# don't remove windows from the window list as soon as window process exits.
zombie kr # k: destory window, r: resurrect window
# disable default window killing keybinding
bind \\
# echo command name whenever a window is created or resurrected.
verbose on
# logging
logfile "screen/log/screenlog.%H.%Y%m%d-%c:%s.%n.%t.log"
logtstamp on
# hardcopy
hardcopydir screen/hardcopy
# bufferfile
bufferfile screen/screen-exchange
# changes the kind of messages to the nethack-style.
nethack on
# enable visual vells and disable vbell toggle binding
vbell on
bind ^G
# login shortcut
bind R colon 'screen ssh '
bind T colon 'screen telnet '
# encoding aliases
bind u eval 'encoding utf8' 'info'
bind ^U eval 'encoding utf8' 'info'
bind e eval 'encoding eucjp' 'info'
bind ^E eval 'encoding eucjp' 'info'
# resion focus(like vi)
bind j focus down
bind k focus up
bind t focus top
bind b focus bottom
# continuous resion focus(like vi)
bind ^J eval 'focus down' 'echo "Focus region: "' 'command -c cfocus'
bind ^K eval 'focus up' 'echo "Focus region: "' 'command -c cfocus'
bind -c cfocus ^J eval 'focus down' 'echo "Focus region: "' 'command -c cfocus'
bind -c cfocus ^K eval 'focus up' 'echo "Focus region: "' 'command -c cfocus'
# continuous resion resize.
# orverride default `r'(wrap) mapping.
bind r eval 'echo "Resize region:"' 'command -c cresize'
bind -c cresize j eval 'resize +1' 'echo "Resize region:"' 'command -c cresize'
bind -c cresize k eval 'resize -1' 'echo "Resize region:"' 'command -c cresize'
bind -c cresize J eval 'resize +10' 'echo "Resize region:"' 'command -c cresize'
bind -c cresize K eval 'resize -10' 'echo "Resize region:"' 'command -c cresize'
bind -c cresize 1 eval 'resize 10' 'echo "Resize region:"' 'command -c cresize'
bind -c cresize 2 eval 'resize 20' 'echo "Resize region:"' 'command -c cresize'
bind -c cresize 3 eval 'resize 30' 'echo "Resize region:"' 'command -c cresize'
bind -c cresize 4 eval 'resize 40' 'echo "Resize region:"' 'command -c cresize'
bind -c cresize 6 eval 'resize 50' 'echo "Resize region:"' 'command -c cresize'
bind -c cresize 6 eval 'resize 60' 'echo "Resize region:"' 'command -c cresize'
bind -c cresize 7 eval 'resize 70' 'echo "Resize region:"' 'command -c cresize'
bind -c cresize 7 eval 'resize 80' 'echo "Resize region:"' 'command -c cresize'
bind -c cresize 9 eval 'resize 90' 'echo "Resize region:"' 'command -c cresize'
bind -c cresize 0 eval 'resize 100' 'echo "Resize region:"' 'command -c cresize'
bind -c cresize = eval 'resize =' 'echo "Resize region:"' 'command -c cresize'
bind -c cresize m eval 'resize min' 'echo "Resize region:"' 'command -c cresize'
bind -c cresize x eval 'resize max' 'echo "Resize region:"' 'command -c cresize'
# continuous window select
bind ^N eval 'next' 'echo "Select window:"' 'command -c cselect'
bind ^P eval 'prev' 'echo "Select window:"' 'command -c cselect'
bind -c cselect ^N eval 'next' 'echo "Select window:"' 'command -c cselect'
bind -c cselect ^P eval 'prev' 'echo "Select window:"' 'command -c cselect'
# display all windows in a table for visual window selection. (")
# override default `w'(windows) mapping.
bind w windowlist
windowlist title 'Num Title%=Flags'
# Give me some info at the bottom of each window and the bottom of screen like scrollable tabbed bar.
# e.g.:
# +----------------------------------------------------------------------------+
# | |
# | |
# | |
# | |
# +----------------------------------------------------------------------------+
# | 0$ top | <--- caption (bellow each window)
# +----------------------------------------------------------------------------+
# | |
# | |
# | |
# | |
# | |
# | |
# +----------------------------------------------------------------------------+
# | 2$ vim | <--- caption
# +----------------------------------------------------------------------------+
# | |
# | |
# +----------------------------------------------------------------------------+
# | 3$(L) tail | <--- caption
# +----------------------------------------------------------------------------+
# |[09/24 13:23:43]0 top 1 man 2 vim 3 tail 11 less 21 ssh 22 ssh 31 ssh| <--- hardstatus
# +----------------------------------------------------------------------------+
caption always "%?%F%{= bW}%:%{= wk}%?%2n%f%07=%t%="
# caption description:
#
# %? - Start of a conditional statement.
# %F - Use this part of the statement if the window has focus (i.e. it
# is the only window or the currently active one).
# %{= bW} - bright white on blue.
# %: - else
# %{= wk} - black on white
# %? - End conditional statement.
# %2n - number of the current window with left 2 padding
# %f - flags for current window
# %07= - left 7 padding for window number and flags
# %t - title of current window
# %= - truncation/padding point
hardstatus alwayslastline "%{= Wb}[%m/%d %02c:%s]%016=%{= WK}%-w%50>%{= bW}%n %t%{-}%+w%-0< %="
# hardstatus description:
#
# %{= Wb} - blue on bright white
# %m - Two-letter month number
# %d - Two-letter day number
# %02c - time (hh:mm) in 24 hour format
# %s - seconds
# %016= - left 16 padding for datetime
# %{= WK} - white on bright white
# %-w - window list up to but not including the current window (-)
# %50> - truncation/padding marker; place this point about 50% of the
# way into the display area (50)
# %{=u bW} - underline, blue on bright white
# %n - number of the current window
# %t - title of current window
# %{-} - undo last color change(so now we're back to white on bright white)
# %+w - window list from the next window on (-)
# %-0< - truncation/padding point. place this point zero spaces (0)
# from the right margin (-).
# %= - truncation/paddion point.
# APPENDIX: STRING ESCAPES (make extracts from screen (1))
#
# The attribute set can either be specified as hexadecimal number
# or a combination of the following letters:
#
# d dim
# u underline
# b bold
# r reverse
# s standout
# B blinking
#
# Colors are coded either as a hexadecimal number or two letters specifying
# the desired background and foreground color (in that order).
# The following colors are known:
#
# k black
# r red
# g green
# y yellow
# b blue
# m magenta
# c cyan
# w white
# d default color
# . leave color unchanged
#
# The capitalized versions of the letter specify bright colors.
# You can also use the pseudo-color `i' to set just the brightness and leave the color unchanged.
0 件のコメント:
コメントを投稿