ぼくのかんがえたさいきょうのWindowsTerminalかんきょう[PR]

※この記事は、技術系同人サークルふぃーるどのーつとのタイアップ記事です。

特にWeb系の開発環境ではmacOS前提の記事が多いですが、至高のデスクトップ環境といったらWindowsなのです。

この記事では、Windowsでまともなターミナル環境をもとめて試行錯誤した結果をまとめます。

ソフトウェアの選択

ConEmu

ターミナルはConEmu - Handy Windows Terminalを使います。デフォルトだと非Ascii文字(要するに日本語)の表示ピッチが悲しいことになるのでフォントはRicty Diminishedを入れます。

conemu.github.io

f:id:setoazusa:20170802200107p:plain

Clink

f:id:setoazusa:20170802194930p:plain WindowsでUN*Xライクなシェルを提供するのはいくつかありますがClinkがお手軽なのでインストールします。これでタブ補完、Bashライクなキーボードショートカット、インクリメンタルなヒストリー検索など一通りの機能はそろっています。

カスタマイズ

Git

コマンドラインからのGit操作はGit for Windowsを使います。C:\Program Files\Git\usr\bin以下にUNIX Toolsの移植版が配置されていますが、ここへのパスは、次項に示すとおりOSの環境変数Pathに直接設定するのではなく、ConEmuの起動スクリプト内で設定するようにします。

git-for-windows.github.io

タスク設定

ターミナルからのSSH接続については、Git for Windowsが提供するssh.exeを使用しますが、このファイルが存在するC:\Program Files\Git\usr\binにOSの環境変数でPathを通すと、このフォルダー内にあるbash.exeBash on Ubuntu on Windowsの起動ファイル名と衝突するという問題があります。

この問題を回避するため、OSの環境変数の設定でなくConEmuの起動スクリプト内で上記フォルダーへのパスを通すようにします。

ConEmuのインストールディレクトリ(64bit版のデフォルトだとC:\Program Files\ConEmu\ConEmu)からCmdInit.cmdGitShowBranch.cmdを任意のフォルダーにコピーします。その上で、CmdInit.cmdの呼び出しの先頭部分に環境変数Pathを設定する処理を入れます。好みのエディターにもここの部分でPathを通すといいでしょう。

筆者の場合は、VirtualBoxとの併用をする理由上でDocker環境がDocker Machineなので、VM上のDockerに接続するための環境変数の設定もここで行っています。

@rem !!! Do not change this file in-place, change its copy instead !!!
@rem !!!  Otherwise you will lose your settings after next update  !!!

@echo off

@FOR /f "tokens=*" %%i IN ('docker-machine.exe env') DO @%%i

set PATH=C:\Program Files\Git\usr\bin;%PATH%

rem Simple "ver" prints empty line before Windows version
rem Use this construction to print just a version info
cmd /d /c ver | "%windir%\system32\find.exe" "Windows"

Win+Alt+Tを押してタスク設定を呼び出します。「+」を押して新規のタスク設定を呼び出し、CmdInit.cmdの呼び出し処理をCommandsの欄に記述します。自分はGitのブランチ表示のために/gitオプションと、新しいタブを開いた際にカレントディレクトリーを引き継ぐために-new_console:d:%CD%オプションを付与しています。指定できるパラメーターについてはドキュメントConEmu | ConEmu.exe Command Line Switchesを参照してください。

f:id:setoazusa:20170802194930p:plain

「Default Task for new console」と「Default Shell」にチェックを入れて、任意のキーボードショートカットを設定します。一個上のメニュー階層に移り、「Specified named task」の欄に先ほど作成したタスク設定を選択して設定を保存します。

f:id:setoazusa:20170802194923p:plain

Bash on Ubuntu on Windows

再びC:\Program Files\ConEmu\ConEmuからデフォルトのCmdInit.cmdを別名でコピーします。呼び出しシーケンスの最終行set ConEmuPrompt3=$E[m$S$E]9;12$E\の後に、bashへの呼び出し処理を記述し、作成したバッチファイルを呼び出すタスク設定を作成します。

f:id:setoazusa:20170802195201p:plain

このタスクを起動すると、Bash on Ubuntu on Windowsを起動したターミナルが立ち上がります。

f:id:setoazusa:20170802195348p:plain

タブ分割

「Create new console」のダイアログで「New Console split」の部分を選択するとタブ分割が出来ます。

f:id:setoazusa:20170802195609p:plain

キーボードショートカットから開くときにタブを分割したい場合は、ここまでで作ったタスク設定を複製し、Commandsの欄に-cur_console:s50Vオプションを付与した上で別のキーボードショートカットを設定すると、キーボードショートカットからタブを分割して開くことができます。

f:id:setoazusa:20170802195812p:plain

画面イメージ

上記設定を反映したTerminal画面が次の通りとなります。上半分がWindowsのプロンプト、下半分がBash on Ubuntu on Windowsのプロンプトです。Gitレポジトリー内にいる場合は、Gitのブランチ名が表示されます。

f:id:setoazusa:20170802193609p:plain

いい感じでしょ?

宣伝

8月11日(金)~13日(日)まで開催されるコミックマーケット92にサークル「ふぃーるどのーつ」で出展します。

  • 日時:8月11日(金・祝)
  • スペース: 「東地区(東7ホール) "そ" 39b」

叶姉妹と同じフロアらしいです。

「TDDの発展史とその理論的背景」についてまとめた「すいーとみゅーじっく vol.3」と技術書典2で頒布した「すいーとみゅーじっく vol.1」を頒布します。booth で予約販売も承っています。

気軽にお越しくださいと言いづらいのですがw、暑さ対策の準備の上東京ビッグサイトまでお越しください!