screenの出力をコピーする

screenを使用し始めてしばらく立ちました. しかし,基本的に今までは,なんというか画面を分割するためのツールとしてしか使用していませんでした. で,そろそろまともに使用できるようになるべえなと思います.

とりあえず,私の好きな作業環境は,端末を最大化して screenでいくつか画面を分割する. で,片方ではvimを開いて,もう片方ではshellの操作(基本的にbashを使用しています)をする感じです. ここで問題になるのは, 端末上にいろいろ出した結果をvimでの作業にどう反映させるのか という問題です.

この問題に対して今までは,とっても素直にマウスを使い<Ctrl+Shift+C>で対応していました . ただ,この方法はどうにも愚の骨頂です. なので,まともにキーボード操作でコピペを行うようにしていきます.

Screenの copy mode

まずはscreen側(shellの出力) → vimにペーストのお話.

screenの出力をコピーする

screen自体のモードをcopyモードにします. これは,コマンド文字(デフォルトでは<Ctrl+a>)を入力した上で, “[” を入力します. すると,だいたい vim と同じ操作法で,出力結果を確認移動できるようになります. あとは vim 的なイメージで言えば, ビジュアルモードに入って範囲を指定してヤンクを行えばいいわけです.

コピーを行う開始地点を決めることをマークというそうです. これはスペースキーで開始されます.

コピーしたい部分の選択が終了したところで Enter を押します. これで,選択範囲のヤンクが終了します.

注釈

矩形選択について

なお, screen の copy mode では 矩形選択を行うことが可能です.

  • 手順
    • 矩形の開始地点に移動し c を押す(左端の設定)
    • y を押すと行全体が選択される
    • Space で終了点を設定 (ヤンク)
    • ペーストする場合は ] を押す

vim にペースト

記述中の vim にヤンクした内容をペーストする場合, <Ctrl+a>[ を使ってペーストする(screen上からペーストする)こともできますが, インデントが崩れる場合があります.

vim に +clipboard がある場合は良いのですが, わざわざリビルドをするのも面倒(というかすべての環境でできるわけではないので)です. vim-fakeclip というプラグインを導入するとこの操作が “&p で可能になります.