secretbase.log

.NET/C#/Pythonなど

TortoiseHg のワークベンチから快適なターミナルを起動する(Windows)

Mercurial Advent Calendar 2013 2日目は、TortoiseHgのワークベンチから好きなターミナルの起動をできるようにしてみたいと思います。

f:id:cointoss1973:20131202181813p:plain

Windows上でコマンド入力するterminalはいくつか選択肢があります。
基本は OS標準添付の cmd(コマンドプロンプト)であるがこれはとても使いづらいですね。
特に UNIX (Linux) 上のターミナルの開発経験が長い人はこれを痛感していることでしょう。

はじめに

今年はあまりTortoiseHgを触る機会が少なかった気がします。たまにバージョンアップするワークベンチから起動する端末のconsole2が起動しなくなりました(どうやら端末の設定の方法が変わったようです)。しかたなくcmdを使っていましたが、やはり不便なのでconsole2を起動する方法を調べました。

環境

  • Windows 7 Professinal 64-bit
  • console2 2.00b148
  • TortoiseHg 2.10
  • msysgit 1.7.9

TortoiseHg からターミナルを起動する

今年リリースされたどこかのバージョンからTortoiseHgのターミナルの設定の仕様が変わっていました。
デフォルトの状態では、インストールしている状態に応じて、設定可能なターミナルが選択するUIに変わっていました。
(従来はGUI上で設定を直接行っていた)

f:id:cointoss1973:20131202182323p:plain

私は、console2を愛用しているのでこれを使おうと思いますが、この一覧にはありません。
マニュアルをざっとみましたが、設定の方法がみつからない。
ソースコードrc および ソースコードあたりを見てみると、どうやら、 hgrc 内の [terminal-tools] セクションにて設定することができるようです。

console2 とは

私は、console2 + msysgit (1.7.9 UTF-8対応する前の最終版)を使用しています。console2 単体でcmdの置き換えができるだが、シェルとして自由に好きなシェルを登録したタブ切り替えで使用することができる。例えば、MSYS, msysgit, PowerShell, Visual Studio 2012 console など目的に応じてシェルを起動できるので気に入っています。
console2のIME入力対応パッチも出ているため、下記手順で導入でいます。

64-bit OS を使っているので、 x64 にしてみました*1

hgrc (mercurial.ini) (ターミナルを追加する)

terminal-tools のセクションに追加することで、プルダウンメニューから選択することができるようになります。
ここでは、あらかじめ 32-bit用と 64-bit 用を追加しておきます。

[tortoisehg]
shell = console2-x64

[terminal-tools]
# console2
console2.priority = -6
console2.executable-win = c:\console2\Console.exe
# console2 x64
console2-x64.priority = -7
console2-x64.executable-win = c:\console2-x64\Console.exe

f:id:cointoss1973:20131202181437p:plain

日本語およびカラーの表示に対応する

関連する .bashrc と .hgrc (mercurial.ini) を示しておきます。
この設定で、msysgit上で日本語表示と cmd 上のカラー表示ができます。

.bashrc (関連部分を抜粋)

alias ls='ls --color=auto  --show-control-chars'
export LANG=ja_JP.UTF-8
export LESSCHARSET=utf-8

.hgrc (関連部分を抜粋)

[tortoisehg]
shell = console2-x64

[terminal-tools]
# console2
console2.priority = -6
console2.executable-win = c:\console2\Console.exe
# console2 x64
console2-x64.priority = -7
console2-x64.executable-win = c:\console2-x64\Console.exe

[extensions]
color=
graphlog=
pager=
win32mbcs=

[pager]
#pager = less -FRSX
pager = C:\msysgit\msysgit\bin\less.exe -f -FRSX
#attend = annotate, diff, cat, help, glog, log, status
attend = annotate, diff, cat, help, glog, log, status

[color]
#mode = auto
mode = ansi

pager の指定を 絶対パスを使うことで cmd 上でも動作するようにしています。*2
color の mode は ansi を指定します。
cmd 上では、 set LESSCHARSET=utf-8 してから実行しています(環境変数に設定すると良いかも)

下記のような感じになります。左はmsysgitで、右はcmdです。
f:id:cointoss1973:20131202181536p:plain

明日は、@ianMLewis さんです。では、はりきってどうぞ!

入門TortoiseHg + Mercurial

入門TortoiseHg + Mercurial

*1:いままでは 32-bit 版をなんとなく使っていました

*2:昔は tpager extension を使う必要がありましたが、いまは 同梱の pager extension + color extension の組み合わせでカラー表示できます。