スクロールの彼方から

スクロールしてしまったものをもう一度見たいということはよくある。
その昔、PC-9801MS-DOSを使っていたときは、xscriptを常駐させていた。これは、画面出力をさかのぼって参照できるツールで、ソースプログラムはいまでも入手可能のようだ。(確か)任意のタイミングでCtrlキーと上矢印キーを同時に押すと表示が停止し、この状態で(確か)上下の矢印キーなどで逆スクロールなどをさせて、スクロールで消えた部分の参照やペーストが可能だった。
やがてVz Editorを使うようになると、Vzの常駐モードを利用するようになった。Vzを常駐させた状態でShiftとEscキーを同時に押すと画面そのままの内容でVzの編集画面になり、エディタのスクロール操作で表示をさかのぼることができた。逆に考えると、エディタ画面の中でコマンドプロンプトが動作しているようなものだった。Vzが使いやすかったのは画面をさかのぼるための特別なモードを持っているのではなくワンタッチで表示内容がそのままエディタの編集画面になるという点と、PC-9801GDC機能を利用して上下方向でドット単位のスムースなスクロールを実現していた点で、あの当時としては秀逸なインターフェースだったと思う。
大学を出てからUnixでプログラミングするようになって、このような便利なものが使えなかったので、コマンド出力の捕捉にはいろいろと苦労した。ターミナルのロギングをONにしたり標準出力をリダイレクトしたりteeなどを駆使すれば記録は残るが、いずれもスマートな方法でない。そうこうしているうちにWindows上でMFCをいじったりJavaをさわったりするようになり、Unix系OSからは離れてしまった。
ここ数年はLinux上でよくプログラミングしているのだけど、最近はGNU Screenを便利に使っている。GNU Screenは、WEB+DB PRESS Vol.40id:naoyaさんが紹介された記事で興味をもった。これを知る前は必要な分だけターミナルのウィンドウを開いたり、ターミナルソフトのタブ機能を利用していたけど、GNU Screenを使うと仮想的な端末を1つのターミナルで切り替えることができる。そして1つのウィンドウに複数の仮想端末を同時に表示させたり、ウィンドウ出力内容を(スクロールで画面の彼方に消え去ったものも含めて)検索したりカットアンドペースとしたりもできる。その他いろいろな機能があって、Unix使いのプログラマであれば知っておいて損はないツール。
GNU Screenで唯一惜しいなと思う点は、screenからデタッチすると端末の画面分割の状態を忘れてしまうこと。^A+Sでよく画面を分割した状態で開発するので、アタッチする度に画面状態の復元作業が必要になってしまう。