読者です 読者をやめる 読者になる 読者になる

C++と色々

主にC++やプログラムに関する記事を投稿します。

Windowsで多少マシなターミナル環境

雑記

Windowsでcmdよりは多少マシなターミナル環境を整えました。今使ってるPCが壊れた時にそれを復元できるように自分向けに構築手順をまとめます。

注意 レジストリを操作します。ここに書かれたレジストリの操作を真似した結果あなたのPCがおかしくなっても責任を負いかねます。レジストリ必ず自己責任でいじって下さい

自分が求めたターミナルの要件

  • マウス操作で、コピー&ペーストできること
  • 好きなフォントを設定できること(英語と日本語それぞれ=>文字化けもしたくない)
  • 半透明にできること
  • Linuxコマンドが使えること(ls, scp, sshなどなど)
  • Git bashのようにエクスプローラー上で現在いるディレクトリをカレントディレクトリとして右クリックから起動できること

落ち着いた環境

  • minttyというターミナルクライアント上でGit bashを動作させる
  • 右クリック操作はレジストリをいじる必要があった
  • ググったら等幅メイリオというのがあり、それとConsolasをフォントリンクすることでいい感じにターミナル上で日本語が表示される

手順

  • MinGWをインストールする

msysは入れてもれなくてもどちらでもよい

  • Git for Windowsをインストールする

  • MinGWGUIパッケージマネージャーか、mingw-getコマンドどちらでもよいのでminttyをインストールする

  • GitのインストールディレクトリにあるbinディレクトリをPathに追加する。

デフォルトのインストールパスだとC:\Program Files (x86)\Git\binになる

  • minttyGit bashディレクトリのbinにコピーする

  • Git bash.vbsを真似してGit mintty.vbsというスクリプトを書く。

Git bash.vbsと同じディレクトリに置く。管理者権限が必要

Set fso = CreateObject("Scripting.FileSystemObject")
Set shell = CreateObject("WScript.Shell")

Const TemporaryFolder = 2
linkfile = fso.BuildPath(fso.GetSpecialFolder(TemporaryFolder), "Git Mintty.lnk")
gitdir = fso.GetParentFolderName(WScript.ScriptFullName)

' Dynamically create a shortcut with the current directory as the working directory.
Set link = shell.CreateShortcut(linkfile)
link.TargetPath = fso.BuildPath(gitdir, "bin\mintty.exe")
link.Arguments = "/bin/sh --login -i"
link.IconLocation = fso.BuildPath(gitdir, "etc\git.ico")
If WScript.Arguments.Length > 0 Then link.WorkingDirectory = WScript.Arguments(0)
link.Save

Set app = CreateObject("Shell.Application")
app.ShellExecute linkfile

こんな感じ。

  • regeditを開いてHKEY_CLASSES_ROOT\directory\background\shellを開く。

ここにgit_shellも置いてある。

  • shellを右クリックして新規>キーとし、ここではGit Minttyというキーを作成。

  • Git Minttyの下にcommandというキー作成

  • commandの値を修正します。"C:\WINDOWS\SysWOW64\wscript" "C:\Program Files (x86)\Git\Git Mintty.vbs" "%v"にしてください。

(規定)とかかれた場所を右クリックで集成できます。

  • %USERPROFILE%ディレクトリあたりで、右クリックでカレントディレクトリでGit Minttyが起動できるようになってるか確認。

  • もっと最初に行ってもよいけど、Minttyの設定

ホームディレクトリに.minttyrcを作成、

BoldAsFont=no
BackgroundColour=20,20,20
Transparency=medium
Font=Consolas
FontHeight=12
Locale=ja_JP
Charset=UTF-8
ClipShortcuts=no
SwitchShortcuts=no
RightClickAction=paste
ClicksTargetApp=no
Columns=80
Rows=24

とした。

ホームディレクトリはHOME環境変数で設定する。

.profileを作成、

alias ls='ls --color=auto --show-control-chars -F'

とした。

.inputrc作成

set meta-flag on
set input-meta on
set output-meta on
set convert-meta off
set kanji-code utf-8

とした。

このあたりで、lsした際に、日本語ファイルが文字化けせずに表示されていること、標準入力で日本語が打てることを確認する。

直接リンクすると404等になってしまうらしい。

  • 自分のOSにあったフォントデータをインストールするが、Windows 8.1の場合は meiryoKe_gen_6.20rev1.zipをインストール

  • 解凍したらREADME.html通りに作業を行う。説明割愛

  • regeditを起動し、Consolasとフォントリンクを行う

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLinkを開き、複数行文字列値を新規作成、名前Consolas、値meiryoKe_620r1.ttc,MeiryoKe_Gothicと設定。フォント名のバージョンはOSにより異なるので注意

  • PCを再起動してターミナルの日本語フォントが等幅メイリオになっていることを確認する。

f:id:nekko1119:20150630012521p:plain

こんな感じのターミナルが作れました! 欠点としてはたまにこのターミナル上から起動したプログラムがCtrl-C等をしてもゾンビプロセスで生き残ることと、Git bashに含まれていたvi/vimなどが動かないところです。力尽きて解決していません。