GNU Screen

端末の画面分割とか、detach, attachを使って、接続を切ってもプログラムを動かし続けることができる。


インストール

安定版のインストール

FreeBSDで256色に対応したScreenをインストールする(参照)には

[text]
% cd /usr/ports/sysutils/screen
% make config #XTERM_256にチェックする.
% make install
[/text]

等てば良い。

その他のディストリビューションでのインストールの仕方はscreenを初めて使うためのチュートリアル – Unix的なアレを見よ。

開発版のインストール

使い方

参考

設定

自分の設定を載せておく。.screenの設定についてはtips for screen — screenの覚書を見よ。

.screen

.zshrc

コマンド

screenのコマンドはデフォルトでは^A(Ctrl+A)で始まる。しかし、^AはコマンドラインやEmacsで行頭へ移動するために使うので別のに変えたほうが良い。zshを使っている場合bindkey -Lと打って使ってない(使いそうにない)キーバインドを確かめて設定してみよう。自分の場合は.screenにescape ^Ttを記述して^Tに設定している。

^A-c 画面(端末)の新規生成
^A-p 前の画面に移動
^A-n 次の画面に移動
^A-^A 直前作業していた画面に戻る
^A-[0-9](^A-数字) 数字の画面に移動
^A-w 画面の一覧の表示
^A-k 現在の画面の起動プロセスを終了. exit でも可
^A-? 簡略キーバインド一覧
^A-S 画面を分割する。
^A-<TAB> 分割した次の画面へ移動する
^A-Q 現在の画面を残して、画面分割を閉じる
^A-X 現在の画面を閉じる

コピー・スクロールバックモード

viのキーバインドで移動、コピーができる。

コピーの仕方

  1. ^A-Escでコピー・スクロールバックモードに入る
  2. スペースで領域の選択開始
  3. カーソルを動かして領域を選択、もう一度スペースでその領域をコピー
  4. Escでコピー・スクロールバックモードを終了
  5. ^A-]でペースト

その他のキーバインドについてはscreenコマンド一覧を参照。

コピーモードで矩形選択

コピーモードに入った後、SPACEで選択開始、cを押すと選択開始位置の左側が選択領域から除外される。移動してCを押すとカーソルの右側が選択領域から除外される。SPACEを押すと、コピー。

Tera Termを使っている場合は、Alt押しながらマウスドラッグしたほうが楽。

コピー関連のキーバインドをVim風に

[text title=".screenrc"]
#Vimのビジュアルモード風にコピー
markkeys ‘ =v’
markkeys ‘ =y’
#/?をインクリメンタルサーチに
markkeys "^S=/"
markkeys "^R=?"
bind p paste .
[/text]

  1. ^A-Escでコピー・スクロールバックモードに入る
  2. vで領域の選択開始
  3. カーソルを動かして領域を選択、もうyでその領域をコピー
  4. Escでコピー・スクロールバックモードを終了
  5. ^A-pでペースト

/?をインクリメンタルサーチにしている。検索用語を決定したらEsc。nで次の候補。

キャプションにカレントディレクトリまたは実行中のコマンドを表示する

メモの日々(2008-03-31)を参考にして設定した。該当箇所は以下のとおり。

[text title=".screen"]
caption always "%{= wk} %-w%?%F%{=b kr}%:%{= kW}%? %n %t %{-}%+w"
[/text]

$TERM = xterm-256colorの部分は人それぞれ。screenを起動してecho $TERMで確認して設定すれば良い。

.screenの説明

captionのエスケープ文字についてはtips for screen — screenの覚書をみるとよい。

やっていることは%{= wk}で背景灰色で文字を黒に設定。%-wで現在のウィンドウより前のウィンドウの一覧を表示。

%? A %: B %?は条件式でAが空文字でなければそれを表示、空ならBを表示するという意味。%Fは「現在のフォーカスがあるウィンドウならば条件を true」にする特殊なエスケープ文字。画面分割していてどちらにいるか区別するために使用している。フォーカスがある場合は%{=b kr}で太字で背景黒、文字色赤に設定。そうでなければ%{= kW}で背景黒、文字色白に設定。

%nでウィンドウの番号、%tでタイトル。%{-}で1つ前の色の設定に戻し、%+wで現在のウィンドウより後のウィンドウ一覧を表示していいる。

.zshrcの説明

最初のif文でscreenを起動中かを判定。preexecはコマンドを実行する前に実行される関数で、precmdはプロンプトを表示する前に実行する関数。

コマンドを実行中なら、コマンド名を表示、実行し終わったらprecmdでカレントディレクトリが上書きされるという仕組み。

echo -ne “\ek<hoge>\e\\”でウィンドウ名を<hoge>に設定する事ができる。

${1%% *}は実行したコマンドの引数を覗いた部分を取ってくる正規表現。%%は$1で’ *’に最大マッチするものを末尾から探してそれを削除するという意味(シェルスクリプトの変数展開(評価)でパターンマッチ : おまえのログ)。

$(basename $(pwd))でパスの中から、カレントディレクトリ名を取ってきている。

画面サイズの変更

[text]
bind r eval ‘echo "Resize window"’ ‘command -c resize’
bind -c resize ; eval ‘resize +1′ ‘command -c resize’
bind -c resize – eval ‘resize -1′ ‘command -c resize’
[/text]

参考

リンク

レクタングル

レクタングル

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

コメント

  1. zsh | SanRin舎 より:

    […] screenの設定についてはSanRin舎 » screen参照 […]

コメントをどうぞ

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

WP-SpamFree by Pole Position Marketing