※この記事は、技術系同人サークルふぃーるどのーつとのタイアップ記事です。
特にWeb系の開発環境ではmacOS前提の記事が多いですが、至高のデスクトップ環境といったらWindowsなのです。
この記事では、Windowsでまともなターミナル環境をもとめて試行錯誤した結果をまとめます。
ソフトウェアの選択
ConEmu
ターミナルはConEmu - Handy Windows Terminalを使います。デフォルトだと非Ascii文字(要するに日本語)の表示ピッチが悲しいことになるのでフォントはRicty Diminishedを入れます。
Clink
WindowsでUN*Xライクなシェルを提供するのはいくつかありますがClinkがお手軽なのでインストールします。これでタブ補完、Bashライクなキーボードショートカット、インクリメンタルなヒストリー検索など一通りの機能はそろっています。
カスタマイズ
Git
コマンドラインからのGit操作はGit for Windowsを使います。C:\Program Files\Git\usr\bin
以下にUNIX Toolsの移植版が配置されていますが、ここへのパスは、次項に示すとおりOSの環境変数Pathに直接設定するのではなく、ConEmuの起動スクリプト内で設定するようにします。
タスク設定
ターミナルからのSSH接続については、Git for Windowsが提供するssh.exe
を使用しますが、このファイルが存在するC:\Program Files\Git\usr\bin
にOSの環境変数でPathを通すと、このフォルダー内にあるbash.exe
がBash on Ubuntu on Windowsの起動ファイル名と衝突するという問題があります。
この問題を回避するため、OSの環境変数の設定でなくConEmuの起動スクリプト内で上記フォルダーへのパスを通すようにします。
ConEmuのインストールディレクトリ(64bit版のデフォルトだとC:\Program Files\ConEmu\ConEmu
)からCmdInit.cmd
とGitShowBranch.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を参照してください。
「Default Task for new console」と「Default Shell」にチェックを入れて、任意のキーボードショートカットを設定します。一個上のメニュー階層に移り、「Specified named task」の欄に先ほど作成したタスク設定を選択して設定を保存します。
Bash on Ubuntu on Windows
再びC:\Program Files\ConEmu\ConEmu
からデフォルトのCmdInit.cmd
を別名でコピーします。呼び出しシーケンスの最終行set ConEmuPrompt3=$E[m$S$E]9;12$E\
の後に、bash
への呼び出し処理を記述し、作成したバッチファイルを呼び出すタスク設定を作成します。
このタスクを起動すると、Bash on Ubuntu on Windowsを起動したターミナルが立ち上がります。
タブ分割
「Create new console」のダイアログで「New Console split」の部分を選択するとタブ分割が出来ます。
キーボードショートカットから開くときにタブを分割したい場合は、ここまでで作ったタスク設定を複製し、Commands
の欄に-cur_console:s50V
オプションを付与した上で別のキーボードショートカットを設定すると、キーボードショートカットからタブを分割して開くことができます。
画面イメージ
上記設定を反映したTerminal画面が次の通りとなります。上半分がWindowsのプロンプト、下半分がBash on Ubuntu on Windowsのプロンプトです。Gitレポジトリー内にいる場合は、Gitのブランチ名が表示されます。
いい感じでしょ?
宣伝
8月11日(金)~13日(日)まで開催されるコミックマーケット92にサークル「ふぃーるどのーつ」で出展します。
- 日時:8月11日(金・祝)
- スペース: 「東地区(東7ホール) "そ" 39b」
叶姉妹と同じフロアらしいです。
「TDDの発展史とその理論的背景」についてまとめた「すいーとみゅーじっく vol.3」と技術書典2で頒布した「すいーとみゅーじっく vol.1」を頒布します。booth で予約販売も承っています。
気軽にお越しくださいと言いづらいのですがw、暑さ対策の準備の上東京ビッグサイトまでお越しください!