設定はbash流儀でテキストファイルに記述

clinkはスウェーデン在住でEA Digital Illusions CE(Electronic Artsの子会社。Battlefieldシリーズのデベロッパーとして有名)在住のMartin Ridgers(マーティン・ロジャース)氏がMITライセンスで公開しているオープンソースのプログラムである(図03)。

図03 コマンドプロンプト(cmd.exe)を実行すると、自動的にclinkも起動する

執筆時点でバージョン0.3.1が公開されているが、インストーラー版の導入は画面の指示に従って導入完了。そのままコマンドプロンプトを起動すれば利用可能になるが、ZIP版の場合は同こんされたバッチフィルを実行しなければならない。また、実行時にはMicrosoft Visual C++ 2010再頒布可能パッケージの導入が必要となる。未インストールの環境ではお使いのWindows OSに合わせて、32ビット版64ビット版を導入しておかなければならない(図04~05)。

図04 インストーラーではclinkの自動起動に関する選択も可能

図05 実行にはMicrosoft Visual C++ 2010再頒布可能パッケージの導入が必要となる

同インストーラーは、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processorキーの文字列値「Autorun」で「"C:\Program Files\clink\0.3.1\clink" inject --profile "C:\Users\kaz\AppData\Local\clink"」を追加し、常に同じ設定ファイルや入力履歴を保存するプロフィールフォルダーを指定している。そのため、cmd.exeを直接起動してもclinkは常に利用可能だ。

bash起動時に設定情報や自動実行を記述するinputrcと同じく、clinkでは「clink_inputrc」というファイルを\%LOCALAPPDATA\%\clickフォルダーに作成することで同様の動作を実行できる。書式もGNU Readlineの初期ファイルと同じく、同ファイルに「set editing-mode vi」と記述すれば、テキストエディタのviと同じキーバインドを利用可能になる。vi派のユーザーは、一緒に「set keymap vi」なども指定すると便利だろう(図06)。

図06 %LOCALAPPDATA%\clickフォルダーに「clink_inputrc」を作成すれば、GNU Readlineベースの動作設定を指定できる

また、同フォルダーには「settings」というテキスト形式ファイルが自動生成される。文字どおりclinkの動作を左右する設定ファイルだが、内容をかいつまんで紹介しよう。「ctrld_exits」は[Ctrl]+[D]キーでコマンドプロンプトを終了させるとを可能にさせる設定(図07)。

図07 clink全体の動作は「%LOCALAPPDATA%\click\settings」ファイルで設定可能だ

「esc_clears_line」は[ESC]キーを押すと現在の行をクリアする設定だが、viモードは有効な場合は動作しないようだ。「passthrough_ctrlc」は[Ctrl]+[C]キーを親プロセスに渡す設定だが、初期状態では用意されていない。ここまでの設定項目はBoolean(ブーリアン:真偽値)のため、値は「0」か「1」を指定すればよい。

「exec_match_style」はパスの区切り文字がない場合に、実行可能ファイルと判断するかを指定する。「0」の場合はパスのみ、「1」はパスとCWD、「2」はこれらに加えてディレクトリ(フォルダー)も対象となる。「match_colour」は、マッチ色を指定する設定だが、特定色を指す数値ではなく「0」未満を指定した場合は初期設定色と対になる色が選択される。「prompt_colour」は、文字どおりプロンプトの色を指定する設定項目だが、「0」未満の場合は設定は無効だ。なお、配色を有効にするにはansiconの導入かConEmuを利用しなければならない。

そして最後の「terminate_autoanswer」は「バッチ ジョブを終了しますか (Y/N)?」とコマンドプロンプトが発するメッセージへの自動応答設定。「0」で無効、「1」でYes、「2」でNoとなる。これらを自身の好みに応じて「settings」に記述し、コマンドプロンプトを再起動、もしくは別途起動すればよい。

この他にもLuaスクリプトで使用できるオリジナルのAPI(Application Programming Interface:簡潔にプログラムを記述するためのインターフェース)を用意するなど、機能拡張性も高い。ファーストリリースから6番目にあたるバージョン0.3.1でも十分な機能を備えているのは高く評価されるべきだろう。

そもそもclinkはコマンドプロンプトをbash風に利用可能にしたプログラムであるため、使っているとつい「ls」や「vi」といったコマンドを実行してしまう。筆者はメイン環境にCygwinをインストールしているため、同パッケージのコマンドが実行されるが、普段からWindows OSとLinuxを行き来しているユーザーにとってコマンドプロンプトはあまりにも機能が乏しい。

しかし、数多くのWindows OS向け端末エミュレーターは、互換性の問題で使いにくい場面がある。その点clinkはコマンドプロンプトをベースに拡張を施すプログラムのため、互換性の問題は(少なくとも現時点では)皆無と述べても問題ではないだろう。もちろんclinkは発展途上にあり、bashの流儀をWindows OSに持ち込む以上は、他のアプリケーションと同じようにWindows OSの流儀に沿った設定ダイアログなどを用意しても面白い。

いずれにせよclinkは、Windows OS上で特定の端末エミュレーターを試しているユーザーには一つの選択肢なり得るはずだ。コマンドライン上の操作が多いユーザーは一度試して欲しい。

阿久津良和(Cactus