このページの本文へ

前へ 1 2 次へ

Windows Info 第207回

かなり使いやすくなりそうな新コンソール「Windows Terminal」がv0.8に

2020年01月19日 10時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

キーバインド記述の強化

 ペインは、v0.7で導入されたが、新たに作られたペインでは必ずデフォルトプロファイルのプログラムが起動していた。この部分は、キーバインドにプロファイルを記述できるようになり、一応実用的な機能になった。ただし、最終仕様に関しては、議論がgithubで続いており、親ペインと同じプロファイルを使う指定やプロファイルを選択するダイアログボックスを使う方法などが検討されている。ペインに関しては、開発途上ということで評価は避けたい。

 キーバインド記述の変更により、キーが実行する機能で、プロファイル指定、起動ディレクトリ、実行プログラム、タブタイトルなどが指定できるようになった。なお、プロファイル指定は必須ではないが、指定しないとタブを最初に起動した親ペインのプロファイル設定が引き継がれる。起動されるプログラムは、キーバインド内で指定できるため、プロファイルは、単なる色や挙動の指定に使うこともできる。また、v0.7までは、1つのキーボードショートカットに対して、ペインの縦分割、横分割のどちらかしか指定できなかったが、v0.7は、「自動分割」が指定でき、縦横のうち、長いほうを2つのペインに分割することができるようになった。

 これにより、新規タブ、ペインの縦横分割で何を起動するのかを指定することが可能になった。ただし、キー割り当てと起動されるプロファイル、プログラムの関係は常に一定であるため、指定できるのは、「新規ペインでCMD.EXEを実行するキー」であり、「新規ペインでUbuntu」を実行するキーは別に指定する必要がある。

 具体的にキー割り当てを行ってみたのが、以下のリストである。この例では、自動分割、縦分割、横分割で、CMD.EXEを起動するキー3つを定義した。それぞれ「Alt+Shift+H(水平分割)」、「Alt+Shift+V(垂直分割)」、「Alt+Shift+C(自動分割)」である。また、WSL2のUbuntuを指定するペインの自動分割としてAlt+Shift+Uを定義した。

"keybindings": [
  {"keys": [ "alt+shift+h" ],
    "command": { "action": "splitPane","split": "horizontal",
    "profile": "cmd",
    "startingDirectory": "c:\\temp",
    "commandline": "cmd.exe",
    "tabTitle": "CMD-H" }},
  {"keys": [ "alt+shift+v" ],
    "command": { "action": "splitPane", "split": "vertical",
    "index": 1,
    "startingDirectory": "c:\\temp",
    "commandline": "cmd.exe",
    "tabTitle": "CMD-V"}},
  {"keys": [ "alt+shift+c" ],
    "command": { "action": "splitPane","split": "auto",
    "profile": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
    "startingDirectory": "c:\\temp",
    "commandline": "cmd.exe",
    "tabTitle": "CMD-auto" }},
  {"keys": [ "alt+shift+u" ],
    "command": { "action": "splitPane","split": "auto",
     "profile": "Ubuntu-18.04",
     "tabTitle": "Ubuntu18.04-Auto" }}
]

 このリストのように、プロファイルは、名前、インデックス番号、GUIDのどれでも指定ができる。注意するのは、インデックス番号はゼロから始まるため、最初のエントリーがゼロとなり、プロファイルを変更すると、インデックス番号が変わる可能性がある点だ。簡易的には、プロファイルの名前(nameプロパティ)を使うのがいいだろう。

 分割方法に「auto」を使うと1つのキーでペインの分割ができるので便利だ。Windows Terminalの初期ウィンドウサイズ(initalCols、InitialRows)にも依存するが、最初に横長でウィンドウを開くと、autoによるペイン分割は縦分割になる。2回目のペイン分割は、上下になる。3回目以降は、アクティブペインの状態で縦横分割が変わる。自由に縦横分割するのも悪くはないのだが、それぞれキーを覚えるのはちょっと億劫だ。自動分割を使えば、プロファイルごとに1つのキーを覚えれば済み、割り当てにシェル環境を表す文字、たとえば、CMD.EXEなら“C”とか、Ubuntuなら“U”を割り当てれば、比較的簡単に覚えることができる。

 こういう話を聞くと、キー割り当てをカスタマイズしたくなるだろうということで、以下の表にキー割り当てを示した。割り当てを重複させないようにキー順でソートしてある。ペイン関連は、デフォルトではAlt+Shiftを使っているので、同じキーの組み合わせとアルファベットを使えば覚えやすい。

プロファイルで共通設定が可能に

 v0.7までのプロファイル記述方法では、プロファイルの設定値は、defaults.jsonの"profile":指定とprofiles.jsonの"profile":指定で決まっていた。しかし、v0.8からは、

defaults.jsonの"profile":指定
profiles.jsonの"profile":共通設定
profiles.jsonの"profile":個別設定

と3段階の設定が可能になった。

 たとえば、どのプロファイルでも同じフォントを使いたいという場合、v0.7では個々のプロファイルで指定する必要があった。というのは、default.jsonはWindows Terminal内で固定しており、書き換えることができなかったからだ。

 しかし、v0.8からは、"profiles"プロパティを以下のリストのように記述でき、各プロファイルに共通の設定をdefaultsプロパティでできる。

"profiles": {
 "defaults": {
  "selectionBackground": "#FF7f7f",
  "experimental.retroTerminalEffect": false,
  "startingDirectory": "c:\\",
  "fontFace": "Cascadia Code"
  },
 "list": [
  {
   // Make changes here to the powershell.exe profile
   "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
   "name": "Windows PowerShell",
   "commandline": "powershell.exe",
   "hidden": false
   },
  {
   // Make changes here to the cmd.exe profile
   "guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
   "name": "cmd",
   "commandline": "cmd.exe",
   "colorScheme": "Green",
   "selectionBackground": "#004f00",
   "experimental.retroTerminalEffect": false,
   "hidden": false
   },
  {
   "guid": "{c6eaf9f4-32a7-5fdc-b5cf-066e8a4b1e40}",
   "hidden": false,
   "name": "Ubuntu-18.04",
   "startingDirectory": "~",
   "source": "Windows.Terminal.Wsl"
  }
 ]
},

 たとえば、フォントやサイズをデフォルト値と異なる同一の設定にしておいて、色やカラースキーマ、背景などは個別に設定するようにできる。また、共通設定で設定した項目でも、個別設定で上書きできるため、特定のプロファイルだけは違う設定とすることも可能だ。

 少なくとも、プロファイルすべてで、全部指定するよりは記述量が少なくてすむ。前述のレトロターミナル・エフェクツ(experimental.retroTerminalEffect)も共通設定に入れて置いて、全てのプロファイルに対して有効にして、特定のプロファイルでのみオフにするといった設定が可能だ。

 Windows Terminalは、2019年内に春に登場する最終版の仕様を確定させる予定だったが、2019年12月版の機能として予定されていた機能のいくつかはv0.8でも未搭載のままだ。大まかな仕様は固まっているが、最終仕様が決定するのは次のバージョンになりそうな感じだ。プレビューをずっと見てきた感じ、従来の標準コンソールであるconhost.exeと比べてかなり使いやすくなりそうだ。

 しかし、従来のconhost.exeには、Windows NTの頃からの長い歴史があり細かい部分まで修正が行き届いている、俗に言う「枯れた」プログラムである。Windows Terminalは、まだ、そこまでいっておらず、たとえば、タブ区切りの長い文字列を表示させたときに折り返し位置などで区切り位置がかなり手前でされてしまうことがあるなど、conhost.exeとの違いが出ることがあり、「枯れる」までにはまだ時間はかかりそうだ。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン