普段はLinuxを使っていますが、仕事でWindowsを使う機会が増えています。
今回はWindowsのターミナルとしてバランス感のあるgit bashを格好良く使うため色々頑張ってみました。

Table of Contents

2018/12/01: Cmderを使ってオシャレなcmd.exeライフを送る記事を追加しました

git bashとは

Windows用のGitをインストールすると漏れなくついてくるbashのようなものです。
仮想的にLinuxの上でbashを動かしているわけではなく、Windows用に用意されたbashコマンド相応のexeファイルを使っています。

git bashを選んだ理由は詳しく延べませんが、大きな理由だけ挙げると以下3点になります。

  • 基本的なbashコマンドが一通り使える
  • WindowsのexeファイルをCLIから実行できる
  • Vimが使える

デフォルトのgit bash

起動するとこんな感じです。

ブランチ名を表示してくれたりはしますがテンションが下がる画面ですよね..。

これを改造していきます。

ターミナルの設定を変更

フォント

フォントはSource Code Pro for Powerlineがオススメです。
文字の形がカッコよく、記号も使えるフォントです。

インストールしていない場合は上記からotfファイルをインストールしましょう。
通常版とBold版をインストールしておいてください.

後はターミナルのOptionからText -> FontSource Code Pro for Powerlineを設定します。
個人的には太字のサイズ12がオススメです。

テーマ

デフォルトのテーマが格好良くないので、Optionからテーマを変更します。

  • Look -> Themerosipovに変更
    • 他テーマでも良いが文字が見にくい色になることが無かったため採用
  • Terminal -> Typexterm-256colorに変更
    • VimでテーマMonokaiを使った時に格好良くなるため

ターミナルを再起動する

少しは格好良くなりました。

プロンプトの設定を変更する

更にfishなどで使われているPowerlineのようなプロンプトにしてしまいます。
git bashはPythonのInterfaceに難があるため、purelineを使うことにしました。

試してみましたが、Gitコマンドの反応が遅かったため少し改変したリポジトリを自分で作成してみました。

ほとんどがpurelineのコードそのままなので、Documentationなどは作成していません。
インストール方法だけ自分が使用している設定とあわせて記載しています。

READMEにある通り.bashrcに以下を記載します。

source /c/Users/syoum/git/pureline/pureline /c/Users/syoum/git/pureline/.pureline.conf

そして再起動すると… ようやくテンションが上がってきましたね!

.bashrc

そのままでは使えないよく使うコマンドを.bashrcに定義しています。

alias acmd='powershell -command "Start-Process -Verb runas cmd"'

function to_win_path() {
  path=${*}
  echo "$(readlink -f ${path} | sed -e 's@/@\\@g' -e 's@\\c\\@c:\\@g' | tr '\n' ' ')"
}

function tree() {
  dst="$(to_win_path ${1:-$(pwd)})"
  cmd //c "chcp 437 & tree ${dst}" //a //f
}

function te() {
  dst="$(to_win_path ${1:-$(pwd)})"
  /c/tablacus/TE64 ${dst}
}

acmd

管理者権限でコマンドプロンプトを立ち上げるエイリアスです。
powershell経由で実行しています。

tree

git bashにはtreeコマンドが同梱されていないためコマンドプロンプトのtreeを呼び出します。
パスをWindowsが判別できる絶対パスに変換する必要があるためto_win_pathを通しています。

現状では複数引数には対応していません。

te

Tablacus Explorerを立ち上げます。
引数で指定したディレクトリを開きますが、指定なしの場合はカレントディレクトリを開きます。

現状では複数引数には対応していません。

Vim

画面が点滅するのを制御する

Beep音が出るタイミングで画面が点滅してしまうのを防ぐため.vimrcに以下を追加します。

set noerrorbells visualbell t_vb=
if has('autocmd')
  autocmd GUIEnter * set visualbell t_vb=
endif

deinのインストール

git bashでも問題なく動作しました。
ただし、Pythonのインタフェースは使えませんでした。

$ curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh
$ sh ./installer.sh ~/.cache/dein
  1. ./installer.shで表示されたテンプレを.vimrcの先頭に貼る
  2. vimを起動して:call dein#install()

環境整備した状態だとLinuxのVimと区別がつきませんね。

総括

git bashを格好良く使う方法を紹介しました。
Windowsでターミナルをいじらなければならなくて辛い方は是非試してみて下さい。