Ubuntu Weekly Recipe

第19回 あえてターミナルを使う(2):作業環境としてのターミナルw3m, screenなどの利用

この記事を読むのに必要な時間:およそ 3 分

デタッチ

さらに,screenには「デタッチ」という機能もあります。

今開いているターミナルをそのまま閉じてしまい,新しくターミナルを起動しましょう。その上で「screen -dr⁠⁠ と操作してみてください。先ほど起動したscreenの「中身」が移動してくるはずです。

screenはターミナルソフトウェアと「中身」を切り離すことができます。この機能はssh越しにリモートマシンに接続している場合などに役立つでしょう。

hardstatusの設定

screenrcは柔軟なカスタマイズができ,特にhardstatus関連の設定は多くのバリエーションがあります。筆者は次のものを利用していますが,これらも個人の好み次第でいろいろなカスタマイズができるでしょう。ターミナル環境の魅力の一つはこうしたカスタマイズによって,個人の好みに合わせこめることです。

hardstatus alwayslastline "%{= wk} %-w%{=bu dr}%n %t%{-}%+w %= %{=b wb}%m/%d %{=b wb}%c@%H"

最初は上記の設定で使い始め,徐々に自分の手に馴染むものに修正していってみてください。

screenを用いたコピー&ペースト

screenにはさらに,キーボード操作のみでコピー&ペーストが可能です。

[Ctrl]+[a⁠⁠→⁠ESC]と操作することで,⁠コピーモード」に入ることができます(⁠⁠ESC]の代わりに[Ctrl]+[[]を利用することもできます。後述の通りペーストが[Ctrl]+[]]ですので,ESCを使うよりも[]]で指を慣らした方が便利です⁠⁠。

このモードではターミナルに表示されていた文字列をさかのぼることができます,⁠SPACE]キーを押してコピー範囲の始点を指示し,カーソルを移動させてからもういちど[SPACE]を押すことで,選択した範囲を「コピー」することができます。この状態でのカーソル操作は,viで利用するものと同じです。貼り付けは[Ctrl]+[a⁠⁠→⁠Ctrl]+[]]です。

この説明だけでは全く操作が想像できないと思いますので,実際に操作してみましょう。

まず,screenを起動したターミナルで,⁠echo test」と入力し,⁠Enter]を押しましょう。echoコマンドにより,画面に「test」と出力されるはずです。

この,⁠echo test」という部分を,screenを用いてコピー&ペーストしてみましょう。⁠Ctrl]+[a⁠⁠→⁠ESC]を押してコピーモードに入ります。画面下に⁠Copy mode - Column 3 Line 23(+3000) (80,23)⁠などという表示が出るはずです。

この状態で,先ほど入力した「echo test」「e」までカーソルを移動させます(⁠⁠↑]キーを2回押せば良いはずです⁠⁠。

そして[SPACE]キーを押し,コピー範囲の始点を指示します。⁠First mark set - Column 3 Line 20⁠などといった表示が出ます。

この状態で[$]キーを押します。これは『カーソルをその行の最後に移動させる』操作です。

再度[SPACE]を押します。これにより,選択された範囲(つまり「echo test」の部分)がコピーされ,⁠Copied 9 characters into buffer⁠といったメッセージが表示されるでしょう。

[Ctrl]+[a]を押してから[Ctrl]+[]]と押すと,選択した範囲がペーストされ,ターミナルに「echo test」という文字列が表示されているはずです。

エスケープ

先ほどからscreenの操作では,⁠Ctrl]+[a]を押してから操作を開始しています。このような,最初に行うキー操作をscreenでは「エスケープ」と呼びます。エスケープのために使われるキー入力は,screenに「食べられ」てしまいますので,キー操作としては受け付けられなくなります。bashなどの操作では,⁠Ctrl]+[a]「行頭へ移動」に割り当てられていますので,時には[Ctrl]+[a]が必要になることもあります。

このような場合,⁠Ctrl]+[a⁠⁠→⁠a]と操作することで本来の動作をさせることができます。

また,screenrcでescape変数を設定することで,異なるキーシーケンスをエスケープに設定することができます。

著者プロフィール

吉田史(よしだふみひと)

Ubuntu Japanese Team Member株式会社創夢所属。システム管理を中心にWindows/PC Unixを併用している。Ubuntu Japanese Teamではパッケージサーバの管理や翻訳などの作業を担当。